From 3ec9eddd5b8def15d09bf65a92f5016424bd5673 Mon Sep 17 00:00:00 2001 From: "Chendi.Xue" Date: Tue, 10 Oct 2023 10:20:23 -0500 Subject: [PATCH 01/47] fix import error by moving resumable pipeline to function (#376) Signed-off-by: Xue, Chendi --- RecDP/pyrecdp/primitives/llmutils/filter.py | 4 +++- RecDP/pyrecdp/primitives/llmutils/profanity_filter.py | 2 +- RecDP/pyrecdp/primitives/llmutils/text_fixer.py | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/RecDP/pyrecdp/primitives/llmutils/filter.py b/RecDP/pyrecdp/primitives/llmutils/filter.py index be2e10873..5e89a4ddf 100644 --- a/RecDP/pyrecdp/primitives/llmutils/filter.py +++ b/RecDP/pyrecdp/primitives/llmutils/filter.py @@ -1,6 +1,5 @@ import argparse -from pyrecdp.LLM import ResumableTextPipeline from pyrecdp.core.utils import Timer from pyrecdp.primitives.operations import JsonlReader, ParquetReader, PerfileParquetWriter @@ -14,6 +13,7 @@ def filter_by_blocklist_spark(spark_df): def filter_by_blocklist(data_dir, data_file_type, out_dir): from pyrecdp.primitives.operations import URLFilter + from pyrecdp.LLM import ResumableTextPipeline if data_file_type == 'jsonl': reader = JsonlReader(data_dir) @@ -41,6 +41,7 @@ def filter_by_bad_words_spark(spark_df, language="en"): def filter_by_bad_words(data_dir, data_file_type, out_dir, language="en"): from pyrecdp.primitives.operations import BadwordsFilter + from pyrecdp.LLM import ResumableTextPipeline if data_file_type == 'jsonl': reader = JsonlReader(data_dir) @@ -68,6 +69,7 @@ def filter_by_length_spark(spark_df, minimum_length=100, maximum_length=-1): def filter_by_length(data_dir, data_file_type, out_dir, minimum_length=100, maximum_length=-1): from pyrecdp.primitives.operations import LengthFilter + from pyrecdp.LLM import ResumableTextPipeline if data_file_type == 'jsonl': reader = JsonlReader(data_dir) diff --git a/RecDP/pyrecdp/primitives/llmutils/profanity_filter.py b/RecDP/pyrecdp/primitives/llmutils/profanity_filter.py index f670fe6aa..bb4de85b7 100644 --- a/RecDP/pyrecdp/primitives/llmutils/profanity_filter.py +++ b/RecDP/pyrecdp/primitives/llmutils/profanity_filter.py @@ -1,6 +1,5 @@ import argparse -from pyrecdp.LLM import ResumableTextPipeline from pyrecdp.core.utils import Timer from pyrecdp.primitives.operations import JsonlReader, ParquetReader, PerfileParquetWriter @@ -14,6 +13,7 @@ def profanity_filter_spark(spark_df): def profanity_filter(data_dir, data_file_type, out_dir): from pyrecdp.primitives.operations import ProfanityFilter + from pyrecdp.LLM import ResumableTextPipeline if data_file_type == 'jsonl': reader = JsonlReader(data_dir) diff --git a/RecDP/pyrecdp/primitives/llmutils/text_fixer.py b/RecDP/pyrecdp/primitives/llmutils/text_fixer.py index e3c531f1d..c0c527ba1 100644 --- a/RecDP/pyrecdp/primitives/llmutils/text_fixer.py +++ b/RecDP/pyrecdp/primitives/llmutils/text_fixer.py @@ -1,6 +1,5 @@ import argparse -from pyrecdp.LLM import ResumableTextPipeline from pyrecdp.core.utils import Timer from pyrecdp.primitives.operations import JsonlReader, ParquetReader, PerfileParquetWriter from pyrecdp.primitives.operations import TextFix @@ -13,6 +12,7 @@ def text_fixer_spark(spark_df, text_type='html'): def text_fixer(data_dir, data_file_type, out_dir, text_type='html'): + from pyrecdp.LLM import ResumableTextPipeline if data_file_type == 'jsonl': reader = JsonlReader(data_dir) From 308fa7a723243f4b9895c642d2214bca20cb3a81 Mon Sep 17 00:00:00 2001 From: ChaoJun Zhang Date: Wed, 11 Oct 2023 00:38:27 +0800 Subject: [PATCH 02/47] [v1.2][ISSUE-306] PII Remove support remove entity types specified by the user. (#371) * pii remove operator support remove types * Update text_pii_remove.py by adding entity_types to settings --------- Co-authored-by: Chendi.Xue --- .../pii/detect/name_password_detection.py | 12 +- .../primitives/llmutils/pii/detect/utils.py | 13 ++ .../primitives/llmutils/pii/pii_detection.py | 21 ++- .../pyrecdp/primitives/llmutils/pii_remove.py | 9 +- .../primitives/operations/text_pii_remove.py | 61 +++++--- RecDP/tests/test_llmutils.py | 133 ++++++++++-------- 6 files changed, 161 insertions(+), 88 deletions(-) create mode 100644 RecDP/pyrecdp/primitives/llmutils/pii/detect/utils.py diff --git a/RecDP/pyrecdp/primitives/llmutils/pii/detect/name_password_detection.py b/RecDP/pyrecdp/primitives/llmutils/pii/detect/name_password_detection.py index 2ac25cdeb..18904a995 100644 --- a/RecDP/pyrecdp/primitives/llmutils/pii/detect/name_password_detection.py +++ b/RecDP/pyrecdp/primitives/llmutils/pii/detect/name_password_detection.py @@ -1,21 +1,25 @@ from transformers import Pipeline +from .utils import PIIEntityType -def detect_name_password(content: str, pipeline: Pipeline): +def detect_name_password(content: str, pipeline: Pipeline, entity_types=None): """Detects name and password in a string using bigcode/starpii model Args: - pipe: a transformer model + entity_types: detection types + pipeline: a transformer model content (str): A string containing the text to be analyzed. - sentences ([str]): A string array Returns: A list of dicts containing the tag type, the matched string, and the start and end indices of the match. """ + if entity_types is None: + entity_types = [PIIEntityType.NAME, PIIEntityType.PASSWORD] matches = [] try: for entity in pipeline(content): entity_group = entity["entity_group"] - if "NAME" == entity_group or "PASSWORD" == entity_group: + if ("NAME" == entity_group and PIIEntityType.NAME in entity_types) or \ + ("PASSWORD" == entity_group and PIIEntityType.PASSWORD in entity_types): matches.append( { "tag": entity_group, diff --git a/RecDP/pyrecdp/primitives/llmutils/pii/detect/utils.py b/RecDP/pyrecdp/primitives/llmutils/pii/detect/utils.py new file mode 100644 index 000000000..55a618c26 --- /dev/null +++ b/RecDP/pyrecdp/primitives/llmutils/pii/detect/utils.py @@ -0,0 +1,13 @@ +from enum import Enum, auto + + +class PIIEntityType(Enum): + IP_ADDRESS = auto() + NAME = auto() + EMAIL = auto() + PHONE_NUMBER = auto() + PASSWORD = auto() + + @classmethod + def all(cls): + return [member for name, member in PIIEntityType.__members__.items()] diff --git a/RecDP/pyrecdp/primitives/llmutils/pii/pii_detection.py b/RecDP/pyrecdp/primitives/llmutils/pii/pii_detection.py index 1a8d325dc..797e225c4 100644 --- a/RecDP/pyrecdp/primitives/llmutils/pii/pii_detection.py +++ b/RecDP/pyrecdp/primitives/llmutils/pii/pii_detection.py @@ -2,18 +2,29 @@ from .detect.emails_detection import detect_email from .detect.phones_detection import detect_phones from .detect.name_password_detection import detect_name_password +from .detect.utils import PIIEntityType from transformers import Pipeline +from typing import List -def scan_pii_text(text:str, pipeline: Pipeline): + +def scan_pii_text(text: str, pipeline: Pipeline, entity_types: List[PIIEntityType] = None): result = [] # use a regex to detect ip addresses - result = result + detect_ip(text) + + if entity_types is None: + entity_types = PIIEntityType.all() + + if PIIEntityType.IP_ADDRESS in entity_types: + result = result + detect_ip(text) # use a regex to detect emails - result = result + detect_email(text) + if PIIEntityType.EMAIL in entity_types: + result = result + detect_email(text) # for phone number use phonenumbers tool - result = result + detect_phones(text) + if PIIEntityType.PHONE_NUMBER in entity_types: + result = result + detect_phones(text) # for phone number use phonenumbers tool - result = result + detect_name_password(text, pipeline) + if PIIEntityType.NAME in entity_types or PIIEntityType.PASSWORD in entity_types: + result = result + detect_name_password(text, pipeline, entity_types) return result diff --git a/RecDP/pyrecdp/primitives/llmutils/pii_remove.py b/RecDP/pyrecdp/primitives/llmutils/pii_remove.py index 168d1657e..c3c0250d1 100644 --- a/RecDP/pyrecdp/primitives/llmutils/pii_remove.py +++ b/RecDP/pyrecdp/primitives/llmutils/pii_remove.py @@ -2,11 +2,13 @@ import logging from pyspark.sql.dataframe import DataFrame -def pii_remove(dataset: DataFrame, model_root_path=None, text_column="text", new_text_column="text", show_secret_column=True, - secret_column="__SECRETS__"): + +def pii_remove(dataset: DataFrame, model_root_path=None, text_column="text", show_secret_column=True, inplace=True, + entity_types=None): from pyrecdp.primitives.operations import PIIRemoval spark_df = dataset - op = PIIRemoval(text_key=text_column, inplace=True, model_root_path=model_root_path, debug_mode=show_secret_column) + op = PIIRemoval(text_key=text_column, inplace=inplace, model_root_path=model_root_path, + debug_mode=show_secret_column, entity_types=entity_types) ret = op.process_spark(spark_df.sparkSession, spark_df) return ret @@ -73,6 +75,7 @@ def getArgs(): # add an option of evaluating the pipeline on the PII benchmark we built return parser.parse_args() + if __name__ == "__main__": logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) diff --git a/RecDP/pyrecdp/primitives/operations/text_pii_remove.py b/RecDP/pyrecdp/primitives/operations/text_pii_remove.py index 83929cefc..b8c235001 100644 --- a/RecDP/pyrecdp/primitives/operations/text_pii_remove.py +++ b/RecDP/pyrecdp/primitives/operations/text_pii_remove.py @@ -2,24 +2,39 @@ from ray.data import Dataset from pyspark.sql import DataFrame import os -from transformers import pipeline +from typing import List from pyrecdp.primitives.llmutils.pii.pii_detection import scan_pii_text from pyrecdp.primitives.llmutils.pii.pii_redaction import redact_pii_text, random_replacements +from pyrecdp.primitives.llmutils.pii.detect.utils import PIIEntityType -def prepare_func_pii_removal(model_root_path = "", debug_mode = True): - replacements = random_replacements() + +def prepare_pipeline(model_root_path=None, entity_types: List[PIIEntityType] = None): _model_key = "bigcode/starpii" model_key = _model_key if model_root_path is None else os.path.join(model_root_path, _model_key) - pipeline_inst = pipeline(model = model_key, task='token-classification', grouped_entities=True) + if entity_types is None: + entity_types = PIIEntityType.all() + + is_name_password_detect = PIIEntityType.NAME in entity_types or PIIEntityType.PASSWORD in entity_types + + if is_name_password_detect: + from transformers import pipeline + return pipeline(model=model_key, task='token-classification', grouped_entities=True) + else: + return None + + +def prepare_func_pii_removal(model_root_path=None, debug_mode=True, entity_types: List[PIIEntityType] = None): + replacements = random_replacements() + pipeline_inst = prepare_pipeline(model_root_path, entity_types) def process_debug(sample): - secrets = scan_pii_text(sample, pipeline_inst) + secrets = scan_pii_text(sample, pipeline_inst, entity_types) text, is_modified = redact_pii_text(sample, secrets, replacements) return text, is_modified, str(secrets) - + def process(sample): - secrets = scan_pii_text(sample, pipeline_inst) + secrets = scan_pii_text(sample, pipeline_inst, entity_types) text, _ = redact_pii_text(sample, secrets, replacements) return text @@ -30,8 +45,10 @@ def process(sample): class PIIRemoval(BaseLLMOperation): - def __init__(self, text_key = 'text', inplace = True, model_root_path = "", debug_mode = False): - settings = {'text_key': text_key, 'inplace': inplace, 'model_root_path': model_root_path, 'debug_mode': debug_mode} + def __init__(self, text_key='text', inplace=True, model_root_path="", debug_mode=False, + entity_types: List[PIIEntityType] = None): + settings = {'text_key': text_key, 'inplace': inplace, 'model_root_path': model_root_path, + 'debug_mode': debug_mode, 'entity_types': entity_types} super().__init__(settings) self.text_key = text_key self.inplace = inplace @@ -40,22 +57,26 @@ def __init__(self, text_key = 'text', inplace = True, model_root_path = "", debu self.support_spark = True self.support_ray = True self.debug_mode = debug_mode - + self.entity_types = entity_types + def process_rayds(self, ds: Dataset) -> Dataset: if self.inplace: new_name = self.text_key else: new_name = 'pii_clean_text' if self.actual_func is None: - self.actual_func = prepare_func_pii_removal(self.model_root_path, debug_mode=self.debug_mode) + self.actual_func = prepare_func_pii_removal(self.model_root_path, debug_mode=self.debug_mode, + entity_types=self.entity_types) if self.debug_mode: def process_row(sample: dict, text_key, new_name, actual_func, *actual_func_args): - sample[new_name], sample['is_modified_by_pii'], sample['secrets'] = actual_func(sample[text_key], *actual_func_args) + sample[new_name], sample['is_modified_by_pii'], sample['secrets'] = actual_func(sample[text_key], + *actual_func_args) return sample + return ds.map(lambda x: process_row(x, self.text_key, new_name, self.actual_func)) else: return ds.map(lambda x: self.process_row(x, self.text_key, new_name, self.actual_func)) - + def process_spark(self, spark, spark_df: DataFrame) -> DataFrame: import pyspark.sql.functions as F from pyspark.sql import types as T @@ -63,7 +84,7 @@ def process_spark(self, spark, spark_df: DataFrame) -> DataFrame: new_name = self.text_key else: new_name = 'pii_clean_text' - + if self.debug_mode: schema = T.StructType([ T.StructField(new_name, T.StringType(), False), @@ -71,10 +92,14 @@ def process_spark(self, spark, spark_df: DataFrame) -> DataFrame: T.StructField('secrets', T.StringType(), False) ]) existing_cols = [col_name for col_name in spark_df.columns if col_name != new_name] - pii_remove_udf = F.udf(prepare_func_pii_removal(self.model_root_path, debug_mode=self.debug_mode), schema) - return spark_df.withColumn('pii_ret', pii_remove_udf(F.col(self.text_key))).select(*existing_cols, "pii_ret.*") + pii_remove_udf = F.udf(prepare_func_pii_removal(self.model_root_path, debug_mode=self.debug_mode, + entity_types=self.entity_types), schema) + return spark_df.withColumn('pii_ret', pii_remove_udf(F.col(self.text_key))).select(*existing_cols, + "pii_ret.*") else: - pii_remove_udf = F.udf(prepare_func_pii_removal(self.model_root_path, debug_mode=self.debug_mode)) + pii_remove_udf = F.udf(prepare_func_pii_removal(self.model_root_path, debug_mode=self.debug_mode, + entity_types=self.entity_types)) return spark_df.withColumn(new_name, pii_remove_udf(F.col(self.text_key))) -LLMOPERATORS.register(PIIRemoval) \ No newline at end of file + +LLMOPERATORS.register(PIIRemoval) diff --git a/RecDP/tests/test_llmutils.py b/RecDP/tests/test_llmutils.py index 874f74fe5..10e106224 100644 --- a/RecDP/tests/test_llmutils.py +++ b/RecDP/tests/test_llmutils.py @@ -16,29 +16,42 @@ cur_dir = str(Path(__file__).parent.resolve()) + class SparkContext: - def __init__(self, dataset_path = None): + def __init__(self, dataset_path=None): self.dataset_path = dataset_path self.rdp = SparkDataProcessor() - def __enter__(self): + def __enter__(self): self.spark = self.rdp.spark if self.dataset_path is not None: reader = JsonlReader(self.dataset_path) self.ds = reader.process_spark(self.spark) return self - + def __exit__(self, exc_type, exc_value, exc_traceback): pass - + def show(self, ds): pd = ds.toPandas() display(pd) - + + +def pii_remove_help(input_file: str, entity_types=None): + from pyrecdp.primitives.llmutils import pii_remove + from pyrecdp.core.cache_utils import RECDP_MODELS_CACHE + with SparkContext(input_file) as ctx: + spark_df = ctx.ds + model_root_path = os.path.join(RECDP_MODELS_CACHE, "huggingface") + output_dataset = pii_remove(dataset=spark_df, text_column="text", model_root_path=model_root_path, + show_secret_column=True, inplace=True, entity_types=entity_types) + ctx.show(output_dataset) + + class Test_LLMUtils(unittest.TestCase): def setUp(self): print(f"\n******\nTesting Method Name: {self._testMethodName}\n******") - + def test_quality_classifier(self): from pyrecdp.primitives.llmutils import quality_classifier file_path = os.path.join(cur_dir, "data/llm_data/arxiv_sample_100.jsonl") @@ -54,37 +67,51 @@ def test_quality_classifier_spark(self): spark_df = spark.read.json(data_file) quality_classifier_df = quality_classifier_spark(spark_df) quality_classifier_df.show() - + def test_diversity_analysis(self): from pyrecdp.primitives.llmutils import diversity data_dir = "tests/data/llm_data/" output_path = "tests/data/diversity_out" in_type = "jsonl" diversity(data_dir, in_type, output_path) - -# ***** This test is to provide an example for EasyData ***** # + + # ***** This test is to provide an example for EasyData ***** # def test_near_dedup_spark(self): - from pyrecdp.primitives.llmutils import near_dedup_spk + from pyrecdp.primitives.llmutils import near_dedup_spk with SparkContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: spark_df = ctx.ds ret_df = near_dedup_spk(spark_df) ctx.show(ret_df) - + def test_global_dedup_spark(self): - from pyrecdp.primitives.llmutils import global_dedup_spk + from pyrecdp.primitives.llmutils import global_dedup_spk with SparkContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: spark_df = ctx.ds ret_df = global_dedup_spk(spark_df) ctx.show(ret_df) - + def test_pii_remove_spark(self): - from pyrecdp.primitives.llmutils import pii_remove - from pyrecdp.core.cache_utils import RECDP_MODELS_CACHE - with SparkContext("tests/data/llm_data/tiny_c4_sample_for_pii.jsonl") as ctx: - spark_df = ctx.ds - model_root_path = os.path.join(RECDP_MODELS_CACHE, "huggingface") - output_dataset = pii_remove(dataset=spark_df,text_column="text", model_root_path=model_root_path, show_secret_column=True) - ctx.show(output_dataset) + pii_remove_help("tests/data/llm_data/tiny_c4_sample_for_pii.jsonl") + + def test_pii_remove_email_spark(self): + from pyrecdp.primitives.llmutils.pii.detect.utils import PIIEntityType + pii_remove_help("tests/data/llm_data/tiny_c4_sample_for_pii.jsonl", entity_types=[PIIEntityType.EMAIL]) + + def test_pii_remove_phone_spark(self): + from pyrecdp.primitives.llmutils.pii.detect.utils import PIIEntityType + pii_remove_help("tests/data/llm_data/tiny_c4_sample_for_pii.jsonl", entity_types=[PIIEntityType.PHONE_NUMBER]) + + def test_pii_remove_name_spark(self): + from pyrecdp.primitives.llmutils.pii.detect.utils import PIIEntityType + pii_remove_help("tests/data/llm_data/tiny_c4_sample_for_pii.jsonl", entity_types=[PIIEntityType.NAME]) + + def test_pii_remove_password_spark(self): + from pyrecdp.primitives.llmutils.pii.detect.utils import PIIEntityType + pii_remove_help("tests/data/llm_data/tiny_c4_sample_for_pii.jsonl", entity_types=[PIIEntityType.PASSWORD]) + + def test_pii_remove_ip_spark(self): + from pyrecdp.primitives.llmutils.pii.detect.utils import PIIEntityType + pii_remove_help("tests/data/llm_data/tiny_c4_sample_for_pii.jsonl", entity_types=[PIIEntityType.IP_ADDRESS]) def test_language_identify_spark(self): from pyrecdp.primitives.llmutils import language_identify_spark @@ -100,29 +127,30 @@ def test_sentence_split_spark(self): import pandas as pd with SparkContext() as ctx: samples = [( - 'Smithfield employs 3,700 people at its plant in Sioux Falls, ' - 'South Dakota. The plant slaughters 19,500 pigs a day — 5 ' - 'percent of U.S. pork.', - 'Smithfield employs 3,700 people at its plant in Sioux Falls, ' - 'South Dakota.\nThe plant slaughters 19,500 pigs a day — 5 ' - 'percent of U.S. pork.')] + 'Smithfield employs 3,700 people at its plant in Sioux Falls, ' + 'South Dakota. The plant slaughters 19,500 pigs a day — 5 ' + 'percent of U.S. pork.', + 'Smithfield employs 3,700 people at its plant in Sioux Falls, ' + 'South Dakota.\nThe plant slaughters 19,500 pigs a day — 5 ' + 'percent of U.S. pork.')] spark_df = ctx.spark.createDataFrame(pd.DataFrame(samples, columns=["text", "target"])) ret_df = sentence_split(spark_df) ctx.show(ret_df) for _, row in ret_df.toPandas().iterrows(): self.assertEqual(row["text"], row["target"]) - -################################################################ -# This test is used to make sure our codes in llm-ray is still working - #from pyrecdp.primitives.llmutils import shrink_document_MP, text_to_jsonl_MP, global_hash_mp, global_dedup + ################################################################ + + # This test is used to make sure our codes in llm-ray is still working + # from pyrecdp.primitives.llmutils import shrink_document_MP, text_to_jsonl_MP, global_hash_mp, global_dedup def test_llm_ray_near_dedup(self): from pyrecdp.core.utils import Timer import shutil, argparse, pickle from pyrecdp.primitives.llmutils.utils import read_json - from pyrecdp.primitives.llmutils.near_dedup import minHashLSH_prepare, generate_connected_components, generate_duplicates_dict + from pyrecdp.primitives.llmutils.near_dedup import minHashLSH_prepare, generate_connected_components, \ + generate_duplicates_dict from pyrecdp.primitives.llmutils.shrink_jsonl import shrink_document_MP - + data_dir = "tests/data/llm_data" data_files = [os.path.join(data_dir, i) for i in os.listdir(data_dir)] dup_dir = "tests/data/PILE_dup_out" @@ -142,8 +170,7 @@ def test_llm_ray_near_dedup(self): if os.path.exists(dup_dir): shutil.rmtree(dup_dir, ignore_errors=True) results = pipeline.saveAsTextFile(dup_dir) - - + with Timer(f"generate_connected_components all"): dup_connected_args = argparse.Namespace() dup_connected_args.input_dir = dup_dir @@ -153,7 +180,7 @@ def test_llm_ray_near_dedup(self): generate_connected_components.generate_connected_components_mp( dup_connected_args ) - + with Timer(f"generate_duplicates_dict all"): dup_docs = os.path.join(dup_dir, "duplicates.pickle") dup_dict_args = argparse.Namespace() @@ -162,7 +189,7 @@ def test_llm_ray_near_dedup(self): ) dup_dict_args.out_file = dup_docs generate_duplicates_dict.generate_duplicates(dup_dict_args) - + dup_dict = pickle.load(open(os.path.join(dup_dir, "duplicates.pickle"), 'rb')) dup_sum = 0 for _, v in dup_dict.items(): @@ -176,8 +203,7 @@ def test_llm_ray_near_dedup(self): print(f"Completed!!") print(f" total processed {total_length} documents") print(f" total detected {dup_sum} duplicated documents") - print(f" duplicate ratio is {dup_sum/total_length}") - + print(f" duplicate ratio is {dup_sum / total_length}") def test_llm_ray_convert_jsonl(self): from pyrecdp.primitives.llmutils.text_to_jsonl import text_to_jsonl_MP @@ -185,7 +211,6 @@ def test_llm_ray_convert_jsonl(self): out_dir = "tests/data/pmc_jsonl" text_to_jsonl_MP(data_dir, out_dir, 2) - def test_llm_ray_global_hash_jsonl(self): import pandas as pd from pyrecdp.primitives.llmutils.global_hash import global_hash_mp @@ -198,36 +223,35 @@ def test_llm_ray_global_hash_jsonl(self): data_dir = "tests/data/PILE" with Timer("execute global_hash_mp"): global_hash_mp(source, data_dir, in_type, n_parallel, out_dir, is_norm) - + from pyrecdp.primitives.llmutils.global_dedup import get_hash_indexing out_dir = "tests/data/global_hash_index" data_dir = "tests/data/global_hash_out/" with Timer("execute get_hash_indexing"): get_hash_indexing(data_dir, out_dir) - + from pyrecdp.primitives.llmutils.global_dedup import combine_hash_indexing out_dir = "tests/data/combined_hash_index/" data_dir_dir = ["tests/data/global_hash_index/"] with Timer("execute combine_hash_indexing"): combine_hash_indexing(data_dir_dir, out_dir) - + from pyrecdp.primitives.llmutils.global_dedup import get_duplication_list data_dir = "tests/data/global_hash_index" out_dir = "tests/data/duplications_index" with Timer("execute get_duplication_list"): get_duplication_list(data_dir, out_dir) - + from pyrecdp.primitives.llmutils import index_based_reduction in_dir = "tests/data/global_hash_out" dup_dir = "tests/data/duplications_index" out_dir = "tests/data/global_dedup/deduplicated" with Timer("execute index_based_reduction"): index_based_reduction(in_dir, dup_dir, out_dir) - + pdf = pd.read_parquet(out_dir) display(pdf) - - + def test_llm_ray_global_hash_parquet(self): import pandas as pd from pyrecdp.primitives.llmutils.global_hash import global_hash_mp @@ -240,36 +264,35 @@ def test_llm_ray_global_hash_parquet(self): data_dir = "tests/data/PILE" with Timer("execute global_hash_mp"): global_hash_mp(source, data_dir, in_type, n_parallel, out_dir, is_norm) - + from pyrecdp.primitives.llmutils.global_dedup import get_hash_indexing out_dir = "tests/data/global_hash_index" data_dir = "tests/data/global_hash_out/" with Timer("execute get_hash_indexing"): get_hash_indexing(data_dir, out_dir) - + from pyrecdp.primitives.llmutils.global_dedup import combine_hash_indexing out_dir = "tests/data/combined_hash_index/" data_dir_dir = ["tests/data/global_hash_index/"] with Timer("execute combine_hash_indexing"): combine_hash_indexing(data_dir_dir, out_dir) - + from pyrecdp.primitives.llmutils.global_dedup import get_duplication_list data_dir = "tests/data/global_hash_index" out_dir = "tests/data/duplications_index" with Timer("execute get_duplication_list"): get_duplication_list(data_dir, out_dir) - + from pyrecdp.primitives.llmutils import index_based_reduction in_dir = "tests/data/global_hash_out" dup_dir = "tests/data/duplications_index" out_dir = "tests/data/global_dedup/deduplicated" with Timer("execute index_based_reduction"): index_based_reduction(in_dir, dup_dir, out_dir) - + pdf = pd.read_parquet(out_dir) display(pdf) - def test_llm_ray_global_dedup(self): from pyrecdp.primitives.llmutils.global_dedup import global_dedup import pandas as pd @@ -279,9 +302,3 @@ def test_llm_ray_global_dedup(self): global_dedup(data_dir, out_dir, "PILE", in_type) pdf = pd.read_parquet(out_dir + 'deduplicated') display(pdf) - - - - - - \ No newline at end of file From 6d98c205ebbb234577e5872c117e2638365e4884 Mon Sep 17 00:00:00 2001 From: Yao Qing Date: Wed, 11 Oct 2023 02:20:18 +0800 Subject: [PATCH 03/47] [v1.2][ISSUE-306] Solve circular reference issue in filter and some arguments bug. (#373) * Solve circular reference issue in filter and some arguments bug. * Added filtered data statistics --------- Co-authored-by: Chendi.Xue --- RecDP/pyrecdp/primitives/llmutils/filter.py | 17 +++++++------ .../primitives/llmutils/profanity_filter.py | 2 +- .../pyrecdp/primitives/llmutils/text_fixer.py | 6 ++--- .../pyrecdp/primitives/operations/__init__.py | 2 +- .../primitives/operations/text_filter.py | 25 +++++++++++++++---- 5 files changed, 35 insertions(+), 17 deletions(-) diff --git a/RecDP/pyrecdp/primitives/llmutils/filter.py b/RecDP/pyrecdp/primitives/llmutils/filter.py index 5e89a4ddf..d3fd795d8 100644 --- a/RecDP/pyrecdp/primitives/llmutils/filter.py +++ b/RecDP/pyrecdp/primitives/llmutils/filter.py @@ -11,7 +11,8 @@ def filter_by_blocklist_spark(spark_df): return ret -def filter_by_blocklist(data_dir, data_file_type, out_dir): +def filter_by_blocklist(data_dir, out_dir, data_file_type="jsonl"): + from pyrecdp.LLM import ResumableTextPipeline from pyrecdp.primitives.operations import URLFilter from pyrecdp.LLM import ResumableTextPipeline @@ -39,7 +40,8 @@ def filter_by_bad_words_spark(spark_df, language="en"): return ret -def filter_by_bad_words(data_dir, data_file_type, out_dir, language="en"): +def filter_by_bad_words(data_dir, out_dir, data_file_type="jsonl", language="en"): + from pyrecdp.LLM import ResumableTextPipeline from pyrecdp.primitives.operations import BadwordsFilter from pyrecdp.LLM import ResumableTextPipeline @@ -67,7 +69,8 @@ def filter_by_length_spark(spark_df, minimum_length=100, maximum_length=-1): return ret -def filter_by_length(data_dir, data_file_type, out_dir, minimum_length=100, maximum_length=-1): +def filter_by_length(data_dir, out_dir, data_file_type="jsonl", minimum_length=100, maximum_length=-1): + from pyrecdp.LLM import ResumableTextPipeline from pyrecdp.primitives.operations import LengthFilter from pyrecdp.LLM import ResumableTextPipeline @@ -93,7 +96,7 @@ def filter_by_length(data_dir, data_file_type, out_dir, minimum_length=100, maxi parser.add_argument("--data_dir", dest="data_dir", type=str) parser.add_argument("--data_file_type", dest="data_file_type", type=str, default="jsonl") parser.add_argument("--output_dir", dest="output_dir", type=str, default="") - parser.add_argument("--filter_type", dest="support length,bad_words,url_blocklist", type=str, default="length") + parser.add_argument("--filter_type", dest="filter_type", type=str, default="length") args = parser.parse_args() data_dir = args.data_dir data_file_type = args.data_file_type @@ -101,13 +104,13 @@ def filter_by_length(data_dir, data_file_type, out_dir, minimum_length=100, maxi filter_type = args.filter_type if "length" == filter_type: with Timer(f"Processing {filter_type} filter for {data_dir}"): - filter_by_length(data_dir, data_file_type, output_dir) + filter_by_length(data_dir, output_dir, data_file_type) elif "bad_words" == filter_type: with Timer(f"Processing {filter_type} filter for {data_dir}"): - filter_by_bad_words(data_dir, data_file_type, output_dir) + filter_by_bad_words(data_dir, output_dir, data_file_type) elif "url_blocklist" == filter_type: with Timer(f"Processing {filter_type} filter for {data_dir}"): - filter_by_blocklist(data_dir, data_file_type, output_dir) + filter_by_blocklist(data_dir, output_dir, data_file_type) else: raise NotImplementedError(f"{filter_type} is not supported in RecDP LLM Filter yet.") diff --git a/RecDP/pyrecdp/primitives/llmutils/profanity_filter.py b/RecDP/pyrecdp/primitives/llmutils/profanity_filter.py index bb4de85b7..177709ea9 100644 --- a/RecDP/pyrecdp/primitives/llmutils/profanity_filter.py +++ b/RecDP/pyrecdp/primitives/llmutils/profanity_filter.py @@ -11,7 +11,7 @@ def profanity_filter_spark(spark_df): return ret -def profanity_filter(data_dir, data_file_type, out_dir): +def profanity_filter(data_dir, out_dir, data_file_type="jsonl"): from pyrecdp.primitives.operations import ProfanityFilter from pyrecdp.LLM import ResumableTextPipeline diff --git a/RecDP/pyrecdp/primitives/llmutils/text_fixer.py b/RecDP/pyrecdp/primitives/llmutils/text_fixer.py index c0c527ba1..4cf9a949e 100644 --- a/RecDP/pyrecdp/primitives/llmutils/text_fixer.py +++ b/RecDP/pyrecdp/primitives/llmutils/text_fixer.py @@ -1,7 +1,6 @@ import argparse from pyrecdp.core.utils import Timer -from pyrecdp.primitives.operations import JsonlReader, ParquetReader, PerfileParquetWriter from pyrecdp.primitives.operations import TextFix @@ -13,6 +12,7 @@ def text_fixer_spark(spark_df, text_type='html'): def text_fixer(data_dir, data_file_type, out_dir, text_type='html'): from pyrecdp.LLM import ResumableTextPipeline + from pyrecdp.primitives.operations import JsonlReader, ParquetReader, PerfileParquetWriter if data_file_type == 'jsonl': reader = JsonlReader(data_dir) @@ -36,7 +36,7 @@ def text_fixer(data_dir, data_file_type, out_dir, text_type='html'): parser.add_argument("--data_dir", dest="data_dir", type=str) parser.add_argument("--data_file_type", dest="data_file_type", type=str, default="jsonl") parser.add_argument("--output_dir", dest="output_dir", type=str, default="") - parser.add_argument("--text_type", dest="text_type,support:html,latex,codes", type=str, default="html") + parser.add_argument("--text_type", dest="text_type", type=str, default="html") args = parser.parse_args() data_dir = args.data_dir data_file_type = args.data_file_type @@ -44,4 +44,4 @@ def text_fixer(data_dir, data_file_type, out_dir, text_type='html'): text_type = args.text_type with Timer(f"Processing text fixer for {data_dir}"): - text_fixer(data_dir, data_file_type, output_dir, text_type) \ No newline at end of file + text_fixer(data_dir, data_file_type, output_dir, text_type) diff --git a/RecDP/pyrecdp/primitives/operations/__init__.py b/RecDP/pyrecdp/primitives/operations/__init__.py index 382691a07..18a5fa5d9 100644 --- a/RecDP/pyrecdp/primitives/operations/__init__.py +++ b/RecDP/pyrecdp/primitives/operations/__init__.py @@ -13,4 +13,4 @@ from .text_pii_remove import PIIRemoval from .text_deduplication import FuzzyDeduplicate, GlobalDeduplicate from .text_qualityscorer import TextQualityScorer -from .text_diversityindicate import TextDiversityIndicate \ No newline at end of file +from .text_diversityindicate import TextDiversityIndicate diff --git a/RecDP/pyrecdp/primitives/operations/text_filter.py b/RecDP/pyrecdp/primitives/operations/text_filter.py index 057d1d440..0ce439c3b 100644 --- a/RecDP/pyrecdp/primitives/operations/text_filter.py +++ b/RecDP/pyrecdp/primitives/operations/text_filter.py @@ -2,7 +2,6 @@ from ray.data import Dataset from pyspark.sql import DataFrame import os -from pyrecdp.core.cache_utils import RECDP_MODELS_CACHE import pyspark.sql.functions as F @@ -63,7 +62,11 @@ def process_rayds(self, ds: Dataset) -> Dataset: self.check_length = prepare_func_filter_by_length(self.minimum_length, self.maximum_length) if self.inplace: # remove unwanted text row inplace - return ds.filter(lambda x: self.check_length(x[self.text_key])) + original_num = ds.count() + filtered_ds = ds.filter(lambda x: self.check_length(x[self.text_key])) + filtered_num = filtered_ds.count() + print(f"Processed a total of {original_num} rows of data, filtered out {original_num - filtered_num} rows of data") + return filtered_ds else: raise NotImplementedError("We only support inplace modification for LengthFilter.") @@ -93,7 +96,11 @@ def process_rayds(self, ds: Dataset) -> Dataset: self.check_badwords = prepare_func_filter_by_badwords(self.language) if self.inplace: # remove unwanted text row inplace - return ds.filter(lambda x: self.check_badwords(x[self.text_key])) + original_num = ds.count() + filtered_ds = ds.filter(lambda x: self.check_badwords(x[self.text_key])) + filtered_num = filtered_ds.count() + print(f"Processed a total of {original_num} rows of data, filtered out {original_num - filtered_num} rows of data") + return filtered_ds else: raise NotImplementedError("We only support inplace modification for BadwordsFilter.") @@ -121,7 +128,11 @@ def process_rayds(self, ds: Dataset) -> Dataset: self.check_profanity = prepare_func_filter_by_profanity() if self.inplace: # remove unwanted text row inplace - return ds.filter(lambda x: self.check_profanity(x[self.text_key])) + original_num = ds.count() + filtered_ds = ds.filter(lambda x: self.check_profanity(x[self.text_key])) + filtered_num = filtered_ds.count() + print(f"Processed a total of {original_num} rows of data, filtered out {original_num - filtered_num} rows of data") + return filtered_ds else: raise NotImplementedError("We only support inplace modification for ProfanityFilter.") @@ -209,7 +220,11 @@ def process_rayds(self, ds: Dataset) -> Dataset: blacklist = load_blacklist_set() if self.inplace: # remove unwanted text row inplace - return ds.filter(lambda x: get_url_from_meta(x) not in blacklist) + original_num = ds.count() + filtered_ds = ds.filter(lambda x: get_url_from_meta(x) not in blacklist) + filtered_num = filtered_ds.count() + print(f"Processed a total of {original_num} rows of data, filtered out {original_num - filtered_num} rows of data") + return filtered_ds else: raise NotImplementedError("We only support inplace modification for URLFilter.") From 905f7788ba191e27705577982607d5a74d22ad42 Mon Sep 17 00:00:00 2001 From: Yao Qing Date: Wed, 11 Oct 2023 02:24:39 +0800 Subject: [PATCH 04/47] [v1.2][ISSUE-306] Support diversity analysis on ray. (#372) * Support diversity analysis on ray. * Deep copy the model to fix model read-only issue. --------- Co-authored-by: Chendi.Xue --- RecDP/pyrecdp/primitives/llmutils/__init__.py | 2 +- .../primitives/llmutils/diversity_analysis.py | 228 +++--------------- .../operations/text_diversityindicate.py | 86 ++++--- RecDP/tests/test_llmutils.py | 9 +- 4 files changed, 95 insertions(+), 230 deletions(-) diff --git a/RecDP/pyrecdp/primitives/llmutils/__init__.py b/RecDP/pyrecdp/primitives/llmutils/__init__.py index f030caf9b..a0c5fcb07 100644 --- a/RecDP/pyrecdp/primitives/llmutils/__init__.py +++ b/RecDP/pyrecdp/primitives/llmutils/__init__.py @@ -19,4 +19,4 @@ from .quality_classifier import quality_classifier, quality_classifier_spark from .text_fixer import text_fixer from .sentence_split import sentence_split -from .diversity_analysis import DiversityAnalysis, diversity \ No newline at end of file +from .diversity_analysis import diversity_indicate diff --git a/RecDP/pyrecdp/primitives/llmutils/diversity_analysis.py b/RecDP/pyrecdp/primitives/llmutils/diversity_analysis.py index 5351e74e8..8fbf2a08a 100644 --- a/RecDP/pyrecdp/primitives/llmutils/diversity_analysis.py +++ b/RecDP/pyrecdp/primitives/llmutils/diversity_analysis.py @@ -1,197 +1,47 @@ -# This tool is referred from alibaba data juicer project and used for -# analyzing the verb-noun structure of the SFT dataset and plots its diversity in sunburst format. +import argparse -import os - -import pandas -import pandas as pd -import spacy -from pyrecdp.core.model_utils import MODEL_ZOO, prepare_model -from pyrecdp.primitives.spark_data_processor.data_processor import DataProcessor as SparkDataProcessor from pyrecdp.core.utils import Timer -from pyrecdp.primitives.llmutils.utils import get_target_file_list, read_parquet, read_json -from pyspark.sql import functions as F -from pyspark.sql.types import StructType, StructField, StringType -from pyspark.sql.functions import udf - - -# Modify from self_instruct, please refer to -# https://github.com/yizhongw/self-instruct/blob/main/self_instruct/instruction_visualize.ipynb -def find_root_verb_and_its_dobj(tree_root): - """ - Find the verb and its object closest to the root. - - :param tree_root: the root of lexical tree - :return: valid verb and its object. - """ - # first check if the current node and its children satisfy the condition - if tree_root.pos_ == 'VERB': - for child in tree_root.children: - if child.dep_ == 'dobj' and child.pos_ == 'NOUN': - return tree_root.lemma_ if len( - tree_root.lemma_) else tree_root.text, child.lemma_ if len( - child.lemma_) else child.text - return tree_root.lemma_ if len( - tree_root.lemma_) else tree_root.text, None - # if not, check its children - for child in tree_root.children: - return find_root_verb_and_its_dobj(child) - # if no children satisfy the condition, return None - return None, None - - -# Modify from self_instruct, please refer to -# https://github.com/yizhongw/self-instruct/blob/main/self_instruct/instruction_visualize.ipynb -def find_root_verb_and_its_dobj_in_string(nlp, s, first_sent=True): - """ - Find the verb and its object closest to the root of lexical tree of input - string. - - :param nlp: the diversity model to analyse the diversity strings - :param s: the string to be analysed - :param first_sent: whether to analyse the first sentence in the - input string only. If it's true, return the analysis result of - the first sentence no matter it's valid or not. If it's false, - return the first valid result over all sentences - :return: valid verb and its object of this string - """ - doc = nlp(s) - for sent in doc.sents: - verb, noun = find_root_verb_and_its_dobj(sent.root) - if first_sent or (verb is not None and noun is not None): - return verb, noun - return None, None - - -def get_diversity(dataset, top_k_verbs=20, top_k_nouns=4, **kwargs): - """ - Given the lexical tree analysis result, return the diversity results. - - :param dataset: lexical tree analysis result - :param top_k_verbs: only keep the top_k_verbs largest verb groups - :param top_k_nouns: only keep the top_k_nouns largest noun groups - for each verb group - :param kwargs: extra args - :return: the diversity results - """ - phrases = pd.DataFrame(dataset).dropna() - - top_verbs = phrases.groupby(['verb' - ]).size().nlargest(top_k_verbs).reset_index() - - df = phrases[phrases['verb'].isin(top_verbs['verb'].tolist())] - df = df.groupby(['verb', 'noun']).size().reset_index().rename(columns={ - 0: 'count' - }).sort_values(by=['count'], ascending=False) - - df = df.groupby('verb').apply(lambda x: x.sort_values( - 'count', ascending=False).head(top_k_nouns)).reset_index(drop=True) - return df +from pyrecdp.primitives.operations import JsonlReader, ParquetReader, PerfileParquetWriter -class DiversityAnalysis: - """Apply diversity analysis for each sample and get an overall analysis - result.""" +def diversity_indicate_spark(spark_df): + from pyrecdp.primitives.operations import TextDiversityIndicate + op = TextDiversityIndicate() + ret = op.process_spark(spark_df.sparkSession, spark_df) + return ret - def __init__(self, dataset, output_path, lang_or_model='en'): - """Initialization method :param dataset: the dataset to be analysed - :param output_path: path to store the analysis results :param - lang_or_model: the diversity model or a specific language used to load - the diversity model.""" - self.dataset = dataset - self.output_path = output_path - if not os.path.exists(self.output_path): - os.makedirs(self.output_path) - self.lang_or_model = lang_or_model +def diversity_indicate(data_dir, data_file_type, out_dir, language="en"): + from pyrecdp.primitives.operations import TextDiversityIndicate + from pyrecdp.LLM import ResumableTextPipeline - def compute(self, lang_or_model=None): - """ - Apply lexical tree analysis on each sample. - - :param lang_or_model: the diversity model or a specific language - used to load the diversity model - :param column_name: the name of column to be analysed - :return: the analysis result. - """ - # load diversity model - lang_or_model = lang_or_model if lang_or_model else self.lang_or_model - if isinstance(lang_or_model, str): - diversity_model = MODEL_ZOO.get( - prepare_model(lang_or_model, 'spacy')) - else: - diversity_model = lang_or_model - - assert isinstance(diversity_model, spacy.Language) - - schema = StructType([ - StructField("verb", StringType(), True), - StructField("noun", StringType(), True) - ]) - - def find_verb_noun(sample): - try: - verb, noun = find_root_verb_and_its_dobj_in_string( - diversity_model, sample) - except Exception as e: - print(str(e)) - verb, noun = None, None - return verb, noun - - operator = udf(find_verb_noun, schema) - dataset = self.dataset.withColumn('diversity', operator(F.col("text"))) - dataset = dataset.select("filename_docid", "text", "meta", "diversity.*") - return dataset.toPandas() - - def analyse(self, - lang_or_model=None, - column_name='text', - postproc_func=get_diversity, - **postproc_kwarg): - """ - Apply diversity analysis on the whole dataset. - - :param lang_or_model: the diversity model or a specific language - used to load the diversity model - :param column_name: the name of column to be analysed - :param postproc_func: function to analyse diversity. In default, - it's function get_diversity - :param postproc_kwarg: arguments of the postproc_func - :return: - """ - # get the lexical tree analysis result - raw_df = self.compute(lang_or_model=lang_or_model) - # get the result of diversity analysis - df = postproc_func(raw_df, **postproc_kwarg) - - # export to result report file - df.to_csv(os.path.join(self.output_path, 'diversity.csv')) - df.to_markdown(os.path.join(self.output_path, 'diversity.md')) - return df - - -def diversity(data_dir, in_type, output_path, language="en", enable_ray=False): - if enable_ray: - rdp = SparkDataProcessor(spark_mode='ray') + if data_file_type == 'jsonl': + reader = JsonlReader(data_dir) + elif data_file_type == 'parquet': + reader = ParquetReader(data_dir) else: - rdp = SparkDataProcessor() - spark = rdp.spark - try: - with Timer(f"Load data from {in_type} file"): - - data_files = get_target_file_list(data_dir, in_type) - data_files = [os.path.join(data_dir, f) for f in data_files] - if in_type == 'parquet': - spark_df = read_parquet(data_files, spark) - elif in_type == 'jsonl': - spark_df = read_json(data_files, spark) - total_data_num = spark_df.count() - with Timer("Analyzing data"): - diversity_analysis = DiversityAnalysis( - spark_df, output_path) - - diversity_analysis.analyse(lang_or_model=language) - except Exception as e: - spark.stop() - print("Failed", e) - + raise NotImplementedError(f"{data_file_type} is not supported in RecDP LLM ResumableTextPipeline yet.") + + pipeline = ResumableTextPipeline() + ops = [ + reader, + TextDiversityIndicate(language=language), + PerfileParquetWriter(out_dir) + ] + pipeline.add_operations(ops) + pipeline.execute() + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("--data_dir", dest="data_dir", type=str) + parser.add_argument("--data_file_type", dest="data_file_type", type=str, default="jsonl") + parser.add_argument("--output_dir", dest="output_dir", type=str, default="") + parser.add_argument("--language", dest="language", type=str, default="en") + args = parser.parse_args() + data_dir = args.data_dir + data_file_type = args.data_file_type + output_dir = args.output_dir + language = args.language + with Timer(f"Processing diversity analysis for {data_dir}"): + diversity_indicate(data_dir, data_file_type, output_dir, language) diff --git a/RecDP/pyrecdp/primitives/operations/text_diversityindicate.py b/RecDP/pyrecdp/primitives/operations/text_diversityindicate.py index 29c734615..1e8265909 100644 --- a/RecDP/pyrecdp/primitives/operations/text_diversityindicate.py +++ b/RecDP/pyrecdp/primitives/operations/text_diversityindicate.py @@ -7,9 +7,6 @@ import pandas as pd import spacy from pyrecdp.core.model_utils import MODEL_ZOO, prepare_model -from pyrecdp.primitives.spark_data_processor.data_processor import DataProcessor as SparkDataProcessor -from pyrecdp.core.utils import Timer -from pyrecdp.primitives.llmutils.utils import get_target_file_list, read_parquet, read_json from pyspark.sql import functions as F from pyspark.sql.types import StructType, StructField, StringType from pyspark.sql.functions import udf @@ -43,7 +40,6 @@ def find_root_verb_and_its_dobj(tree_root): # if no children satisfy the condition, return None return None, None - # Modify from self_instruct, please refer to # https://github.com/yizhongw/self-instruct/blob/main/self_instruct/instruction_visualize.ipynb def find_root_verb_and_its_dobj_in_string(nlp, s, first_sent=True): @@ -71,13 +67,14 @@ class DiversityAnalysis: """Apply diversity analysis for each sample and get an overall analysis result.""" - def __init__(self, dataset, lang_or_model='en'): + def __init__(self, dataset, text_key="text", lang_or_model='en'): """Initialization method :param dataset: the dataset to be analysed :param output_path: path to store the analysis results :param lang_or_model: the diversity model or a specific language used to load the diversity model.""" self.dataset = dataset + self.text_key = text_key self.lang_or_model = lang_or_model def compute(self, lang_or_model=None): @@ -89,6 +86,7 @@ def compute(self, lang_or_model=None): :param column_name: the name of column to be analysed :return: the analysis result. """ + # load diversity model lang_or_model = lang_or_model if lang_or_model else self.lang_or_model if isinstance(lang_or_model, str): @@ -99,23 +97,37 @@ def compute(self, lang_or_model=None): assert isinstance(diversity_model, spacy.Language) - schema = StructType([ - StructField("verb", StringType(), True), - StructField("noun", StringType(), True) - ]) - - def find_verb_noun(sample): - try: - verb, noun = find_root_verb_and_its_dobj_in_string( - diversity_model, sample) - except Exception as e: - print(str(e)) - verb, noun = None, None - return verb, noun - existing_columns = self.dataset.columns - operator = udf(find_verb_noun, schema) - dataset = self.dataset.withColumn('diversity', operator(F.col("text"))) - dataset = dataset.select(*existing_columns, "diversity.*") + if isinstance(self.dataset, DataFrame): + schema = StructType([ + StructField("verb", StringType(), True), + StructField("noun", StringType(), True) + ]) + + def find_verb_noun_spark(sample): + try: + verb, noun = find_root_verb_and_its_dobj_in_string( + diversity_model, sample) + except Exception as e: + print(str(e)) + verb, noun = None, None + return verb, noun + + existing_columns = self.dataset.columns + operator = udf(find_verb_noun_spark, schema) + dataset = self.dataset.withColumn('diversity', operator(F.col(self.text_key))) + dataset = dataset.select("diversity.*").toPandas() + else: + import copy + + def find_verb_noun_ray(sample): + try: + nlp = copy.deepcopy(diversity_model) + verb, noun = find_root_verb_and_its_dobj_in_string(nlp, sample) + except Exception as e: + print(str(e)) + verb, noun = None, None + return {'verb': verb, 'noun': noun} + dataset = self.dataset.map(lambda x: find_verb_noun_ray(x[self.text_key])).to_pandas() return dataset def get_diversity(self, dataset, top_k_verbs=20, top_k_nouns=4, **kwargs): @@ -132,7 +144,7 @@ def get_diversity(self, dataset, top_k_verbs=20, top_k_nouns=4, **kwargs): phrases = pd.DataFrame(dataset).dropna() top_verbs = phrases.groupby(['verb' - ]).size().nlargest(top_k_verbs).reset_index() + ]).size().nlargest(top_k_verbs).reset_index() df = phrases[phrases['verb'].isin(top_verbs['verb'].tolist())] df = df.groupby(['verb', 'noun']).size().reset_index().rename(columns={ @@ -159,14 +171,14 @@ def analyse(self, :return: """ # get the lexical tree analysis result - raw_df = self.compute(lang_or_model=lang_or_model) - pdf = raw_df.toPandas() + pdf = self.compute(lang_or_model=lang_or_model) # get the result of diversity analysis df = self.get_diversity(pdf, **postproc_kwarg) return df + class TextDiversityIndicate(BaseLLMOperation): - def __init__(self, text_key = 'text', language = 'en', out_dir = ''): + def __init__(self, text_key='text', language='en', out_dir=''): settings = {'text_key': text_key, 'language': language, 'out_dir': out_dir} super().__init__(settings) self.text_key = text_key @@ -174,19 +186,21 @@ def __init__(self, text_key = 'text', language = 'en', out_dir = ''): self.output_path = out_dir self.inplace = False self.support_spark = True - self.support_ray = False - + self.support_ray = True + def process_rayds(self, ds: Dataset) -> Dataset: - raise NotImplementedError("Not implemented yet") - return ds.map(lambda x: self.process_row(x, self.text_key, new_name, text_bytesize)) - + diversity_analysis = DiversityAnalysis(ds, text_key=self.text_key, lang_or_model=self.language) + analyse_df = diversity_analysis.analyse(lang_or_model=self.language) + analyse_df.to_csv(os.path.join(self.output_path, 'diversity.csv')) + analyse_df.to_markdown(os.path.join(self.output_path, 'diversity.md')) + return ds + def process_spark(self, spark, spark_df: DataFrame) -> DataFrame: - import pyspark.sql.functions as F - from pyspark.sql import types as T - diversity_analysis = DiversityAnalysis(spark_df) + diversity_analysis = DiversityAnalysis(spark_df, text_key=self.text_key, lang_or_model=self.language) analyse_df = diversity_analysis.analyse(lang_or_model=self.language) analyse_df.to_csv(os.path.join(self.output_path, 'diversity.csv')) analyse_df.to_markdown(os.path.join(self.output_path, 'diversity.md')) return spark_df - -LLMOPERATORS.register(TextDiversityIndicate) \ No newline at end of file + + +LLMOPERATORS.register(TextDiversityIndicate) diff --git a/RecDP/tests/test_llmutils.py b/RecDP/tests/test_llmutils.py index 10e106224..17bf44128 100644 --- a/RecDP/tests/test_llmutils.py +++ b/RecDP/tests/test_llmutils.py @@ -69,13 +69,14 @@ def test_quality_classifier_spark(self): quality_classifier_df.show() def test_diversity_analysis(self): - from pyrecdp.primitives.llmutils import diversity + from pyrecdp.primitives.llmutils import diversity_indicate data_dir = "tests/data/llm_data/" output_path = "tests/data/diversity_out" in_type = "jsonl" - diversity(data_dir, in_type, output_path) + diversity_indicate(data_dir, in_type, output_path) + +# ***** This test is to provide an example for EasyData ***** # - # ***** This test is to provide an example for EasyData ***** # def test_near_dedup_spark(self): from pyrecdp.primitives.llmutils import near_dedup_spk with SparkContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: @@ -301,4 +302,4 @@ def test_llm_ray_global_dedup(self): data_dir = "tests/data/PILE" global_dedup(data_dir, out_dir, "PILE", in_type) pdf = pd.read_parquet(out_dir + 'deduplicated') - display(pdf) + display(pdf) \ No newline at end of file From 90b5bc728de1369aafd6e469b5f7bef0f1434e05 Mon Sep 17 00:00:00 2001 From: "Chendi.Xue" Date: Tue, 10 Oct 2023 17:52:33 -0500 Subject: [PATCH 05/47] [v1.2][ISSUE-306]Readme update (#378) * update README Signed-off-by: Xue, Chendi * update README to align with latest Signed-off-by: Xue, Chendi * update readme Signed-off-by: Xue, Chendi --------- Signed-off-by: Xue, Chendi --- RecDP/README.md | 23 +- .../notebooks/llmutils/bytesize.ipynb | 529 ++++++++++++++++++ .../examples/notebooks/llmutils/reader.ipynb | 180 ++++++ .../llmutils/resumable_pipeline.ipynb | 180 ++++++ .../examples/notebooks/llmutils/writer.ipynb | 302 ++++++++++ RecDP/pyrecdp/LLM/README.md | 114 ++-- RecDP/pyrecdp/autofe/README.md | 14 +- 7 files changed, 1259 insertions(+), 83 deletions(-) create mode 100644 RecDP/examples/notebooks/llmutils/bytesize.ipynb create mode 100644 RecDP/examples/notebooks/llmutils/reader.ipynb create mode 100644 RecDP/examples/notebooks/llmutils/resumable_pipeline.ipynb create mode 100644 RecDP/examples/notebooks/llmutils/writer.ipynb diff --git a/RecDP/README.md b/RecDP/README.md index 7b7cb6921..c1c8eab72 100644 --- a/RecDP/README.md +++ b/RecDP/README.md @@ -37,37 +37,30 @@ transformed_train_df = pipeline.fit_transform() Low Code to build your own pipeline ``` -from pyrecdp.LLM import TextPipeline -pipeline = TextPipeline("usecase/finetune_pipeline.yaml") +from pyrecdp.LLM import ResumableTextPipeline +pipeline = ResumableTextPipeline("usecase/finetune_pipeline.yaml") ret = pipeline.execute() ``` or ``` from pyrecdp.primitives.operations import * -from pyrecdp.LLM import TextPipeline +from pyrecdp.LLM import ResumableTextPipeline -pipeline = TextPipeline() +pipeline = ResumableTextPipeline() ops = [ - JsonlReader(input_dir = "in_path"), + JsonlReader("data/"), URLFilter(), LengthFilter(), ProfanityFilter(), TextFix(), LanguageIdentify(), - Classify(), - FuzzyDeduplicate(), - DocumentSplit(), - GlobalDeduplicate(), PIIRemoval(), - ParquetWriter(out_dir = "out_path"), + PerfileParquetWriter("ResumableTextPipeline_output") ] -ret = pipeline.add_operations(ops).execute(dataset) +pipeline.add_operations(ops) +pipeline.execute() ``` -* Pre-Training LLM Quality Control - -WIP... - ## LICENSE * Apache 2.0 diff --git a/RecDP/examples/notebooks/llmutils/bytesize.ipynb b/RecDP/examples/notebooks/llmutils/bytesize.ipynb new file mode 100644 index 000000000..20feffaf6 --- /dev/null +++ b/RecDP/examples/notebooks/llmutils/bytesize.ipynb @@ -0,0 +1,529 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "NUdnJWOJLGvF", + "metadata": { + "id": "NUdnJWOJLGvF" + }, + "source": [ + "# RecDP LLM - TextBytesize\n", + "\n", + "TextBytesize is a tool to get total byte size of text in the data.\n", + "\n", + "### We support two types of input and output:\n", + "\n", + "example 1:\n", + "* Expect Input format: a folder of *.jsonl.\n", + "* Expect Output format: a folder of *.jsonl after reduction." + ] + }, + { + "cell_type": "markdown", + "id": "C1FFwhr3MwA1", + "metadata": { + "id": "C1FFwhr3MwA1" + }, + "source": [ + "# Get started" + ] + }, + { + "cell_type": "markdown", + "id": "tMaSNIKIMz3T", + "metadata": { + "id": "tMaSNIKIMz3T" + }, + "source": [ + "## Install pyrecdp and dependencies" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ro4yOk5IMvRY", + "metadata": { + "id": "ro4yOk5IMvRY" + }, + "outputs": [], + "source": [ + "! DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-8-jre\n", + "! pip install pyrecdp --pre\n", + "# ! pip install 'git+https://github.com/intel/e2eAIOK.git#egg=pyrecdp&subdirectory=RecDP'" + ] + }, + { + "cell_type": "markdown", + "id": "pnHK2VTvM5rg", + "metadata": { + "id": "pnHK2VTvM5rg" + }, + "source": [ + "## 2. prepare your own data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a", + "metadata": { + "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a" + }, + "outputs": [], + "source": [ + "%mkdir -p /content/test_data\n", + "%cd /content/test_data\n", + "file_names = ['NIH_sample.jsonl']\n", + "file_list = [f\"https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/PILE/{i}\" for i in file_names]\n", + "!wget -P /content/test_data {\" \".join(file_list)}" + ] + }, + { + "cell_type": "markdown", + "id": "J-125gFtNyOg", + "metadata": { + "id": "J-125gFtNyOg" + }, + "source": [ + "## 3. get bytesize" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "vkGRn9uJN4B0", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vkGRn9uJN4B0", + "outputId": "8aa9d021-99f5-4de8-932e-2fccb933f70e" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "NIH_sample.jsonl\n" + ] + } + ], + "source": [ + "! ls /content/test_data" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "SMK9KcV4N7al", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "SMK9KcV4N7al", + "outputId": "7e93835c-a7d0-4612-e9aa-7c6f452d5bef" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Will assign 1 cores and 10386 M memory for spark\n", + "per core memory size is 10.143 GB and shuffle_disk maximum capacity is 8589934592.000 GB\n", + "Load data with RowID started ...\n", + "Load data with RowID took 2.592839109000124 sec\n", + "num_bands is 9, ranges is 13\n", + "generate minHashLsh started ...\n", + "generate minHashLsh took 63.16276241699961 sec\n", + "generate_connected_components all started ...\n", + "Started graph building\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "loop on file: 100%|██████████| 2/2 [00:00<00:00, 5312.61it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "length of the set of duplicates: 13 0.01398324966430664\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 13/13 [00:00<00:00, 71275.75it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of connected components: 7 0.02257537841796875\n", + "Graph generated duplicates list!!! 0.022832632064819336\n", + "generate_connected_components all took 0.02385874599985982 sec\n", + "generate_duplicates_dict all started ...\n", + "Processing duplicates!!!\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 7/7 [00:00<00:00, 46163.72it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "number of duplicate documents that will be removed: 12\n", + "generate_duplicates_dict all took 0.009320153000317077 sec\n", + "Completed!!\n", + " total processed 10000 documents\n", + " total detected 12 duplicated documents\n", + " duplicate ratio is 0.0012\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Detected duplications are:\n" + ] + }, + { + "data": { + "text/plain": [ + "[['NIH_sample.jsonl@1769', 'NIH_sample.jsonl@1764', 'NIH_sample.jsonl@1765'],\n", + " ['NIH_sample.jsonl@245',\n", + " 'NIH_sample.jsonl@243',\n", + " 'NIH_sample.jsonl@246',\n", + " 'NIH_sample.jsonl@248',\n", + " 'NIH_sample.jsonl@244',\n", + " 'NIH_sample.jsonl@247'],\n", + " ['NIH_sample.jsonl@1191', 'NIH_sample.jsonl@1190'],\n", + " ['NIH_sample.jsonl@7746', 'NIH_sample.jsonl@7745'],\n", + " ['NIH_sample.jsonl@9026', 'NIH_sample.jsonl@8561'],\n", + " ['NIH_sample.jsonl@8200', 'NIH_sample.jsonl@7354'],\n", + " ['NIH_sample.jsonl@3037', 'NIH_sample.jsonl@3024']]" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_files = [\"/content/test_data/NIH_sample.jsonl\"]\n", + "dup_dir = \"/content/fuzzy_dedup\"\n", + "\n", + "ngram_size = 13 # num_words to do compare\n", + "num_perm = 256 # num_permutation to hold this whole document.\n", + "# ranges and bands will impact the probabilities of false positive and false negative.\n", + "ranges = 13\n", + "bands = 9\n", + "\n", + "from pyrecdp.primitives.llmutils import near_dedup\n", + "import pandas as pd\n", + "\n", + "near_dedup(data_files, dup_dir, ngram_size, num_perm, bands, ranges)\n", + "\n", + "## Validate codes\n", + "import pickle\n", + "print(\"Detected duplications are:\")\n", + "connects, num_pair, index_list = pickle.load(open(f\"{dup_dir}/connected_components.pickle\", 'rb'))\n", + "connected_component_reverse = [[index_list[j] for j in i] for i in connects]\n", + "connected_component_reverse" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "81NiajWFTy2n", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "81NiajWFTy2n", + "outputId": "d8efdf8d-6561-411a-b190-acf8d289b331" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "resetting to 1 for number of processes\n", + "parallelize with 1 processes\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 1/1 [00:00<00:00, 12.83it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Reduction is completed, checkout the new jsonl filesize\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "NIH_sample.jsonl\n", + "9988\n" + ] + } + ], + "source": [ + "# apply duplication list to original data to remove duplication\n", + "\n", + "from pyrecdp.primitives.llmutils import shrink_document_MP\n", + "import os\n", + "\n", + "data_dir = \"/content/test_data/\"\n", + "dup_dir = \"/content/fuzzy_dedup\"\n", + "dup_dict = os.path.join(dup_dir, \"duplicates.pickle\")\n", + "out_dir = os.path.join(dup_dir, \"output\")\n", + "\n", + "shrink_document_MP(data_dir, dup_dict, out_dir)\n", + "\n", + "# validate\n", + "print(\"\\nReduction is completed, checkout the new jsonl filesize\")\n", + "! ls \"/content/fuzzy_dedup/output\"\n", + "! cat /content/fuzzy_dedup/output/* | wc -l" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "jFOflHdsQ2XI", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "jFOflHdsQ2XI", + "outputId": "88c1b3aa-8999-4563-cf4a-a65f5efbf0fc" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "First duplication is ['NIH_sample.jsonl@1769', 'NIH_sample.jsonl@1764', 'NIH_sample.jsonl@1765']\n", + "You'll see the similar content in above documents\n", + "NIH_sample.jsonl@1769\n", + "{\"meta\": {\"APPLICATION_ID\": 2044519}, \"text\": \"The overall aim of study is to test the \\\"matching hypothesis\\\" that alcohol treatment effectiveness can be increased by assigning clients with certain characteristics to particular treatments. The present application proposes to continue work initiated and conducted over the past five years. The specific aims of study are: to test primary and secondary a priori matching hypotheses over the course of 15 months of follow-up; to conduct psychometric and other analyses of patient, treatment process, and outcome variables to test these matching hypotheses; to examine alternative analytic strategies and variables for testing matching; and to determine the extent to which matching effects persist over a three year period following treatment completion. Data sets collected from the Project MATCH outpatient (N=954) and aftercare (N=774) randomized clinical trial studies will be analyzed to achieve these aims. Clients randomly assigned to one of three treatments, Twelve Step, Cognitive Behavioral, or Motivational Enhancement, have been assessed prior to treatment on baseline and matching variables and followed, at 3 month intervals, for 15 months from treatment assignment to measure their alcohol consumption and other dimensions of outcome. To test longer term matching effects, clients in the outpatient arm of the study will be contacted and assessed at 39 months after treatment initiation. In year 08 these data will be analyzed to address this question. It is anticipated that study results will impact on alcohol treatment research and delivery for the next decade. The Project MATCH Steering Committee, following discussion with NIAAA Staff, has chosen to submit a generic proposal across each of the CRUs, reflecting the common protocol and cooperative process that has guided the project across its first five years of operation. However, each CRU has provided site-specific information in the budget, budget justifications, listing of key personnel, consultant/consortium agreements, and human subjects sections of their respective proposals.\"}\n", + "NIH_sample.jsonl@1764\n", + "{\"meta\": {\"APPLICATION_ID\": 2044494}, \"text\": \"The overall aim of this study is to test the \\\"matching hypothesis\\\" that alcohol treatment effectiveness can be increased by assigning clients with certain characteristics to particular treatments. The present application proposes to continue work initiated and conducted over the past five years. The specific aims of study are: to test primary and secondary a priori matching hypotheses over the course of 15 months of follow-up; to conduct psychometric and other analyses of patient, treatment process, and outcome variables to test these matching hypotheses; to examine alternative analytic strategies and variables for testing matching- and to determine the extent to which matching effects persist over a three year period following treatment completion. Data sets collected from the Project MATCH outpatient (N=954) and aftercare (N=774) randomized clinical trial studies will be analyzed to achieve these aims. Clients randomly assigned to one of three treatments (Twelve Step, Cognitive Behavioral, or Motivational Enhancement) have been assessed prior to treatment on baseline and matching variables and followed, at 3 month intervals, for 15 months from treatment assignment to measure their alcohol consumption and other dimensions of outcome. To test longer term matching effects clients in the outpatient arm of the study will be contacted and assessed at 39 months after treatment initiation. In year 08 these data will be analyzed to address this question. It is anticipated that study results will impact on alcohol treatment research and delivery for the next decade. Finally, it should be noted that the Project MATCH Steering Committee, following discussion with NIAAA Staff, has chosen to submit a generic proposal across each of the CRUs reflecting the common protocol and cooperative process that has guided the project across its first five years of operation. However, each CRU has provided site-specific information in the budget, budget justifications, listing of key personnel, consultant/consortium agreements, and human subjects sections of their respective proposals.\"}\n", + "NIH_sample.jsonl@1765\n", + "{\"meta\": {\"APPLICATION_ID\": 2044499}, \"text\": \"The overall aim of study is to test the \\\"matching hypothesis\\\" that alcohol treatment effectiveness can be increased by assigning clients with certain characteristics to particular treatments. The present application proposes to continue work initiated and conducted over the past five years. The specific aims of study are: to test primary and secondary a priori matching hypotheses over the course of 15 months of follow-up; to conduct psychometric and other analyses of patient, treatment process, and outcome variables to test these matching hypotheses; to examine alternative analytic strategies and variables for testing matching; and to determine the extent to which matching effects persist over a three year period following treatment completion. Data sets collected from the Project MATCH outpatient (N=954) and aftercare (N=774) randomized clinical trial studies will be analyzed to achieve these aims. Clients randomly assigned to one of three treatments, Twelve Step, Cognitive Behavioral, or Motivational Enhancement, have been assessed prior to treatment on baseline and matching variables and followed, at 3 month intervals, for 15 months from treatment assignment to measure their alcohol consumption and other dimensions of outcome. To test longer term matching effects clients in the outpatient arm of the study will be contacted and assessed at 39 months after treatment initiation. In year 08 these data will be analyzed to address this question. It is anticipated that study results will impact on alcohol treatment research and delivery for the next decade. The Project MATCH Steering Committee, following discussion with NIAAA Staff, has chosen to submit a generic proposal across each of the CRUs, reflecting the common protocol and cooperative process that has guided the project across its first five years of operation. However, each CRU has provided site-specific information in the budget, budget justifications, listing of key personnel, consultant/consortium agreements, and human subjects sections of their respective proposals.\"}\n" + ] + } + ], + "source": [ + "# Visual compare based on detection\n", + "print(f\"First duplication is {connected_component_reverse[0]}\")\n", + "print(\"You'll see the similar content in above documents\")\n", + "\n", + "for f_id in connected_component_reverse[0]:\n", + " print(f_id)\n", + " f_name, rid = f_id.split(\"@\")\n", + " ! sed -n {rid}p {f_name}\n" + ] + }, + { + "cell_type": "markdown", + "id": "okSSgtKDTnuE", + "metadata": { + "id": "okSSgtKDTnuE" + }, + "source": [ + "## 3. fuzzy deduplicate (unified detection and reduction)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "HQ_Ax_wxTnC9", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "HQ_Ax_wxTnC9", + "outputId": "98031a36-2956-434d-a576-b86bd782ea5c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Will assign 1 cores and 10386 M memory for spark\n", + "per core memory size is 10.143 GB and shuffle_disk maximum capacity is 8589934592.000 GB\n", + "input is \n", + "+--------------------+--------------------+\n", + "| text| meta|\n", + "+--------------------+--------------------+\n", + "|The National Dome...|{\"APPLICATION_ID\"...|\n", + "|The Office of Pla...|{\"APPLICATION_ID\"...|\n", + "|Improving outcome...|{\"APPLICATION_ID\"...|\n", + "|This project is i...|{\"APPLICATION_ID\"...|\n", + "|The CCDF Policies...|{\"APPLICATION_ID\"...|\n", + "|The overall purpo...|{\"APPLICATION_ID\"...|\n", + "|This contract wil...|{\"APPLICATION_ID\"...|\n", + "|The purpose of th...|{\"APPLICATION_ID\"...|\n", + "|The purpose of th...|{\"APPLICATION_ID\"...|\n", + "|Intimate partner ...|{\"APPLICATION_ID\"...|\n", + "|ACF's Office of R...|{\"APPLICATION_ID\"...|\n", + "|The Temporary Ass...|{\"APPLICATION_ID\"...|\n", + "|Investing in Qual...|{\"APPLICATION_ID\"...|\n", + "|Current developme...|{\"APPLICATION_ID\"...|\n", + "|The proposed diss...|{\"APPLICATION_ID\"...|\n", + "|As the US populat...|{\"APPLICATION_ID\"...|\n", + "|Through employing...|{\"APPLICATION_ID\"...|\n", + "|The proposed mixe...|{\"APPLICATION_ID\"...|\n", + "|To better serve D...|{\"APPLICATION_ID\"...|\n", + "|A long standing r...|{\"APPLICATION_ID\"...|\n", + "+--------------------+--------------------+\n", + "only showing top 20 rows\n", + "\n", + "Total num_rows of input is 10000\n", + "num_bands is 9, ranges is 13\n", + "generate minHashLsh started ...\n", + "generate minHashLsh took 64.54865999799995 sec\n", + "generate_connected_components => duplicates started ...\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 13/13 [00:00<00:00, 69283.29it/s]\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "generate_connected_components => duplicates took 0.8337461669998447 sec\n", + "deduplicate input data started ...\n", + "deduplicate input data took 0.9185702700001457 sec\n", + "Completed!!\n", + " total processed 10000 documents\n", + " total detected 12 duplicated documents, exact deduplicated counts is 12\n", + " duplicate ratio is 0.0012\n", + "output is\n", + "+--------------+--------------------+--------------------+\n", + "|filename_docid| text| meta|\n", + "+--------------+--------------------+--------------------+\n", + "| global_id@0|The National Dome...|{\"APPLICATION_ID\"...|\n", + "| global_id@1|The Office of Pla...|{\"APPLICATION_ID\"...|\n", + "| global_id@2|Improving outcome...|{\"APPLICATION_ID\"...|\n", + "| global_id@3|This project is i...|{\"APPLICATION_ID\"...|\n", + "| global_id@4|The CCDF Policies...|{\"APPLICATION_ID\"...|\n", + "| global_id@5|The overall purpo...|{\"APPLICATION_ID\"...|\n", + "| global_id@6|This contract wil...|{\"APPLICATION_ID\"...|\n", + "| global_id@7|The purpose of th...|{\"APPLICATION_ID\"...|\n", + "| global_id@8|The purpose of th...|{\"APPLICATION_ID\"...|\n", + "| global_id@9|Intimate partner ...|{\"APPLICATION_ID\"...|\n", + "| global_id@10|ACF's Office of R...|{\"APPLICATION_ID\"...|\n", + "| global_id@11|The Temporary Ass...|{\"APPLICATION_ID\"...|\n", + "| global_id@12|Investing in Qual...|{\"APPLICATION_ID\"...|\n", + "| global_id@13|Current developme...|{\"APPLICATION_ID\"...|\n", + "| global_id@14|The proposed diss...|{\"APPLICATION_ID\"...|\n", + "| global_id@15|As the US populat...|{\"APPLICATION_ID\"...|\n", + "| global_id@16|Through employing...|{\"APPLICATION_ID\"...|\n", + "| global_id@17|The proposed mixe...|{\"APPLICATION_ID\"...|\n", + "| global_id@18|To better serve D...|{\"APPLICATION_ID\"...|\n", + "| global_id@19|A long standing r...|{\"APPLICATION_ID\"...|\n", + "+--------------+--------------------+--------------------+\n", + "only showing top 20 rows\n", + "\n", + "Total num_rows of output is 9988\n" + ] + } + ], + "source": [ + "from pyrecdp.core import SparkDataProcessor\n", + "from pyspark.sql.types import StructType, StructField, StringType\n", + "import pyspark.sql.functions as F\n", + "from pyrecdp.primitives.llmutils import near_dedup_spk\n", + "\n", + "data_files = [\"/content/test_data/NIH_sample.jsonl\"]\n", + "dup_dir = \"/content/fuzzy_dedup_spark\"\n", + "\n", + "ngram_size = 13\n", + "num_perm = 256\n", + "bands = 9\n", + "ranges = 13\n", + "rdp = SparkDataProcessor()\n", + "spark = rdp.spark\n", + "schema = StructType([\n", + " StructField(\"text\", StringType(), True),\n", + " StructField(\"meta\", StringType(), True)\n", + "])\n", + "spark_df = spark.read.text(data_files)\n", + "spark_df = spark_df.withColumn('jsonData', F.from_json(F.col('value'), schema)).select(\"jsonData.*\")\n", + "print(\"input is \")\n", + "spark_df.show()\n", + "print(f\"Total num_rows of input is {spark_df.count()}\")\n", + "\n", + "ret_df = near_dedup_spk(spark_df, ngram_size, num_perm, bands, ranges)\n", + "\n", + "print(\"output is\")\n", + "ret_df.show()\n", + "print(f\"Total num_rows of output is {ret_df.count()}\")\n", + "del rdp" + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/RecDP/examples/notebooks/llmutils/reader.ipynb b/RecDP/examples/notebooks/llmutils/reader.ipynb new file mode 100644 index 000000000..80d84f95d --- /dev/null +++ b/RecDP/examples/notebooks/llmutils/reader.ipynb @@ -0,0 +1,180 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "BT-BjcaHj3eh" + }, + "source": [ + "## Install pyrecdp from github" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "E3ffXVymdeKg" + }, + "outputs": [], + "source": [ + "! pip install 'git+https://github.com/intel/e2eAIOK.git#egg=pyrecdp&subdirectory=RecDP'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KVAcXKenj_sZ" + }, + "source": [ + "## Install jdk for pyspark running" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "4Z1dPdx3dwf1" + }, + "outputs": [], + "source": [ + "! DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-8-jre" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "bMqBJ9eckIs6" + }, + "source": [ + "### Prepare test data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "2SFjDgfLd4qE" + }, + "outputs": [], + "source": [ + "%mkdir -p /content/test_data\n", + "%cd /content/test_data\n", + "!wget -P /content/test_data https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/arxiv_sample_100.jsonl\n", + "!wget -P /content/test_data https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/github_sample_50.jsonl\n", + "!wget -P /content/test_data https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/pii_test.jsonl\n", + "!wget -P /content/test_data https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/tiny_c4_sample.jsonl" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "JjTnnzw_kRVV" + }, + "source": [ + "## Import filter functions" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "id": "Swy-H3HQepjA" + }, + "outputs": [], + "source": [ + "from pyrecdp.primitives.llmutils.text_fixer import text_fixer\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "XXGify_rkXHZ" + }, + "source": [ + "## Specify input data path, output path,input data type and text types" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "id": "UvIWsnV-fYmv" + }, + "outputs": [], + "source": [ + "data_dir = \"/content/test_data\"\n", + "out_dir = \"/content/output\"\n", + "in_type = \"jsonl\"\n", + "text_types = [\"html\", 'latex', \"codes\"]\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "nj0LuIsFkhRr" + }, + "source": [ + "## Process the 'text' column and remove unnecessary control characters, HTML elements and comments\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vftAYZMwfllh", + "outputId": "21041b9e-3643-427c-ca71-0eca0bf622b9" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Will assign 1 cores and 10386 M memory for spark\n", + "per core memory size is 10.143 GB and shuffle_disk maximum capacity is 8589934592.000 GB\n", + "Load data from jsonl file started ...\n", + "Load data from jsonl file took 0.7552096419999543 sec\n", + "Processing data started ...\n", + "Processing data took 0.12260321699977794 sec\n", + "Save data started ...\n", + "Save data took 11.986804642999687 sec\n", + "Completed!!\n", + " Loaded and processed total 602 documents\n" + ] + } + ], + "source": [ + "text_fixer(data_dir, in_type, out_dir,text_types)" + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/RecDP/examples/notebooks/llmutils/resumable_pipeline.ipynb b/RecDP/examples/notebooks/llmutils/resumable_pipeline.ipynb new file mode 100644 index 000000000..80d84f95d --- /dev/null +++ b/RecDP/examples/notebooks/llmutils/resumable_pipeline.ipynb @@ -0,0 +1,180 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "BT-BjcaHj3eh" + }, + "source": [ + "## Install pyrecdp from github" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "E3ffXVymdeKg" + }, + "outputs": [], + "source": [ + "! pip install 'git+https://github.com/intel/e2eAIOK.git#egg=pyrecdp&subdirectory=RecDP'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KVAcXKenj_sZ" + }, + "source": [ + "## Install jdk for pyspark running" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "4Z1dPdx3dwf1" + }, + "outputs": [], + "source": [ + "! DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-8-jre" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "bMqBJ9eckIs6" + }, + "source": [ + "### Prepare test data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "2SFjDgfLd4qE" + }, + "outputs": [], + "source": [ + "%mkdir -p /content/test_data\n", + "%cd /content/test_data\n", + "!wget -P /content/test_data https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/arxiv_sample_100.jsonl\n", + "!wget -P /content/test_data https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/github_sample_50.jsonl\n", + "!wget -P /content/test_data https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/pii_test.jsonl\n", + "!wget -P /content/test_data https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/tiny_c4_sample.jsonl" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "JjTnnzw_kRVV" + }, + "source": [ + "## Import filter functions" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "id": "Swy-H3HQepjA" + }, + "outputs": [], + "source": [ + "from pyrecdp.primitives.llmutils.text_fixer import text_fixer\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "XXGify_rkXHZ" + }, + "source": [ + "## Specify input data path, output path,input data type and text types" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "id": "UvIWsnV-fYmv" + }, + "outputs": [], + "source": [ + "data_dir = \"/content/test_data\"\n", + "out_dir = \"/content/output\"\n", + "in_type = \"jsonl\"\n", + "text_types = [\"html\", 'latex', \"codes\"]\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "nj0LuIsFkhRr" + }, + "source": [ + "## Process the 'text' column and remove unnecessary control characters, HTML elements and comments\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vftAYZMwfllh", + "outputId": "21041b9e-3643-427c-ca71-0eca0bf622b9" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Will assign 1 cores and 10386 M memory for spark\n", + "per core memory size is 10.143 GB and shuffle_disk maximum capacity is 8589934592.000 GB\n", + "Load data from jsonl file started ...\n", + "Load data from jsonl file took 0.7552096419999543 sec\n", + "Processing data started ...\n", + "Processing data took 0.12260321699977794 sec\n", + "Save data started ...\n", + "Save data took 11.986804642999687 sec\n", + "Completed!!\n", + " Loaded and processed total 602 documents\n" + ] + } + ], + "source": [ + "text_fixer(data_dir, in_type, out_dir,text_types)" + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/RecDP/examples/notebooks/llmutils/writer.ipynb b/RecDP/examples/notebooks/llmutils/writer.ipynb new file mode 100644 index 000000000..a8947fa8a --- /dev/null +++ b/RecDP/examples/notebooks/llmutils/writer.ipynb @@ -0,0 +1,302 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# Install pyrecdp from github" + ], + "metadata": { + "id": "IJ8RaakCnsyW" + }, + "id": "IJ8RaakCnsyW" + }, + { + "cell_type": "code", + "execution_count": null, + "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a", + "metadata": { + "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a" + }, + "outputs": [], + "source": [ + "!pip install 'git+https://github.com/intel/e2eAIOK.git#egg=pyrecdp&subdirectory=RecDP'" + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Install jdk for pyspark running" + ], + "metadata": { + "id": "TWv2WvL6nzTA" + }, + "id": "TWv2WvL6nzTA" + }, + { + "cell_type": "code", + "source": [ + "!DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-8-jre" + ], + "metadata": { + "id": "vk2j9kKbSrLT" + }, + "id": "vk2j9kKbSrLT", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Prepare test data" + ], + "metadata": { + "id": "ljHxOJL8n-5E" + }, + "id": "ljHxOJL8n-5E" + }, + { + "cell_type": "code", + "source": [ + "%mkdir -p /content/test_data\n", + "%cd /content/test_data\n", + "!wget https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/arxiv_sample_100.jsonl" + ], + "metadata": { + "id": "bWDi0vtLoHwm" + }, + "id": "bWDi0vtLoHwm", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Import classifier function" + ], + "metadata": { + "id": "XusjrHT4tOdj" + }, + "id": "XusjrHT4tOdj" + }, + { + "cell_type": "code", + "source": [ + "from pyrecdp.primitives.llmutils import classify_spark, language_identify_spark\n", + "from pyrecdp.primitives.llmutils.utils import get_target_file_list\n", + "from huggingface_hub import hf_hub_download\n", + "from pyrecdp.core import SparkDataProcessor" + ], + "metadata": { + "id": "SkccgiE9oNyL" + }, + "id": "SkccgiE9oNyL", + "execution_count": 6, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Specify variables" + ], + "metadata": { + "id": "w0kSy1Fotwcl" + }, + "id": "w0kSy1Fotwcl" + }, + { + "cell_type": "code", + "source": [ + "fasttext_model_dir = hf_hub_download(repo_id=\"facebook/fasttext-language-identification\", filename=\"model.bin\")\n", + "data_dir = \"/content/test_data/\"\n", + "data_file = '/content/test_data/arxiv_sample_100.jsonl'\n", + "classify_save_path = \"/content/test_data/output/classify_spark\"" + ], + "metadata": { + "id": "xM8XygxBXKfh" + }, + "id": "xM8XygxBXKfh", + "execution_count": 5, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Load data" + ], + "metadata": { + "id": "TVbiJxG3uNX5" + }, + "id": "TVbiJxG3uNX5" + }, + { + "cell_type": "code", + "source": [ + "rdp = SparkDataProcessor()\n", + "spark=rdp.spark\n", + "spark_df = spark.read.json(data_file)\n", + "lid_df = language_identify_spark(spark_df, fasttext_model_dir)\n", + "print(\"input is\")\n", + "lid_df.show()" + ], + "metadata": { + "id": "ex3QUs1tuVb0", + "outputId": "d4d104a8-4b47-4996-c8fc-996e73e554bd", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "id": "ex3QUs1tuVb0", + "execution_count": 7, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Will assign 1 cores and 10386 M memory for spark\n", + "per core memory size is 10.143 GB and shuffle_disk maximum capacity is 8589934592.000 GB\n", + "/root/.cache/huggingface/hub/models--facebook--fasttext-language-identification/snapshots/3af127d4124fc58b75666f3594bb5143b9757e78/model.bin\n", + "input is\n", + "+--------------------+--------------------+--------+\n", + "| meta| text|language|\n", + "+--------------------+--------------------+--------+\n", + "|{2203.15369, en, ...|\\section{Introduc...|eng_Latn|\n", + "|{math/9807097, en...|\\section{Introduc...|eng_Latn|\n", + "|{2008.06948, en, ...|\\section{Introduc...|eng_Latn|\n", + "|{cond-mat/9807071...|\\section{Introduc...|eng_Latn|\n", + "|{2210.10650, en, ...|\\section{\\label{s...|eng_Latn|\n", + "|{astro-ph/9807119...|\\section{Introduc...|eng_Latn|\n", + "|{2111.03152, en, ...|\\section{Introduc...|eng_Latn|\n", + "|{1606.04992, en, ...|\\n\\n\\section{Intr...|eng_Latn|\n", + "|{1608.03404, en, ...|\\section{introduc...|eng_Latn|\n", + "|{1904.10101, en, ...|\\section{Introduc...|eng_Latn|\n", + "|{cond-mat/9807275...|\\section{Introduc...|eng_Latn|\n", + "|{2109.05334, en, ...|\\section{Introduc...|eng_Latn|\n", + "|{1512.06966, en, ...|\\section{Introduc...|eng_Latn|\n", + "|{2112.04926, en, ...|\\section{Introduc...|eng_Latn|\n", + "|{2202.01000, en, ...|\\section{Introduc...|eng_Latn|\n", + "|{2209.13421, en, ...|\\section{Introduc...|eng_Latn|\n", + "|{1103.5603, en, 2...|\\section{Introduc...|eng_Latn|\n", + "|{1001.3679, en, 2...|\\section{Introduc...|eng_Latn|\n", + "|{1702.08222, en, ...|\\section{Introduc...|eng_Latn|\n", + "|{2201.05495, en, ...|\\section{Introduc...|eng_Latn|\n", + "+--------------------+--------------------+--------+\n", + "only showing top 20 rows\n", + "\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Split the data into sub buckets according to lang column" + ], + "metadata": { + "id": "QEMpJ79yuf8W" + }, + "id": "QEMpJ79yuf8W" + }, + { + "cell_type": "code", + "source": [ + "classify_spark(lid_df, \"language\", classify_save_path, \"file://\")" + ], + "metadata": { + "id": "iQlDQ8SrkuN9", + "outputId": "9dbebae7-89b6-4f1b-cf52-8d91588bb72e", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "id": "iQlDQ8SrkuN9", + "execution_count": 9, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Spilt data started ...\n", + "Spilt data took 28.158131373999822 sec\n", + "Completed!!\n", + " total classify the spark dataframe by language for 100 documents\n", + " All the classified data are saving under the folder: file:///content/test_data/output/classify_spark\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "DataFrame[meta: struct, text: string, language: string]" + ] + }, + "metadata": {}, + "execution_count": 9 + } + ] + }, + { + "cell_type": "code", + "source": [ + "!ls -al $classify_save_path" + ], + "metadata": { + "id": "Yl9V2MAVvk29", + "outputId": "7d99fd6e-6506-49f5-b2a4-52105d960964", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "id": "Yl9V2MAVvk29", + "execution_count": 12, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "total 16\n", + "drwxr-xr-x 3 root root 4096 Oct 7 10:30 .\n", + "drwxr-xr-x 3 root root 4096 Oct 7 10:29 ..\n", + "drwxr-xr-x 2 root root 4096 Oct 7 10:29 'language=eng_Latn'\n", + "-rw-r--r-- 1 root root 0 Oct 7 10:30 _SUCCESS\n", + "-rw-r--r-- 1 root root 8 Oct 7 10:30 ._SUCCESS.crc\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "wKsYSPSnpU8x" + }, + "id": "wKsYSPSnpU8x", + "execution_count": null, + "outputs": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "colab": { + "provenance": [], + "toc_visible": true + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/RecDP/pyrecdp/LLM/README.md b/RecDP/pyrecdp/LLM/README.md index 0caf2e162..b26219f0d 100644 --- a/RecDP/pyrecdp/LLM/README.md +++ b/RecDP/pyrecdp/LLM/README.md @@ -9,25 +9,27 @@ RecDP LLM is a set of python components that enables quick and easy establish of | Type | notebook | Description | supports | Verified dataset & size | | -------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | ---------------------------------------------------- | ------------------------------------- | -| [ Convert ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/llmutils/convert.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/convert.ipynb) | Convert individual document, jsonl, csv to parquet | text, jsonl, csv | RedPajama - 2 TB | -| [ Filter ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/llmutils/filter.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/filter.ipynb) | Filter out document based on condition | profanity_check, black-list, url_based, length_based | RedPajama - 2 TB | -| [ Language Identify ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/llmutils/language_identify.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/language_identify.ipynb) | Inentify major language type of document | en, zh, fr, de, .. total 25 langs | RedPajama - 2 TB | -| [ Classify ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/llmutils/convert.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/classify.ipynb) | Classify data into sub buckets | meta fields, language | RefinedWeb - 1.7 TB | -| [ Fuzzy Deduplicator ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/llmutils/classify.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/fuzzy_deduplication.ipynb) | Detect and reduce duplication based on document context | minHashLSH, minHashLSH-shortdoc | PILE - 200 GB | -| [ Decontamination ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/llmutils/decontaminate.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/decontamination.ipynb) | Detect and reduce duplication based on exact same content | sha256-hash | RefinedWeb - 1.7 TB, RedPajama - 2 TB | -| [ PII Removal ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/llmutils/pii_remove.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/pii_removal.ipynb) | Detect and replace personal infomation in document | email, phone, ip, username, password | RefinedWeb - 1.7 TB | -| [ Text Normalization ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/llmutils/text_normalization.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/text_normalization.ipynb) | Fix and clean texts | ftfy, punctuation_normalization | RedPajama - 2 TB , RedPajama - 2 TB | -| [ Text Fixer ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/llmutils/text_fixer.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/text_fixer.ipynb) | Clean repeated format in html, latex, codes | html, latex, codes | RefinedWeb - 1.7 TB | -| [ Document splitter ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/llmutils/sentence_split.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/document_split.ipynb) | Split Document into multiple sub documents | chapter_based, length_based | RefinedWeb - 1.7 TB | +| [ Filter ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_filter.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/filter.ipynb) | Filter out document based on condition | profanity-based, black-list, url_based, length_based | RedPajama - 2 TB | +| [ Text Bytesize ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_bytesize.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/bytesize.ipynb) | Get text bytes size | | RedPajama - 2 TB | +| [ Text Fixer ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_fixer.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/text_fixer.ipynb) | Clean repeated format in html, latex, codes | html, latex, codes | RefinedWeb - 1.7 TB | +| [ Language Identify ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_language_identify.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/language_identify.ipynb) | Inentify major language type of document | en, zh, fr, de, .. total 25 langs | RedPajama - 2 TB | +| [ Fuzzy Deduplicator ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_deduplication.py#L99) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/fuzzy_deduplication.ipynb) | Detect and reduce duplication based on document context | minHashLSH | PILE - 200 GB | +| [ Global Decuplicator ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_deduplication.py#L194) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/decontamination.ipynb) | Detect and reduce duplication based on exact same content | sha256-hash | RefinedWeb - 1.7 TB, RedPajama - 2 TB | +| [ Document splitter ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_split.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/document_split.ipynb) | Split Document into multiple sub documents | chapter_based, length_based | RefinedWeb - 1.7 TB | +| [ PII Removal ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_pii_remove.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/pii_removal.ipynb) | Detect and replace personal infomation in document | email, phone, ip, username, password | RefinedWeb - 1.7 TB | +| [ Reader ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_reader.py#L16) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/reader.ipynb) | Read data from directory | jsonl, parquet, | RefinedWeb - 1.7 TB | +| [ Converter ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_converter.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/convert.ipynb) | Read and convert unstructed data to unified format | html, document, image, pdf, ... | RefinedWeb - 1.7 TB | +| [ Writer ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_writer.py#L7) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/writer.ipynb) | write data to directory | jsonl, parquet | RefinedWeb - 1.7 TB | +| [ ClassifyWriter ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_writer.py#L47) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/classify.ipynb) | Classify and write data into sub buckets | meta fields, language | RefinedWeb - 1.7 TB | +| [ Prompt Enhancement ](#) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/prompt_enhancement.ipynb) | creates high-complexity instructions from existing instruct-tuned LLM models | PromptSource, self-instruct, evol-instruct(wizardLM) | alpaca | -## LLM data quality enhancement module +## LLM Data Quality Analysis -| Type | notebook | Description | supports | -| :------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------- | :--------------------------------------------------- | -| [ Prompt Enhancement ](#) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/prompt_enhancement.ipynb) | creates high-complexity instructions from existing instruct-tuned LLM models | PromptSource, self-instruct, evol-instruct(wizardLM) | -| [ Text Quality Assessment ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/llmutils/quality_classifier.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/text_quality_assessment.ipynb) | Assess text quality with a logistic regression classifier | GPT-3 quality scorer, | -| [ Data Diversity Control ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/llmutils/diversity_analysis.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/data_diversity_control.ipynb) | Control data's diversity and coverage | rouge-l similarity | -| [ Toxicity and Bias Control ](#) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/toxicity_bias_control.ipynb) | Calculates toxicity scores for text objects and filters according to the threshold | TBD | +| Diversity | GPT-3 Scoring | Toxicity | +| :-------- | :---------- | :------------| +| Visualize the diversity distribution of data | Leverage GPT-3 to scoring | Visualize Toxicity probability | +| ![diversity](/RecDP/resources/diversity_analysis.png) | ![quality](/RecDP/resources/quality_scoring.png) | ![toxicity](/RecDP/resources/toxicity_analysis.png)| +| [learn more](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/text_quality_assessment.ipynb) | [learn more](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/data_diversity_control.ipynb) | [learn more](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/toxicity_bias_control.ipynb) | # Getting Start @@ -39,70 +41,60 @@ pip install pyrecdp --pre ``` ## * run with pipeline +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/resumable_pipeline.ipynb) ``` from pyrecdp.primitives.operations import * from pyrecdp.LLM import TextPipeline from IPython.display import display -pipeline = TextPipeline() +from pyrecdp.primitives.operations import * +from pyrecdp.LLM import ResumableTextPipeline + +pipeline = ResumableTextPipeline() ops = [ - JsonlReader(input_dir = "in_path"), + JsonlReader("data/"), URLFilter(), LengthFilter(), ProfanityFilter(), TextFix(), LanguageIdentify(), - Classify(), - FuzzyDeduplicate(), - DocumentSplit(), - GlobalDeduplicate(), PIIRemoval(), - ParquetWriter(out_dir = "out_path"), + PerfileParquetWriter("ResumableTextPipeline_output") ] -ret = pipeline.add_operations(ops).execute(dataset) - -pd = ret.preview_as_pandas() -display(pd) - +pipeline.add_operations(ops) +pipeline.execute() pipeline.export_to_yaml("custom_llm_data_pipeline.yaml") ``` - -## * run with individual component - * check colab links of individual component above - * cmdline mode provided to process your data from data_dir - * python function mode provided to easily integrate to your codes - * spark dataframe mode provided to easily integrate to your spark env - - -## LLM Data Quality Analysis - -| Diversity | GPT-3 Scoring | Toxicity | -| :-------- | :---------- | :------------| -| Visualize the diversity distribution of data | Leverage GPT-3 to scoring | Visualize Toxicity probability | -| ![diversity](/RecDP/resources/diversity_analysis.png) | ![quality](/RecDP/resources/quality_scoring.png) | ![toxicity](/RecDP/resources/toxicity_analysis.png)| -| [learn more](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/text_quality_assessment.ipynb) | [learn more](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/data_diversity_control.ipynb) | [learn more](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/toxicity_bias_control.ipynb) | - - - -## Use Cases - -### * Foundation Model data preparation +or ``` -from pyrecdp.LLM import TextPipeline -pipeline = TextPipeline("usecase/itl_foundation_pipeline.yaml") +from pyrecdp.LLM import ResumableTextPipeline +pipeline = TextPipeline("custom_llm_data_pipeline.yaml") ret = pipeline.execute() -pd = ret.preview_as_pandas() -display(pd) ``` -### * FineTune Model Data Preparation -``` -from pyrecdp.LLM import TextPipeline -pipeline = TextPipeline("usecase/itl_finetune_pipeline.yaml") -ret = pipeline.execute() -pd = ret.preview_as_pandas() -display(pd) +## * run with individual component + * cmdline mode ``` +python pyrecdp/primitives/llmutils/language_identify.py \ + --data_dir tests/llm_data \ + --language_identify_output_dir output \ + --fasttext_model_dir ./cache/RecDP/models/lib.bin +``` + * operation-based API - ray mode +``` +from pyrecdp.primitives.operations import LengthFilter + +dataset = … # Ray Dataset +op = LengthFilter() +op.process_rayds(dataset) +``` + * operation-based API - spark mode +``` +from pyrecdp.primitives.operations import LengthFilter +sparkdf = … # Spark Dataframe +op = LengthFilter() +op.process_spark(sparkdf) +``` \ No newline at end of file diff --git a/RecDP/pyrecdp/autofe/README.md b/RecDP/pyrecdp/autofe/README.md index ad4813db2..72f7161ee 100644 --- a/RecDP/pyrecdp/autofe/README.md +++ b/RecDP/pyrecdp/autofe/README.md @@ -14,10 +14,10 @@ Steps explained: | Workflow Name | Description | | --- | --- | -| [NYC taxi fare](applications/nyc_taxi_fare/interactive_notebook.ipynb) | Fare prediction based on NYC taxi dataset | -| [Amazon Product Review](applications/amazon_product_review/interactive_notebook.ipynb) | Product recommandation based on reviews from Amazon | -| [IBM Card Transaction Fraud Detect](applications/fraud_detect/interactive_notebook.ipynb) | Recognize fraudulent credit card transactions | -| [Twitter Recsys](applications/twitter_recsys/interactive_notebook.ipynb) | Real-world task of tweet engagement prediction | -| [Outbrain](applications/outbrain_ctr/interactive_notebook.ipynb) | Click prediction for recommendation system | -| [Covid19 TabUtils](applications/covid19_tabutils/interactive_notebook.ipynb) | integration example with Tabular Utils | -| [PredictiveAssetsMaintenance](applications/predictive_assets_maintenance/interactive_notebook.ipynb) | integration example with predictive assets maintenance use case | +| [NYC taxi fare](https://colab.research.google.com/github/intel/auto-feature-engineering/blob/main/applications/nyc_taxi_fare/interactive_notebook.ipynb) | Fare prediction based on NYC taxi dataset | +| [Amazon Product Review](https://colab.research.google.com/github/intel/auto-feature-engineering/blob/main/applications/amazon_product_review/interactive_notebook.ipynb) | Product recommandation based on reviews from Amazon | +| [IBM Card Transaction Fraud Detect](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/fraud_detection/recdp_aucpr.ipynb) | Recognize fraudulent credit card transactions | +| [Recsys 2023](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/recsys2023/recdp.ipynb) | Real-world task of tweet engagement prediction | +| [Outbrain](https://colab.research.google.com/github/intel/auto-feature-engineering/blob/main/applications/outbrain_ctr/interactive_notebook.ipynb) | Click prediction for recommendation system | +| [Covid19 TabUtils](https://colab.research.google.com/github/intel/auto-feature-engineering/blob/main/applications/covid19_tabutils/interactive_notebook.ipynb) | integration example with Tabular Utils | +| [PredictiveAssetsMaintenance](https://colab.research.google.com/github/intel/auto-feature-engineering/blob/main/applications/predictive_assets_maintenance/interactive_notebook.ipynb) | integration example with predictive assets maintenance use case | From a91a25ba1ae37eef91c59886356556b74f4f0390 Mon Sep 17 00:00:00 2001 From: Yu-Zhou Date: Wed, 11 Oct 2023 23:41:02 +0800 Subject: [PATCH 06/47] [v1.2][ISSUE-374] deltatuner denas-ssf multiple model validation and model merge (#375) * change save path * simplify test code * rename path * add * add * add * add * add * bug fix * add * add * add * add * add * restore * add * add * add * add * Dtuner models (#7) * bug fix * add * add * update readme * delete * update test scripts * update * support direct eval after merging model * update * update * ssf load previous config * automatic fill deltaargs * update config * copy code to merged dir * add test * update readme for merge model * bug fix * check the code file existence * update readme * update model name list * refine test scripts * bug fix * bug fix * allow tokenizer to be None * bug fix * bug fix * fix import * update path * move merge testing scripts --- e2eAIOK/deltatuner/README.md | 10 +- e2eAIOK/deltatuner/deltatuner/deltatuner.py | 4 +- .../deltatuner/deltatuner/deltatuner_model.py | 16 +- .../deltatuner/tuner/deltatuner_ssf.py | 45 +++++ e2eAIOK/deltatuner/deltatuner/utils/config.py | 6 +- example/instruction_tuning_pipeline/README.md | 4 + .../finetune_clm.py | 50 ++++-- tests/deltatuner/cicd/run_denas_lora.sh | 85 ++++------ tests/deltatuner/cicd/run_denas_ssf.sh | 46 ++--- tests/deltatuner/cicd/run_lora.sh | 85 ++++------ tests/deltatuner/cicd/run_ssf.sh | 48 ++---- tests/deltatuner/cicd/run_ssf_model.sh | 47 ++++++ tests/deltatuner/finetune/run_denas_lora.sh | 92 +++++----- tests/deltatuner/finetune/run_denas_ssf.sh | 47 ++++++ tests/deltatuner/finetune/run_lora.sh | 93 +++++------ tests/deltatuner/finetune/run_ssf.sh | 47 ++++++ .../deltatuner/finetune/ssf/llama2-7b-lora.sh | 24 --- .../finetune/ssf/llama2-7b-ssf-allmodules.sh | 135 --------------- .../finetune/ssf/llama2-7b-ssf-denas.sh | 157 ------------------ tests/deltatuner/finetune/ssf/mpt-7b-full.sh | 23 --- tests/deltatuner/finetune/ssf/mpt-7b-lora.sh | 24 --- .../ssf/mpt-7b-ssf-allmodules-denas.sh | 120 ------------- .../finetune/ssf/mpt-7b-ssf-allmodules.sh | 98 ----------- tests/deltatuner/finetune/ssf/mpt-7b-ssf.sh | 51 ------ .../{finetune/ssf => merge_model}/readme.md | 22 +-- .../ssf-merge-test.sh} | 40 ++--- 26 files changed, 461 insertions(+), 958 deletions(-) create mode 100644 tests/deltatuner/cicd/run_ssf_model.sh create mode 100644 tests/deltatuner/finetune/run_denas_ssf.sh create mode 100644 tests/deltatuner/finetune/run_ssf.sh delete mode 100755 tests/deltatuner/finetune/ssf/llama2-7b-lora.sh delete mode 100755 tests/deltatuner/finetune/ssf/llama2-7b-ssf-allmodules.sh delete mode 100755 tests/deltatuner/finetune/ssf/llama2-7b-ssf-denas.sh delete mode 100755 tests/deltatuner/finetune/ssf/mpt-7b-full.sh delete mode 100755 tests/deltatuner/finetune/ssf/mpt-7b-lora.sh delete mode 100755 tests/deltatuner/finetune/ssf/mpt-7b-ssf-allmodules-denas.sh delete mode 100755 tests/deltatuner/finetune/ssf/mpt-7b-ssf-allmodules.sh delete mode 100755 tests/deltatuner/finetune/ssf/mpt-7b-ssf.sh rename tests/deltatuner/{finetune/ssf => merge_model}/readme.md (81%) rename tests/deltatuner/{finetune/ssf/llama2-7b-ssf.sh => merge_model/ssf-merge-test.sh} (51%) diff --git a/e2eAIOK/deltatuner/README.md b/e2eAIOK/deltatuner/README.md index b6d6d5b40..3c503e1b8 100644 --- a/e2eAIOK/deltatuner/README.md +++ b/e2eAIOK/deltatuner/README.md @@ -84,10 +84,10 @@ Please refer to [example page](https://github.com/intel/e2eAIOK/tree/main/exampl | Model | LoRA | SSF | |--------------| ---- | ---- | | GPT-2 | ✅ | | -| GPT-J | ✅ | | -| Bloom | ✅ | | -| OPT | ✅ | | -| GPT-Neo | ✅ | | -| Falcon | ✅ | | +| GPT-J | ✅ | ✅ | +| Bloom | ✅ | ✅ | +| OPT | ✅ | ✅ | +| GPT-Neo | ✅ | ✅ | +| Falcon | ✅ | ✅ | | LLaMA | ✅ | ✅ | | MPT | ✅ | ✅ | diff --git a/e2eAIOK/deltatuner/deltatuner/deltatuner.py b/e2eAIOK/deltatuner/deltatuner/deltatuner.py index f6a3adbf3..2c172d98b 100644 --- a/e2eAIOK/deltatuner/deltatuner/deltatuner.py +++ b/e2eAIOK/deltatuner/deltatuner/deltatuner.py @@ -39,9 +39,9 @@ def optimize(model, tokenizer, algo: str="auto", adapter_name: str="default", de if isinstance(peft_config, LoraConfig) or isinstance(peft_config, SSFConfig): if peft_config.task_type not in MODEL_TYPE_TO_DELTATUNER_MODEL_MAPPING: - model = DeltaTunerModel(model, tokenizer, peft_config, adapter_name, deltatuning_args) + model = DeltaTunerModel(model, peft_config, adapter_name, deltatuning_args, tokenizer) else: - model = MODEL_TYPE_TO_DELTATUNER_MODEL_MAPPING[peft_config.task_type](model, tokenizer, peft_config, adapter_name, deltatuning_args) + model = MODEL_TYPE_TO_DELTATUNER_MODEL_MAPPING[peft_config.task_type](model, peft_config, adapter_name, deltatuning_args, tokenizer) return model else: raise NotImplementedError("Current algorithm {} is not supported in deltatuner. ".format(algo)) \ No newline at end of file diff --git a/e2eAIOK/deltatuner/deltatuner/deltatuner_model.py b/e2eAIOK/deltatuner/deltatuner/deltatuner_model.py index 8d6baefaa..917c55f18 100644 --- a/e2eAIOK/deltatuner/deltatuner/deltatuner_model.py +++ b/e2eAIOK/deltatuner/deltatuner/deltatuner_model.py @@ -52,7 +52,7 @@ def setup_seed(seed): torch.manual_seed(seed) class DeltaTunerModel(PeftModel, torch.nn.Module): - def __init__(self, model, tokenizer: AutoTokenizer, peft_config: PeftConfig, adapter_name: str = "default", denas_config: DeltaTunerArguments = None): + def __init__(self, model, peft_config: PeftConfig, adapter_name: str = "default", denas_config: DeltaTunerArguments = None, tokenizer: AutoTokenizer = None): torch.nn.Module.__init__(self) self.base_model = model self.tokenizer = tokenizer @@ -104,7 +104,8 @@ def _init_denas_params_(self): self.denas_config.model_id = self.base_model.config._name_or_path self.denas_config.tokenizer = self.tokenizer self.denas_config.max_param_limits = sum(param.numel() for param in self.base_model.parameters() if param.requires_grad) / 10.**6 if self.denas_config.max_param_limits is None else self.denas_config.max_param_limits - self.denas_config.budget_latency_max = network_latency(self.base_model, self.tokenizer, batch_size=self.denas_config.batch_size) if self.denas_config.budget_latency_max is not None else self.denas_config.budget_latency_max + if self.tokenizer: + self.denas_config.budget_latency_max = network_latency(self.base_model, self.tokenizer, batch_size=self.denas_config.batch_size) if self.denas_config.budget_latency_max is not None else self.denas_config.budget_latency_max def search(self, denas_config, super_net, search_space): setup_seed(denas_config.random_seed) @@ -219,6 +220,13 @@ def from_pretrained( from .mapping import DELTATUNER_TYPE_TO_CONFIG_MAPPING, MODEL_TYPE_TO_DELTATUNER_MODEL_MAPPING denas_config = kwargs.pop("denas_config", None) + best_structure_file = os.path.join(model_id, "best_model_structure.txt") + if os.path.isfile(best_structure_file): + denas_config.denas = True + denas_config.best_model_structure = best_structure_file + else: + denas_config.denas = False + # load the config if config is None: peft_type_name = PeftConfig._get_peft_type( @@ -376,8 +384,8 @@ def load_adapter(self, model_id: str, adapter_name: str, is_trainable: bool = Fa return load_result class DelatunerModelForCausalLM(DeltaTunerModel): - def __init__(self, model: PeftModel, tokenizer: AutoTokenizer, peft_config: PeftConfig, adapter_name: str = "default", denas_config: DeltaTunerArguments = None): - super().__init__(model, tokenizer, peft_config, adapter_name, denas_config) + def __init__(self, model: PeftModel, peft_config: PeftConfig, adapter_name: str = "default", denas_config: DeltaTunerArguments = None, tokenizer: AutoTokenizer = None): + super().__init__(model, peft_config, adapter_name, denas_config, tokenizer) self.base_model_prepare_inputs_for_generation = self.base_model.prepare_inputs_for_generation def forward( diff --git a/e2eAIOK/deltatuner/deltatuner/tuner/deltatuner_ssf.py b/e2eAIOK/deltatuner/deltatuner/tuner/deltatuner_ssf.py index 48cff341b..2a8716695 100644 --- a/e2eAIOK/deltatuner/deltatuner/tuner/deltatuner_ssf.py +++ b/e2eAIOK/deltatuner/deltatuner/tuner/deltatuner_ssf.py @@ -1,3 +1,4 @@ +import os import math import re import warnings @@ -80,6 +81,50 @@ class SSFConfig(PeftConfig): def __post_init__(self): self.peft_type = DeltaTunerType.SSF + @classmethod + def from_pretrained(cls, pretrained_model_name_or_path: str, subfolder: Optional[str] = None, **kwargs): + r""" + This method loads the configuration of your adapter model from a directory. + + Args: + pretrained_model_name_or_path (`str`): + The directory or the Hub repository id where the configuration is saved. + kwargs (additional keyword arguments, *optional*): + Additional keyword arguments passed along to the child class initialization. + """ + from peft.utils import CONFIG_NAME + + path = ( + os.path.join(pretrained_model_name_or_path, subfolder) + if subfolder is not None + else pretrained_model_name_or_path + ) + + hf_hub_download_kwargs, class_kwargs, _ = cls._split_kwargs(kwargs) + + if os.path.isfile(os.path.join(path, CONFIG_NAME)): + config_file = os.path.join(path, CONFIG_NAME) + else: + try: + config_file = hf_hub_download( + pretrained_model_name_or_path, CONFIG_NAME, subfolder=subfolder, **hf_hub_download_kwargs + ) + except Exception: + raise ValueError(f"Can't find '{CONFIG_NAME}' at '{pretrained_model_name_or_path}'") + + loaded_attributes = cls.from_json_file(config_file) + + config_cls = cls + + config = config_cls(**class_kwargs) + + for key, value in loaded_attributes.items(): + if hasattr(config, key): + setattr(config, key, value) + + return config + + class DeltaSSFSearchSpace: @classmethod def generate_search_space(cls, model, denas_config): diff --git a/e2eAIOK/deltatuner/deltatuner/utils/config.py b/e2eAIOK/deltatuner/deltatuner/utils/config.py index 1b3fea166..64d34c058 100644 --- a/e2eAIOK/deltatuner/deltatuner/utils/config.py +++ b/e2eAIOK/deltatuner/deltatuner/utils/config.py @@ -1,11 +1,13 @@ import enum from dataclasses import field from typing import List, Optional, Tuple, Union +from peft.utils import TRANSFORMERS_MODELS_TO_LORA_TARGET_MODULES_MAPPING class DeltaTunerType(str, enum.Enum): SSF = "SSF" -TRANSFORMERS_MODELS_TO_SSF_TARGET_MODULES_MAPPING = { +TRANSFORMERS_MODELS_TO_SSF_TARGET_MODULES_MAPPING = TRANSFORMERS_MODELS_TO_LORA_TARGET_MODULES_MAPPING +TRANSFORMERS_MODELS_TO_SSF_TARGET_MODULES_MAPPING.update({ "llama": ["q_proj", "v_proj"], "mpt": ["Wqkv","out_proj","up_proj","down_proj"] -} \ No newline at end of file +}) \ No newline at end of file diff --git a/example/instruction_tuning_pipeline/README.md b/example/instruction_tuning_pipeline/README.md index 59b047b25..6c2779a0e 100644 --- a/example/instruction_tuning_pipeline/README.md +++ b/example/instruction_tuning_pipeline/README.md @@ -125,6 +125,10 @@ python example/instruction_tuning_pipeline/finetune_clm.py \ --bf16 True 2>&1 | tee log/mpt-lora-run-1epoch.log ``` +- If you are using 4th Xeon or later (SPR etc.), please specify the `--bf16 --no_cuda` args; +- If you are using 3th Xeon or before (ICX etc.): please specify the `--no_cuda` args; +- If you are using GPU server: please specify the `--fp16` args. + ## Evaluate the model For model evaluation, we follow the same method in [open_llm_leaderboard](https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard), which evaluate 4 key benchmarks in the [Eleuther AI Language Model Evaluation Harness](https://github.com/EleutherAI/lm-evaluation-harness). diff --git a/example/instruction_tuning_pipeline/finetune_clm.py b/example/instruction_tuning_pipeline/finetune_clm.py index 6da81f8fc..6740ad098 100755 --- a/example/instruction_tuning_pipeline/finetune_clm.py +++ b/example/instruction_tuning_pipeline/finetune_clm.py @@ -20,6 +20,8 @@ import datasets import logging import os +import json +import errno import sys import transformers from transformers.modeling_utils import unwrap_model @@ -292,6 +294,10 @@ class FinetuneArguments: default=False, metadata={"help": "save merged model"}, ) + merge_model_code_dir: Optional[str] = field( + default="", + metadata={"help": "the code path of base model with enable bias on target modules for ssf algo"}, + ) PROMPT_DICT = { "prompt_with_input": ( @@ -700,12 +706,7 @@ def concatenate_data(dataset, max_seq_length): if finetune_args.delta: if finetune_args.resume_peft != "": - if finetune_args.delta == "ssf": - peft_config = SSFConfig(target_modules=deltatuner_args.ssf_target_modules, - bias="none", - task_type="CAUSAL_LM", - ) - model = DeltaTunerModel.from_pretrained(model, finetune_args.resume_peft, config=peft_config, denas_config=deltatuner_args) + model = DeltaTunerModel.from_pretrained(model, finetune_args.resume_peft, denas_config=deltatuner_args) else: model = deltatuner.optimize(model, tokenizer, algo=finetune_args.delta, deltatuning_args=deltatuner_args) logger.info("***deltatuner optimized model parameter***") @@ -757,6 +758,37 @@ def concatenate_data(dataset, max_seq_length): training_args.output_dir, state_dict=unwrapped_model.state_dict() ) + if finetune_args.save_merged_model: + if isinstance(model, PeftModel): + model = model.merge_and_unload() + saved_dir = os.path.join(training_args.output_dir, "merged_model") + os.makedirs(saved_dir, exist_ok=True) + print(f"copy base model config to {saved_dir}") + os.system(f"cp {model_args.model_name_or_path}/* {saved_dir}") + print(f"remove unnecessary file from {model_args.model_name_or_path}") + os.system(f"rm {saved_dir}/*.bin* {saved_dir}/*.safetensors*") + print(f"Save merged model to {saved_dir}") + torch.save(model.state_dict(), os.path.join(saved_dir, "pytorch_model.bin")) + if finetune_args.delta == 'ssf': + if os.path.exists(finetune_args.merge_model_code_dir): + print(f"copy merged model code to {saved_dir}") + os.system(f"cp {finetune_args.merge_model_code_dir}/* {saved_dir}") + else: + raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), finetune_args.merge_model_code_dir) + pre_train_config_file = os.path.join(saved_dir, "config.json") + with open(pre_train_config_file, "r") as file: + config_json = json.load(file) + adapter_config_file = os.path.join(finetune_args.resume_peft, "adapter_config.json") + with open(adapter_config_file, "r") as file: + adapter_config_json = json.load(file) + config_json['target_modules'] = adapter_config_json['target_modules'] + + best_structure_file = os.path.join(finetune_args.resume_peft, "best_model_structure.txt") + if os.path.isfile(best_structure_file): + with open(best_structure_file, "r") as file: + best_structure_json = json.loads(file.readline().strip()) + config_json['best_model_structure'] = best_structure_json + # Evaluation if training_args.do_eval: logger.info("*** Evaluate ***") @@ -771,12 +803,6 @@ def concatenate_data(dataset, max_seq_length): trainer.log_metrics("eval", metrics) trainer.save_metrics("eval", metrics) - if finetune_args.save_merged_model: - if isinstance(model, PeftModel): - merged_model = model.merge_and_unload() - os.makedirs(os.path.join(training_args.output_dir,"merged_model"),exist_ok=True) - torch.save(merged_model.state_dict(),os.path.join(training_args.output_dir,"merged_model","pytorch_model.bin")) - print(f"Save merged model to {training_args.output_dir}") def profile_model(model, train_dataset, data_collator, args): from transformers import get_scheduler diff --git a/tests/deltatuner/cicd/run_denas_lora.sh b/tests/deltatuner/cicd/run_denas_lora.sh index 6b165109c..35226069d 100644 --- a/tests/deltatuner/cicd/run_denas_lora.sh +++ b/tests/deltatuner/cicd/run_denas_lora.sh @@ -7,56 +7,41 @@ pip uninstall wandb -y cd /home/vmagent/app/e2eaiok -mkdir -p log models - DATA_PATH="/home/vmagent/app/data" +LOG_PATH=$DATA_PATH"/dtuner_test/log" +MODEL_SAVE_PATH=$DATA_PATH"/dtuner_test/models" -# fine-tune mpt-7b with denas-lora -python example/instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path $DATA_PATH"/mpt-7b" \ - --train_file $DATA_PATH"/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --do_train \ - --do_eval \ - --validation_split_percentage 30 \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --output_dir models/mpt_denas-lora_model \ - --peft lora \ - --delta lora \ - --debugs --max_epochs 1 --population_num 1 --crossover_num 1 --mutation_num 1 --select_num 1 \ - --trust_remote_code True \ - --no_cuda \ - 2>&1 | tee log/mpt-denas-lora-run-1epoch.log +mkdir -p $LOG_PATH $MODEL_SAVE_PATH -# fine-tune llama2-7b with denas-lora -python example/instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path $DATA_PATH"/Llama-2-7b-hf" \ - --train_file $DATA_PATH"/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --do_train \ - --do_eval \ - --validation_split_percentage 30 \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --output_dir models/llama2_denas-lora_model \ - --peft lora \ - --delta lora \ - --debugs --max_epochs 1 --population_num 1 --crossover_num 1 --mutation_num 1 --select_num 1 \ - --trust_remote_code True \ - --no_cuda \ - 2>&1 | tee log/llama2-denas-lora-run-1epoch.log +# fine-tune with denas-lora +model_name_list="mpt-7b Llama-2-7b-hf" +for model_name in $model_name_list +do + model_name_or_path=${DATA_PATH}"/"${model_name} + model_save_path=${MODEL_SAVE_PATH}"/"${model_name}"_denas-lora" + log_save_path=$LOG_PATH"/"${model_name}"_denas-lora-1epoch.log" + python example/instruction_tuning_pipeline/finetune_clm.py \ + --model_name_or_path $model_name_or_path \ + --train_file $DATA_PATH"/alpaca_data.json" \ + --dataset_concatenation \ + --per_device_train_batch_size 8 \ + --per_device_eval_batch_size 8 \ + --gradient_accumulation_steps 1 \ + --do_train \ + --do_eval \ + --validation_split_percentage 30 \ + --learning_rate 1e-4 \ + --num_train_epochs 1 \ + --logging_steps 100 \ + --save_total_limit 1 \ + --log_level info \ + --save_strategy epoch \ + --output_dir $model_save_path \ + --peft lora \ + --delta lora \ + --denas True \ + --debugs --max_epochs 1 --population_num 1 --crossover_num 1 --mutation_num 1 --select_num 1 \ + --trust_remote_code True \ + --no_cuda \ + 2>&1 | tee $log_save_path +done diff --git a/tests/deltatuner/cicd/run_denas_ssf.sh b/tests/deltatuner/cicd/run_denas_ssf.sh index 07c4aef89..e62794cc2 100644 --- a/tests/deltatuner/cicd/run_denas_ssf.sh +++ b/tests/deltatuner/cicd/run_denas_ssf.sh @@ -6,38 +6,21 @@ pip uninstall wandb -y cd /home/vmagent/app/e2eaiok -mkdir -p log - DATA_PATH="/home/vmagent/app/data" +LOG_PATH=$DATA_PATH"/dtuner_test/log" +MODEL_SAVE_PATH=$DATA_PATH"/dtuner_test/models" -#run mpt with ssf and denas, bf16 -python example/instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/mpt-7b" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_train \ - --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --trust_remote_code True \ - --no_cuda \ - --output_dir "$DATA_PATH/mpt-7b-ssf-allmodules-denas-bf16" \ - --debugs --max_epochs 1 --population_num 1 --crossover_num 1 --mutation_num 1 --select_num 1 \ - --delta ssf \ - --denas True \ - 2>&1 | tee "log/mpt-7b-ssf-allmodules-denas-bf16-run-1epoch.log" +mkdir -p $LOG_PATH $MODEL_SAVE_PATH -#run llama with ssf and denas, bf16 -python example/instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/Llama-2-7b-hf" \ +# fine-tune with denas-ssf +model_name_list="mpt-7b Llama-2-7b-hf" +for model_name in $model_name_list +do + model_name_or_path=${DATA_PATH}"/"${model_name} + model_save_path=${MODEL_SAVE_PATH}"/"${model_name}"_denas-ssf" + log_save_path=$LOG_PATH"/"${model_name}"_denas-ssf-1epoch.log" + python example/instruction_tuning_pipeline/finetune_clm.py \ + --model_name_or_path $model_name_or_path \ --train_file "$DATA_PATH/alpaca_data.json" \ --dataset_concatenation \ --per_device_train_batch_size 8 \ @@ -54,8 +37,9 @@ python example/instruction_tuning_pipeline/finetune_clm.py \ --save_strategy epoch \ --trust_remote_code True \ --no_cuda \ - --output_dir "$DATA_PATH/llama2-7b-ssf-denas-bf16" \ + --output_dir $model_save_path \ --debugs --max_epochs 1 --population_num 1 --crossover_num 1 --mutation_num 1 --select_num 1 \ --delta ssf \ --denas True \ - 2>&1 | tee log/llama2-7b-ssf-denas-bf16-1epoch.log \ No newline at end of file + 2>&1 | tee $log_save_path +done diff --git a/tests/deltatuner/cicd/run_lora.sh b/tests/deltatuner/cicd/run_lora.sh index 8db7a6f86..923463ecb 100644 --- a/tests/deltatuner/cicd/run_lora.sh +++ b/tests/deltatuner/cicd/run_lora.sh @@ -7,56 +7,41 @@ pip uninstall wandb -y cd /home/vmagent/app/e2eaiok -mkdir -p log models - DATA_PATH="/home/vmagent/app/data" +LOG_PATH=$DATA_PATH"/dtuner_test/log" +MODEL_SAVE_PATH=$DATA_PATH"/dtuner_test/models" + +mkdir -p $LOG_PATH $MODEL_SAVE_PATH -# fine-tune mpt-7b with denas-lora -python example/instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path $DATA_PATH"/mpt-7b" \ - --train_file $DATA_PATH"/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --do_train \ - --do_eval \ - --validation_split_percentage 30 \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --output_dir models/mpt_lora_model \ - --peft lora \ - --denas False \ - --debugs \ - --trust_remote_code True \ - --no_cuda \ - 2>&1 | tee log/mpt-lora-run-1epoch.log -# fine-tune llama2-7b with denas-lora -python example/instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path $DATA_PATH"/Llama-2-7b-hf" \ - --train_file $DATA_PATH"/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --do_train \ - --do_eval \ - --validation_split_percentage 30 \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --output_dir models/llama2_lora_model \ - --peft lora \ - --denas False \ - --debugs \ - --trust_remote_code True \ - --no_cuda \ - 2>&1 | tee log/llama2-lora-run-1epoch.log +# fine-tune with lora +model_name_list="mpt-7b Llama-2-7b-hf" +for model_name in $model_name_list +do + model_name_or_path=${DATA_PATH}"/"${model_name} + model_save_path=${MODEL_SAVE_PATH}"/"${model_name}"-lora" + log_save_path=$LOG_PATH"/"${model_name}"-lora-1epoch.log" + python example/instruction_tuning_pipeline/finetune_clm.py \ + --model_name_or_path $model_name_or_path \ + --train_file $DATA_PATH"/alpaca_data.json" \ + --dataset_concatenation \ + --per_device_train_batch_size 8 \ + --per_device_eval_batch_size 8 \ + --gradient_accumulation_steps 1 \ + --do_train \ + --do_eval \ + --validation_split_percentage 30 \ + --learning_rate 1e-4 \ + --num_train_epochs 1 \ + --logging_steps 100 \ + --save_total_limit 1 \ + --log_level info \ + --save_strategy epoch \ + --output_dir $model_save_path \ + --peft lora \ + --denas False \ + --debugs \ + --trust_remote_code True \ + --no_cuda \ + 2>&1 | tee $log_save_path +done diff --git a/tests/deltatuner/cicd/run_ssf.sh b/tests/deltatuner/cicd/run_ssf.sh index 4bb1800e9..f1c3cbc0d 100644 --- a/tests/deltatuner/cicd/run_ssf.sh +++ b/tests/deltatuner/cicd/run_ssf.sh @@ -6,38 +6,21 @@ pip uninstall wandb -y cd /home/vmagent/app/e2eaiok -mkdir -p log - DATA_PATH="/home/vmagent/app/data" +LOG_PATH=$DATA_PATH"/dtuner_test/log" +MODEL_SAVE_PATH=$DATA_PATH"/dtuner_test/models" -#run mpt with ssf, bf16 -python example/instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/mpt-7b" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_train \ - --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --trust_remote_code True \ - --no_cuda \ - --output_dir "$DATA_PATH/mpt-7b-ssf-allmodules-bf16" \ - --delta ssf \ - --denas False \ - --debugs \ - 2>&1 | tee log/mpt-ssf-run-allmodules-bf16-1epoch.log - -#run llama2 with ssf, bf16 -python example/instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/Llama-2-7b-hf" \ +mkdir -p $LOG_PATH $MODEL_SAVE_PATH + +# fine-tune with ssf +model_name_list="mpt-7b Llama-2-7b-hf" +for model_name in $model_name_list +do + model_name_or_path=${DATA_PATH}"/"${model_name} + model_save_path=${MODEL_SAVE_PATH}"/"${model_name}"_ssf" + log_save_path=$LOG_PATH"/"${model_name}"_ssf-1epoch.log" + python example/instruction_tuning_pipeline/finetune_clm.py \ + --model_name_or_path $model_name_or_path \ --train_file "$DATA_PATH/alpaca_data.json" \ --dataset_concatenation \ --per_device_train_batch_size 8 \ @@ -54,8 +37,9 @@ python example/instruction_tuning_pipeline/finetune_clm.py \ --save_strategy epoch \ --trust_remote_code True \ --no_cuda \ - --output_dir "$DATA_PATH/llama2-7b-ssf-bf16" \ + --output_dir $model_save_path \ --delta ssf \ --denas False \ --debugs \ - 2>&1 | tee log/llama2-7b-ssf-bf16-1epoch.log \ No newline at end of file + 2>&1 | tee $log_save_path +done diff --git a/tests/deltatuner/cicd/run_ssf_model.sh b/tests/deltatuner/cicd/run_ssf_model.sh new file mode 100644 index 000000000..a4e954abd --- /dev/null +++ b/tests/deltatuner/cicd/run_ssf_model.sh @@ -0,0 +1,47 @@ +set -x + +cd /home/vmagent/app/e2eaiok/e2eAIOK/deltatuner +pip install -e . + +cd /home/vmagent/app/e2eaiok + +DATA_PATH="/home/vmagent/app/data" +LOG_PATH=$DATA_PATH"/dtuner_test/log" +MODEL_SAVE_PATH=$DATA_PATH"/dtuner_test/models" + +mkdir -p $LOG_PATH $MODEL_SAVE_PATH + +# fine-tune with ssf +# mosaicml/mpt-7b gpt2 EleutherAI/gpt-j-6b bigscience/bloom-560m facebook/opt-125m EleutherAI/gpt-neo-125m tiiuae/falcon-7b +model_name_list="EleutherAI/gpt-j-6b bigscience/bloom-560m facebook/opt-125m EleutherAI/gpt-neo-125m tiiuae/falcon-7b" +for model_name in $model_name_list +do + model_name_or_path=${model_name} + short_model_name=`echo $model_name | cut -d/ -f2` + model_save_path=${MODEL_SAVE_PATH}"/"${short_model_name}"_ssf" + log_save_path=$LOG_PATH"/"${short_model_name}"_ssf-1epoch.log" + python example/instruction_tuning_pipeline/finetune_clm.py \ + --model_name_or_path $model_name_or_path \ + --train_file "$DATA_PATH/alpaca_data.json" \ + --dataset_concatenation \ + --per_device_train_batch_size 8 \ + --per_device_eval_batch_size 8 \ + --gradient_accumulation_steps 1 \ + --validation_split_percentage 30 \ + --do_train \ + --do_eval \ + --learning_rate 1e-4 \ + --num_train_epochs 1 \ + --logging_steps 100 \ + --save_total_limit 1 \ + --log_level info \ + --save_strategy epoch \ + --trust_remote_code True \ + --output_dir $model_save_path \ + --delta ssf \ + --denas False \ + --debugs \ + --no_cuda \ + 2>&1 | tee $log_save_path + # rm -rf ~/.cache/huggingface/hub +done diff --git a/tests/deltatuner/finetune/run_denas_lora.sh b/tests/deltatuner/finetune/run_denas_lora.sh index 801f4e6da..0904bb613 100644 --- a/tests/deltatuner/finetune/run_denas_lora.sh +++ b/tests/deltatuner/finetune/run_denas_lora.sh @@ -1,56 +1,48 @@ #!/bin/bash set -x -mkdir -p log models -# fine-tune mpt-7b with denas-lora -python example/instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "/home/vmagent/app/dataset/mpt-7b" \ - --train_file "/home/vmagent/app/dataset/stanford_alpaca/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --do_train \ - --do_eval \ - --validation_split_percentage 30 \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --output_dir models/mpt_denas-lora_model \ - --peft lora \ - --delta lora \ - --trust_remote_code True \ - --no_cuda \ - --bf16 True 2>&1 | tee log/mpt-denas-lora-run-1epoch.log +DATA_PATH="/home/vmagent/app/data" +LOG_PATH=$DATA_PATH"/dtuner_test/log" +MODEL_SAVE_PATH=$DATA_PATH"/dtuner_test/models" -# fine-tune llama2-7b with denas-lora -python example/instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "/home/vmagent/app/dataset/Llama-2-7b-hf" \ - --train_file "/home/vmagent/app/dataset/stanford_alpaca/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --do_train \ - --do_eval \ - --validation_split_percentage 30 \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --output_dir models/llama2_denas-lora_model \ - --peft lora \ - --delta lora \ - --trust_remote_code True \ - --no_cuda \ - --bf16 True 2>&1 | tee log/llama2-denas-lora-run-1epoch.log +mkdir -p $LOG_PATH $MODEL_SAVE_PATH +# fine-tune with denas-lora +model_name_list="mpt-7b Llama-2-7b-hf" +for model_name in $model_name_list +do + model_name_or_path=${DATA_PATH}"/"${model_name} + model_save_path=${MODEL_SAVE_PATH}"/"${model_name}"_denas-lora" + log_save_path=$LOG_PATH"/"${model_name}"_denas-lora-1epoch.log" + python example/instruction_tuning_pipeline/finetune_clm.py \ + --model_name_or_path $model_name_or_path \ + --train_file $DATA_PATH"/alpaca_data.json" \ + --dataset_concatenation \ + --per_device_train_batch_size 8 \ + --per_device_eval_batch_size 8 \ + --gradient_accumulation_steps 1 \ + --do_train \ + --do_eval \ + --validation_split_percentage 30 \ + --learning_rate 1e-4 \ + --num_train_epochs 1 \ + --logging_steps 100 \ + --save_total_limit 1 \ + --log_level info \ + --save_strategy epoch \ + --output_dir $model_save_path \ + --peft lora \ + --delta lora \ + --denas True \ + --trust_remote_code True \ + --no_cuda \ + 2>&1 | tee $log_save_path +done -# used for assign target modules to lora -# --lora_target_modules q_proj v_proj k_proj o_proj up_proj down_proj \ -# --lora_target_modules Wqkv out_proj up_proj down_proj \ \ No newline at end of file +########################## advanced options ########################## +# note 0: used for assign target modules + # llama: --lora_target_modules q_proj v_proj k_proj o_proj up_proj down_proj \ + # mpt: --lora_target_modules Wqkv out_proj up_proj down_proj \ +# note 1: used for 4th Xeon or later (SPR etc.): --bf16 --no_cuda +# note 2: used for 3th Xeon or before (ICX etc.): --no_cuda +# note 3: used for GPU server: --fp16 \ No newline at end of file diff --git a/tests/deltatuner/finetune/run_denas_ssf.sh b/tests/deltatuner/finetune/run_denas_ssf.sh new file mode 100644 index 000000000..e1b68ab04 --- /dev/null +++ b/tests/deltatuner/finetune/run_denas_ssf.sh @@ -0,0 +1,47 @@ +set -x + +DATA_PATH="/home/vmagent/app/data" +LOG_PATH=$DATA_PATH"/dtuner_test/log" +MODEL_SAVE_PATH=$DATA_PATH"/dtuner_test/models" + +mkdir -p $LOG_PATH $MODEL_SAVE_PATH + +# fine-tune with denas-ssf +model_name_list="mpt-7b Llama-2-7b-hf" +for model_name in $model_name_list +do + model_name_or_path=${DATA_PATH}"/"${model_name} + model_save_path=${MODEL_SAVE_PATH}"/"${model_name}"_denas-ssf" + log_save_path=$LOG_PATH"/"${model_name}"_denas-ssf-1epoch.log" + python example/instruction_tuning_pipeline/finetune_clm.py \ + --model_name_or_path $model_name_or_path \ + --train_file "$DATA_PATH/alpaca_data.json" \ + --dataset_concatenation \ + --per_device_train_batch_size 8 \ + --per_device_eval_batch_size 8 \ + --gradient_accumulation_steps 1 \ + --validation_split_percentage 30 \ + --do_train \ + --do_eval \ + --learning_rate 1e-4 \ + --num_train_epochs 1 \ + --logging_steps 100 \ + --save_total_limit 1 \ + --log_level info \ + --save_strategy epoch \ + --trust_remote_code True \ + --no_cuda \ + --output_dir $model_save_path \ + --delta ssf \ + --denas True \ + 2>&1 | tee $log_save_path +done + + +########################## advanced options ########################## +# note 0: used for assign target modules + # llama: --ssf_target_module q_proj v_proj k_proj o_proj up_proj down_proj \ + # mpt: --ssf_target_module Wqkv out_proj up_proj down_proj \ +# note 1: used for 4th Xeon or later (SPR etc.): --bf16 --no_cuda +# note 2: used for 3th Xeon or before (ICX etc.): --no_cuda +# note 3: used for GPU server: --fp16 \ No newline at end of file diff --git a/tests/deltatuner/finetune/run_lora.sh b/tests/deltatuner/finetune/run_lora.sh index ba4b331ae..91a8bf5b4 100644 --- a/tests/deltatuner/finetune/run_lora.sh +++ b/tests/deltatuner/finetune/run_lora.sh @@ -1,56 +1,49 @@ #!/bin/bash set -x -mkdir -p log models -# fine-tune mpt-7b with lora -python example/instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "/home/vmagent/app/dataset/mpt-7b" \ - --train_file "/home/vmagent/app/dataset/stanford_alpaca/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --do_train \ - --do_eval \ - --validation_split_percentage 30 \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --output_dir models/mpt_lora_model \ - --peft lora \ - --denas False \ - --trust_remote_code True \ - --no_cuda \ - --bf16 True 2>&1 | tee log/mpt-lora-run-1epoch.log +DATA_PATH="/home/vmagent/app/data" +LOG_PATH=$DATA_PATH"/dtuner_test/log" +MODEL_SAVE_PATH=$DATA_PATH"/dtuner_test/models" -# fine-tune llama2-7b with lora -python example/instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "/home/vmagent/app/dataset/Llama-2-7b-hf" \ - --train_file "/home/vmagent/app/dataset/stanford_alpaca/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --do_train \ - --do_eval \ - --validation_split_percentage 30 \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --output_dir models/llama2_lora_model \ - --peft lora \ - --denas False \ - --trust_remote_code True \ - --no_cuda \ - --bf16 True 2>&1 | tee log/llama2-lora-run-1epoch.log +mkdir -p $LOG_PATH $MODEL_SAVE_PATH -# used for assign target modules to lora -# --lora_target_modules q_proj v_proj k_proj o_proj up_proj down_proj \ -# --lora_target_modules Wqkv out_proj up_proj down_proj \ \ No newline at end of file +# fine-tune with lora +model_name_list="mpt-7b Llama-2-7b-hf" +for model_name in $model_name_list +do + model_name_or_path=${DATA_PATH}"/"${model_name} + model_save_path=${MODEL_SAVE_PATH}"/"${model_name}"-lora" + log_save_path=$LOG_PATH"/"${model_name}"-lora-1epoch.log" + python example/instruction_tuning_pipeline/finetune_clm.py \ + --model_name_or_path $model_name_or_path \ + --train_file $DATA_PATH"/alpaca_data.json" \ + --dataset_concatenation \ + --per_device_train_batch_size 8 \ + --per_device_eval_batch_size 8 \ + --gradient_accumulation_steps 1 \ + --do_train \ + --do_eval \ + --validation_split_percentage 30 \ + --learning_rate 1e-4 \ + --num_train_epochs 1 \ + --logging_steps 100 \ + --save_total_limit 1 \ + --log_level info \ + --save_strategy epoch \ + --output_dir $model_save_path \ + --peft lora \ + --denas False \ + --trust_remote_code True \ + --no_cuda \ + 2>&1 | tee $log_save_path +done + + +########################## advanced options ########################## +# note 0: used for assign target modules + # llama: --lora_target_modules q_proj v_proj k_proj o_proj up_proj down_proj \ + # mpt: --lora_target_modules Wqkv out_proj up_proj down_proj \ +# note 1: used for 4th Xeon or later (SPR etc.): --bf16 --no_cuda +# note 2: used for 3th Xeon or before (ICX etc.): --no_cuda +# note 3: used for GPU server: --fp16 diff --git a/tests/deltatuner/finetune/run_ssf.sh b/tests/deltatuner/finetune/run_ssf.sh new file mode 100644 index 000000000..c9732c0ff --- /dev/null +++ b/tests/deltatuner/finetune/run_ssf.sh @@ -0,0 +1,47 @@ +set -x + +DATA_PATH="/home/vmagent/app/data" +LOG_PATH=$DATA_PATH"/dtuner_test/log" +MODEL_SAVE_PATH=$DATA_PATH"/dtuner_test/models" + +mkdir -p $LOG_PATH $MODEL_SAVE_PATH + +# fine-tune with ssf +model_name_list="mpt-7b Llama-2-7b-hf" +for model_name in $model_name_list +do + model_name_or_path=${DATA_PATH}"/"${model_name} + model_save_path=${MODEL_SAVE_PATH}"/"${model_name}"_ssf" + log_save_path=$LOG_PATH"/"${model_name}"_ssf-1epoch.log" + python example/instruction_tuning_pipeline/finetune_clm.py \ + --model_name_or_path $model_name_or_path \ + --train_file "$DATA_PATH/alpaca_data.json" \ + --dataset_concatenation \ + --per_device_train_batch_size 8 \ + --per_device_eval_batch_size 8 \ + --gradient_accumulation_steps 1 \ + --validation_split_percentage 30 \ + --do_train \ + --do_eval \ + --learning_rate 1e-4 \ + --num_train_epochs 1 \ + --logging_steps 100 \ + --save_total_limit 1 \ + --log_level info \ + --save_strategy epoch \ + --trust_remote_code True \ + --no_cuda \ + --output_dir $model_save_path \ + --delta ssf \ + --denas False \ + 2>&1 | tee $log_save_path +done + + +########################## advanced options ########################## +# note 0: used for assign target modules + # llama: --ssf_target_module q_proj v_proj k_proj o_proj up_proj down_proj \ + # mpt: --ssf_target_module Wqkv out_proj up_proj down_proj \ +# note 1: used for 4th Xeon or later (SPR etc.): --bf16 --no_cuda +# note 2: used for 3th Xeon or before (ICX etc.): --no_cuda +# note 3: used for GPU server: --fp16 \ No newline at end of file diff --git a/tests/deltatuner/finetune/ssf/llama2-7b-lora.sh b/tests/deltatuner/finetune/ssf/llama2-7b-lora.sh deleted file mode 100755 index 662074530..000000000 --- a/tests/deltatuner/finetune/ssf/llama2-7b-lora.sh +++ /dev/null @@ -1,24 +0,0 @@ -DATA_PATH="/home/data" - -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/Llama-2-7b-hf" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_train \ - --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --trust_remote_code True \ - --no_cuda \ - --output_dir "$DATA_PATH/llama2-7b-lora" \ - --peft lora \ - --denas False \ - | tee llama2-7b-lora-1epoch.log diff --git a/tests/deltatuner/finetune/ssf/llama2-7b-ssf-allmodules.sh b/tests/deltatuner/finetune/ssf/llama2-7b-ssf-allmodules.sh deleted file mode 100755 index 7077fda90..000000000 --- a/tests/deltatuner/finetune/ssf/llama2-7b-ssf-allmodules.sh +++ /dev/null @@ -1,135 +0,0 @@ -DATA_PATH="/home/data" - -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/Llama-2-7b-hf" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_train \ - --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --trust_remote_code True \ - --no_cuda \ - --output_dir "$DATA_PATH/llama2-7b-ssf-allmodules" \ - --ssf_target_modules q_proj v_proj k_proj o_proj up_proj down_proj \ - --delta ssf \ - --denas False \ - | tee llama2-7b-ssf-allmodules-1epoch.log - -#bf16 -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/Llama-2-7b-hf" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_train \ - --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --trust_remote_code True \ - --no_cuda \ - --output_dir "$DATA_PATH/llama2-7b-ssf-allmodules-bf16" \ - --ssf_target_modules q_proj v_proj k_proj o_proj up_proj down_proj \ - --delta ssf \ - --bf16 True \ - --denas False \ - | tee llama2-7b-ssf-allmodules-bf16-1epoch.log - -#merge -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/Llama-2-7b-hf" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --trust_remote_code True \ - --no_cuda \ - --output_dir "$DATA_PATH/llama2-7b-ssf-allmodules-merge" \ - --ssf_target_modules q_proj v_proj k_proj o_proj up_proj down_proj \ - --delta ssf \ - --resume_peft "$DATA_PATH/llama2-7b-ssf-allmodules" \ - --save_merged_model True - -#merge, bf16 -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/Llama-2-7b-hf" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --trust_remote_code True \ - --no_cuda \ - --output_dir "$DATA_PATH/llama2-7b-ssf-allmodules-bf16-merge" \ - --ssf_target_modules q_proj v_proj k_proj o_proj up_proj down_proj \ - --delta ssf \ - --resume_peft "$DATA_PATH/llama2-7b-ssf-allmodules-bf16" \ - --save_merged_model True \ - --bf16 True - -#evaluate merged model -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/llama2-7b-ssf-allmodules-merge/merged_model" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_eval \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --trust_remote_code True \ - --no_cuda \ - --output_dir "$DATA_PATH/llama2-7b-ssf-allmodules-merge/eval_merged" \ - --debugs - -#evaluate merged model, bf16 -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/llama2-7b-ssf-allmodules-bf16-merge/merged_model" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_eval \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --trust_remote_code True \ - --no_cuda \ - --output_dir "$DATA_PATH/llama2-7b-ssf-allmodules-bf16-merge/eval_merged" \ - --bf16 True \ - --debugs \ No newline at end of file diff --git a/tests/deltatuner/finetune/ssf/llama2-7b-ssf-denas.sh b/tests/deltatuner/finetune/ssf/llama2-7b-ssf-denas.sh deleted file mode 100755 index aa6fb3704..000000000 --- a/tests/deltatuner/finetune/ssf/llama2-7b-ssf-denas.sh +++ /dev/null @@ -1,157 +0,0 @@ -DATA_PATH="/home/data" - -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/Llama-2-7b-hf" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_train \ - --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --trust_remote_code True \ - --no_cuda \ - --output_dir "$DATA_PATH/llama2-7b-ssf-denas" \ - --delta ssf \ - --denas True \ - | tee llama2-7b-ssf-denas-1epoch.log - -#bf16 -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/Llama-2-7b-hf" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_train \ - --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --trust_remote_code True \ - --no_cuda \ - --output_dir "$DATA_PATH/llama2-7b-ssf-denas-bf16" \ - --delta ssf \ - --denas True \ - --bf16 True \ - | tee llama2-7b-ssf-denas-bf16-1epoch.log - -#evaluate model, bf16 -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/Llama-2-7b-hf" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_eval \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --trust_remote_code True \ - --no_cuda \ - --output_dir "$DATA_PATH/llama2-7b-ssf-denas-bf16/eval" \ - --delta ssf \ - --bf16 True \ - --resume_peft "$DATA_PATH/llama2-7b-ssf-denas-bf16" \ - --denas "$DATA_PATH/llama2-7b-ssf-denas-bf16/best_model_structure.txt" \ - --debugs - -#merge -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/Llama-2-7b-hf" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --trust_remote_code True \ - --no_cuda \ - --output_dir "$DATA_PATH/llama2-7b-ssf-denas-merge" \ - --delta ssf \ - --resume_peft "$DATA_PATH/llama2-7b-ssf-denas" \ - --save_merged_model True \ - --denas "$DATA_PATH/llama2-7b-ssf-denas/best_model_structure.txt" \ - --debugs - -#merge, bf16 -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/Llama-2-7b-hf" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --trust_remote_code True \ - --no_cuda \ - --output_dir "$DATA_PATH/llama2-7b-ssf-denas-bf16-merge" \ - --delta ssf \ - --bf16 True \ - --resume_peft "$DATA_PATH/llama2-7b-ssf-denas-bf16" \ - --save_merged_model True \ - --denas "$DATA_PATH/llama2-7b-ssf-denas-bf16/best_model_structure.txt" \ - --debugs - -#evaluate merged model -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/llama2-7b-ssf-denas-merge/merged_model" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_eval \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --trust_remote_code True \ - --no_cuda \ - --output_dir "$DATA_PATH/llama2-7b-ssf-denas-merge/eval_merge" \ - --debugs - -#evaluate merged model, bf16 -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/llama2-7b-ssf-denas-bf16-merge/merged_model" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_eval \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --trust_remote_code True \ - --no_cuda \ - --output_dir "$DATA_PATH/llama2-7b-ssf-denas-bf16-merge/eval_merge" \ - --bf16 True \ - --debugs \ No newline at end of file diff --git a/tests/deltatuner/finetune/ssf/mpt-7b-full.sh b/tests/deltatuner/finetune/ssf/mpt-7b-full.sh deleted file mode 100755 index 27211fc0d..000000000 --- a/tests/deltatuner/finetune/ssf/mpt-7b-full.sh +++ /dev/null @@ -1,23 +0,0 @@ -DATA_PATH="/home/data" - -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/mpt-7b" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_train \ - --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --trust_remote_code True \ - --tokenizer_name "$DATA_PATH/gpt-neox-20b" \ - --no_cuda \ - --output_dir "$DATA_PATH/mpt-7b-full" \ - | tee mpt-lora-run-1epoch.log diff --git a/tests/deltatuner/finetune/ssf/mpt-7b-lora.sh b/tests/deltatuner/finetune/ssf/mpt-7b-lora.sh deleted file mode 100755 index 8b9e695f3..000000000 --- a/tests/deltatuner/finetune/ssf/mpt-7b-lora.sh +++ /dev/null @@ -1,24 +0,0 @@ -DATA_PATH="/home/data" - -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/mpt-7b" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_train \ - --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --trust_remote_code True \ - --tokenizer_name "$DATA_PATH/gpt-neox-20b" \ - --no_cuda \ - --output_dir "$DATA_PATH/mpt-7b-lora" \ - --peft lora \ - | tee mpt-lora-run-1epoch.log diff --git a/tests/deltatuner/finetune/ssf/mpt-7b-ssf-allmodules-denas.sh b/tests/deltatuner/finetune/ssf/mpt-7b-ssf-allmodules-denas.sh deleted file mode 100755 index 251152050..000000000 --- a/tests/deltatuner/finetune/ssf/mpt-7b-ssf-allmodules-denas.sh +++ /dev/null @@ -1,120 +0,0 @@ -DATA_PATH="/home/data" - -#bf16 -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/mpt-7b" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_train \ - --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --trust_remote_code True \ - --tokenizer_name "$DATA_PATH/gpt-neox-20b" \ - --no_cuda \ - --output_dir "$DATA_PATH/mpt-7b-ssf-allmodules-denas-bf16" \ - --delta ssf \ - --ssf_target_modules Wqkv out_proj up_proj down_proj \ - --bf16 True \ - --denas True \ - | tee "mpt-7b-ssf-allmodules-denas-bf16-run-1epoch.log" - -#merge -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/mpt-7b" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --trust_remote_code True \ - --tokenizer_name "$DATA_PATH/gpt-neox-20b" \ - --no_cuda \ - --output_dir "$DATA_PATH/mpt-7b-ssf-allmodules-denas-bf16-merge" \ - --delta ssf \ - --ssf_target_modules Wqkv out_proj up_proj down_proj \ - --resume_peft "$DATA_PATH/mpt-7b-ssf-allmodules-denas-bf16" \ - --save_merged_model True \ - --denas "$DATA_PATH/mpt-7b-ssf-allmodules-denas-bf16/best_model_structure.txt" \ - --debugs - -#merge,bf16 -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/mpt-7b" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --trust_remote_code True \ - --tokenizer_name "$DATA_PATH/gpt-neox-20b" \ - --no_cuda \ - --output_dir "$DATA_PATH/mpt-7b-ssf-allmodules-denas-bf16-merge" \ - --delta ssf \ - --ssf_target_modules Wqkv out_proj up_proj down_proj \ - --bf16 True \ - --resume_peft "$DATA_PATH/mpt-7b-ssf-allmodules-denas-bf16" \ - --save_merged_model True \ - --denas "$DATA_PATH/mpt-7b-ssf-allmodules-denas-bf16/best_model_structure.txt" \ - --debugs - -#evaluate merged model -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/mpt-7b-ssf-allmodules-denas-bf16-merge/merged_model" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_eval \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --trust_remote_code True \ - --tokenizer_name "$DATA_PATH/gpt-neox-20b" \ - --no_cuda \ - --output_dir "$DATA_PATH/mpt-7b-ssf-allmodules-denas-bf16-merge/eval_merge" \ - --debugs - -#evaluate merged model, bf16 -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/mpt-7b-ssf-allmodules-denas-bf16-merge/merged_model" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_eval \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --trust_remote_code True \ - --tokenizer_name "$DATA_PATH/gpt-neox-20b" \ - --no_cuda \ - --output_dir "$DATA_PATH/mpt-7b-ssf-allmodules-denas-bf16-merge/eval_merge" \ - --bf16 True \ - --debugs \ No newline at end of file diff --git a/tests/deltatuner/finetune/ssf/mpt-7b-ssf-allmodules.sh b/tests/deltatuner/finetune/ssf/mpt-7b-ssf-allmodules.sh deleted file mode 100755 index ff9f34385..000000000 --- a/tests/deltatuner/finetune/ssf/mpt-7b-ssf-allmodules.sh +++ /dev/null @@ -1,98 +0,0 @@ -DATA_PATH="/home/data" - -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/mpt-7b" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_train \ - --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --trust_remote_code True \ - --tokenizer_name "$DATA_PATH/gpt-neox-20b" \ - --no_cuda \ - --output_dir "$DATA_PATH/mpt-7b-ssf-allmodules" \ - --delta ssf \ - --denas False \ - --ssf_target_modules Wqkv out_proj up_proj down_proj \ - | tee mpt-ssf-run-allmodules-1epoch.log - -# bf16 -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/mpt-7b" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_train \ - --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --trust_remote_code True \ - --tokenizer_name "$DATA_PATH/gpt-neox-20b" \ - --no_cuda \ - --output_dir "$DATA_PATH/mpt-7b-ssf-allmodules-bf16" \ - --delta ssf \ - --denas False \ - --ssf_target_modules Wqkv out_proj up_proj down_proj \ - --bf16 True \ - | tee mpt-ssf-run-allmodules-bf16-1epoch.log - -# merge, bf16 -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/mpt-7b" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --trust_remote_code True \ - --tokenizer_name "$DATA_PATH/gpt-neox-20b" \ - --no_cuda \ - --output_dir "$DATA_PATH/mpt-7b-ssf-allmodules-bf16-merge" \ - --delta ssf \ - --ssf_target_modules Wqkv out_proj up_proj down_proj \ - --bf16 True \ - --resume_peft "$DATA_PATH/mpt-7b-ssf-allmodules-bf16" \ - --save_merged_model True - -#evaluate merged model, bf16 -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/mpt-7b-ssf-allmodules-bf16-merge/merged_model" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_eval \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --trust_remote_code True \ - --tokenizer_name "$DATA_PATH/gpt-neox-20b" \ - --no_cuda \ - --output_dir "$DATA_PATH/mpt-7b-ssf-allmodules-bf16-merge/eval_merged" \ - --bf16 True \ - --debugs diff --git a/tests/deltatuner/finetune/ssf/mpt-7b-ssf.sh b/tests/deltatuner/finetune/ssf/mpt-7b-ssf.sh deleted file mode 100755 index f4d301b45..000000000 --- a/tests/deltatuner/finetune/ssf/mpt-7b-ssf.sh +++ /dev/null @@ -1,51 +0,0 @@ -DATA_PATH="/home/data" - -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/mpt-7b" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_train \ - --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --trust_remote_code True \ - --tokenizer_name "$DATA_PATH/gpt-neox-20b" \ - --no_cuda \ - --output_dir "$DATA_PATH/mpt-7b-ssf" \ - --denas False \ - --delta ssf \ - | tee mpt-ssf-run-1epoch.log - -# bf16 -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/mpt-7b" \ - --train_file "$DATA_PATH/alpaca_data.json" \ - --dataset_concatenation \ - --per_device_train_batch_size 8 \ - --per_device_eval_batch_size 8 \ - --gradient_accumulation_steps 1 \ - --validation_split_percentage 30 \ - --do_train \ - --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ - --save_total_limit 1 \ - --log_level info \ - --save_strategy epoch \ - --trust_remote_code True \ - --tokenizer_name "$DATA_PATH/gpt-neox-20b" \ - --no_cuda \ - --output_dir "$DATA_PATH/mpt-7b-ssf-bf16" \ - --delta ssf \ - --bf16 True \ - --denas False \ - | tee mpt-ssf-run-1epoch.log \ No newline at end of file diff --git a/tests/deltatuner/finetune/ssf/readme.md b/tests/deltatuner/merge_model/readme.md similarity index 81% rename from tests/deltatuner/finetune/ssf/readme.md rename to tests/deltatuner/merge_model/readme.md index 25bcbd9c4..517c8a45e 100644 --- a/tests/deltatuner/finetune/ssf/readme.md +++ b/tests/deltatuner/merge_model/readme.md @@ -1,6 +1,5 @@ -# Run Deltatuner with ssf +## Run Deltatuner with Merged model -## Llama2-7b ### 1. Finetune the model If use Denas, can use command: @@ -28,7 +27,6 @@ python instruction_tuning_pipeline/finetune_clm.py \ --output_dir "$DATA_PATH/llama2-7b-ssf-denas-bf16" \ --delta ssf \ --denas True \ - --bf16 True \ | tee llama2-7b-ssf-denas-bf16-1epoch.log ``` @@ -40,13 +38,10 @@ python instruction_tuning_pipeline/finetune_clm.py \ --model_name_or_path "$DATA_PATH/Llama-2-7b-hf" \ --train_file "$DATA_PATH/alpaca_data.json" \ --dataset_concatenation \ - --per_device_train_batch_size 8 \ --per_device_eval_batch_size 8 \ --gradient_accumulation_steps 1 \ --validation_split_percentage 30 \ --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ --logging_steps 100 \ --save_total_limit 1 \ --log_level info \ @@ -55,22 +50,18 @@ python instruction_tuning_pipeline/finetune_clm.py \ --no_cuda \ --output_dir "$DATA_PATH/llama2-7b-ssf-denas-bf16-merge" \ --delta ssf \ - --bf16 True \ --resume_peft "$DATA_PATH/llama2-7b-ssf-denas-bf16" \ --save_merged_model True \ - --denas "$DATA_PATH/llama2-7b-ssf-denas-bf16/best_model_structure.txt" \ + --merge_model_code_dir "instruction_tuning_pipeline/models/llama2-ssf" \ --debugs ``` -### 3. Evaluate merged model As ssf will enable bias, while the default Llama2 disable all the bias, to enable the full parameters of the adapter, we need to change the model definition. -First copy the updated model codes with the merged weights. -```shell -cp instruction_tuning_pipeline/models/llama2-ssf/* $DATA_PATH/llama2-7b-ssf-denas-bf16-merge/merged_model -``` +First, specify the `merge_model_code_dir` args, it will copy the updated model codes with the merged weights. -Then update the "best_model_structure" and "target_modules" setting in config.json. if not enable denas and not change "target_modules" default settings, can skip correpsonding setting. +Then it will automatically update the "best_model_structure" and "target_modules" setting in `config.json`. if "denas" or "target_modules" are not enabled/changed, it will skip the corresponding setting. +The changed `config.json` looks like this: ```shell ... "best_model_structure": {"num_hidden_layers": [1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1]}, # change to your best structure, skip to keep default @@ -78,6 +69,8 @@ Then update the "best_model_structure" and "target_modules" setting in config.js ... ``` +### 3. Evaluate merged model + Finally we can directly evalute the merged model. ```shell python instruction_tuning_pipeline/finetune_clm.py \ @@ -94,5 +87,4 @@ python instruction_tuning_pipeline/finetune_clm.py \ --trust_remote_code True \ --no_cuda \ --output_dir "$DATA_PATH/llama2-7b-ssf-denas-bf16-merge/eval_merge" \ - --bf16 True ``` \ No newline at end of file diff --git a/tests/deltatuner/finetune/ssf/llama2-7b-ssf.sh b/tests/deltatuner/merge_model/ssf-merge-test.sh similarity index 51% rename from tests/deltatuner/finetune/ssf/llama2-7b-ssf.sh rename to tests/deltatuner/merge_model/ssf-merge-test.sh index 39299cf36..f1bfbcefe 100755 --- a/tests/deltatuner/finetune/ssf/llama2-7b-ssf.sh +++ b/tests/deltatuner/merge_model/ssf-merge-test.sh @@ -1,49 +1,43 @@ -DATA_PATH="/home/data" +DATA_PATH="/home/vmagent/app/data" -python instruction_tuning_pipeline/finetune_clm.py \ + +# merge model +python example/instruction_tuning_pipeline/finetune_clm.py \ --model_name_or_path "$DATA_PATH/Llama-2-7b-hf" \ --train_file "$DATA_PATH/alpaca_data.json" \ --dataset_concatenation \ - --per_device_train_batch_size 8 \ --per_device_eval_batch_size 8 \ --gradient_accumulation_steps 1 \ --validation_split_percentage 30 \ - --do_train \ --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ --save_total_limit 1 \ --log_level info \ --save_strategy epoch \ --trust_remote_code True \ --no_cuda \ - --output_dir "$DATA_PATH/llama2-7b-ssf" \ + --output_dir "$DATA_PATH/dtuner_test/models/llama2-7b-ssf-denas-bf16-merge" \ --delta ssf \ - --denas False \ - | tee llama2-7b-ssf-1epoch.log + --resume_peft "$DATA_PATH/dtuner_test/models/llama2-7b-ssf-denas-bf16" \ + --save_merged_model True \ + --merge_model_code_dir $DATA_PATH"/dtuner_test/ssf_models_code/llama-7b-ssf" \ + --bf16 True \ + --debugs -#bf16 -python instruction_tuning_pipeline/finetune_clm.py \ - --model_name_or_path "$DATA_PATH/Llama-2-7b-hf" \ + +# evaluate merged model +python example/instruction_tuning_pipeline/finetune_clm.py \ + --model_name_or_path $DATA_PATH"/dtuner_test/models/llama2-7b-ssf-denas-bf16-merge/merged_model" \ --train_file "$DATA_PATH/alpaca_data.json" \ --dataset_concatenation \ - --per_device_train_batch_size 8 \ --per_device_eval_batch_size 8 \ --gradient_accumulation_steps 1 \ --validation_split_percentage 30 \ - --do_train \ --do_eval \ - --learning_rate 1e-4 \ - --num_train_epochs 1 \ - --logging_steps 100 \ --save_total_limit 1 \ --log_level info \ - --save_strategy epoch \ --trust_remote_code True \ --no_cuda \ - --output_dir "$DATA_PATH/llama2-7b-ssf-bf16" \ - --delta ssf \ --bf16 True \ - --denas False \ - | tee llama2-7b-ssf-bf16-1epoch.log \ No newline at end of file + --output_dir $DATA_PATH"/dtuner_test/models/llama2-7b-ssf-denas-bf16-merge/eval_merge" \ + --debugs + From 392d460b65e87ddb01a5ac5557e33b62da6f4133 Mon Sep 17 00:00:00 2001 From: Yao Qing Date: Thu, 12 Oct 2023 02:23:54 +0800 Subject: [PATCH 07/47] Support logger and statistics in operation. (#379) --- RecDP/pyrecdp/LLM/TextPipeline.py | 82 +++++------ RecDP/pyrecdp/primitives/operations/base.py | 130 +++++++++++++----- .../primitives/operations/logging_utils.py | 13 ++ .../primitives/operations/text_filter.py | 22 ++- RecDP/setup.py | 3 +- 5 files changed, 162 insertions(+), 88 deletions(-) create mode 100644 RecDP/pyrecdp/primitives/operations/logging_utils.py diff --git a/RecDP/pyrecdp/LLM/TextPipeline.py b/RecDP/pyrecdp/LLM/TextPipeline.py index e71823d08..353d40f28 100644 --- a/RecDP/pyrecdp/LLM/TextPipeline.py +++ b/RecDP/pyrecdp/LLM/TextPipeline.py @@ -15,28 +15,27 @@ import time import os import psutil - -logging.basicConfig(format='%(asctime)s %(levelname)s:%(message)s', level=logging.ERROR, datefmt='%I:%M:%S') -logger = logging.getLogger(__name__) +from pyrecdp.primitives.operations.logging_utils import logger total_mem = int(psutil.virtual_memory().total * 0.6) total_cores = psutil.cpu_count(logical=False) + class TextPipeline(BasePipeline): def __init__(self, pipeline_file=None): super().__init__() if pipeline_file != None: self.import_from_yaml(pipeline_file) else: - #add a data set input place holder + # add a data set input place holder op = DatasetReader() self.add_operation(op) - + def __del__(self): if hasattr(self, 'engine_name') and self.engine_name == 'ray': if ray.is_initialized(): ray.shutdown() - + def check_platform(self, executable_sequence): is_spark = True is_ray = True @@ -54,18 +53,19 @@ def check_platform(self, executable_sequence): elif is_spark: return 'spark' else: - print(f"We can't identify an uniform engine for this pipeline. \n Operations work on Ray are {ray_list}. \n Operations work on Spark are {spark_list}") + print( + f"We can't identify an uniform engine for this pipeline. \n Operations work on Ray are {ray_list}. \n Operations work on Spark are {spark_list}") return 'mixed' - - def execute(self, ds = None): + + def execute(self, ds=None): # prepare pipeline if not hasattr(self, 'executable_pipeline') or not hasattr(self, 'executable_sequence'): self.executable_pipeline, self.executable_sequence = self.create_executable_pipeline() executable_pipeline = self.executable_pipeline executable_sequence = self.executable_sequence - + engine_name = self.check_platform(executable_sequence) - + if engine_name == 'ray': print("init ray") if not ray.is_initialized(): @@ -103,18 +103,18 @@ def execute(self, ds = None): if isinstance(ds, DataFrame): ds = ds.cache() total_len = ds.count() - + self.engine_name = engine_name - + # fetch result return ds - - def add_operation(self, config): + + def add_operation(self, config): # get current max operator id max_idx = self.pipeline.get_max_idx() cur_idx = max_idx + 1 find_children_skip = False - + if not isinstance(config, dict): op = config if max_idx == -1: @@ -122,7 +122,7 @@ def add_operation(self, config): else: pipeline_chain = self.to_chain() leaf_child = [pipeline_chain[-1]] - + config = { "children": leaf_child, "inline_function": op, @@ -130,24 +130,24 @@ def add_operation(self, config): find_children_skip = True children = config["children"] inline_function = config["inline_function"] - + if not isinstance(children, list) and children is not None: children = [children] - + # ====== Start to add it to pipeline ====== # if isinstance(inline_function, types.FunctionType): config = { "func_name": inline_function, } self.pipeline[cur_idx] = Operation( - cur_idx, children, output = None, op = "ray_python", config = config) + cur_idx, children, output=None, op="ray_python", config=config) elif isinstance(inline_function, BaseOperation): op_name = inline_function.op.op - #config = vars(inline_function) + # config = vars(inline_function) config = inline_function.op.config self.pipeline[cur_idx] = Operation( - cur_idx, children, output = None, op = op_name, config = config) - + cur_idx, children, output=None, op=op_name, config=config) + # we need to find nexts if find_children_skip: return self.pipeline @@ -166,21 +166,22 @@ def add_operation(self, config): for k, v in found.items(): self.pipeline[idx].children[k] = v return self.pipeline - + def add_operations(self, config_list): for op in config_list: self.add_operation(op) return self.pipeline - + def profile(self): # TODO: print analysis and log for each component. pass - + + class ResumableTextPipeline(TextPipeline): # Provide a pipeline for large dir. We will handle files one by one and resume when pipeline broken. def __init__(self, pipeline_file=None): super().__init__(pipeline_file) - + def execute(self): # Fix pipeline output_dir = "" @@ -194,8 +195,10 @@ def execute(self): output_dir = op.config['output_dir'] if output_dir == "": output_dir = f"ResumableTextPipeline_output_{time.strftime('%Y%m%d%H%M%S')}" - self.add_operation(PerfileParquetWriter(output_dir = output_dir)) - + self.add_operation(PerfileParquetWriter(output_dir=output_dir)) + + logger.add(os.path.join(output_dir, "pipeline.log")) + # prepare output dir and record system os.makedirs(output_dir, exist_ok=True) status_log_path = os.path.join(output_dir, 'status.log') @@ -208,15 +211,15 @@ def execute(self): done_files = [] self.export(os.path.join(output_dir, "pipeline.json")) self.plot() - + # prepare pipeline if not hasattr(self, 'executable_pipeline') or not hasattr(self, 'executable_sequence'): self.executable_pipeline, self.executable_sequence = self.create_executable_pipeline() executable_pipeline = self.executable_pipeline executable_sequence = self.executable_sequence - + engine_name = self.check_platform(executable_sequence) - + if engine_name != 'ray': raise NotImplementedError("ResumableTextPipeline only support operations with ray mode") self.engine_name = engine_name @@ -236,14 +239,14 @@ def execute(self): sub_pipelines = op.cache elif len(sub_pipelines) > 0: op_chain.append(op) - + for ds_reader, source_id in (pbar := tqdm(sub_pipelines, total=len(sub_pipelines))): # check if we should skip if source_id in done_files: print(f"skip {source_id}, it was processed in last round") del ds_reader continue - + # If not skip, then pbar.set_description(f"ResumableTextPipeline, current on {source_id}") start = time.time() @@ -259,10 +262,11 @@ def execute(self): status_tracker.flush() done_files.append(status_tracker) del ds_reader - - print(f"Completed!\nResumableTextPipeline will not return dataset, please check {output_dir} for verification.") - + for op in op_chain: + logger.info(f"{op.__class__.__name__}: {op.summarize()}") + + logger.info( + f"Completed! ResumableTextPipeline will not return dataset, please check {output_dir} for verification.") + # fetch result return None - - \ No newline at end of file diff --git a/RecDP/pyrecdp/primitives/operations/base.py b/RecDP/pyrecdp/primitives/operations/base.py index 2d7a6bbc7..67bd9738b 100644 --- a/RecDP/pyrecdp/primitives/operations/base.py +++ b/RecDP/pyrecdp/primitives/operations/base.py @@ -1,5 +1,10 @@ import json +from dataclasses import dataclass +from functools import wraps + import pandas as pd +from ray.data import Dataset + from .dataframe import * from pyspark.sql import DataFrame as SparkDataFrame from pyspark import RDD as SparkRDD @@ -7,27 +12,28 @@ from IPython.display import display from pyrecdp.core.registry import Registry + class Operation: def __init__(self, idx, children, output, op, config): self.idx = idx - self.children = children #input operation - self.output = output #output schema - self.op = op #func name - self.config = config #operation config + self.children = children # input operation + self.output = output # output schema + self.op = op # func name + self.config = config # operation config def __repr__(self): return repr(self.dump()) - + def dump(self): dump_dict = { - #'idx': self.idx, + # 'idx': self.idx, 'children': self.children, - #'output': self.output, + # 'output': self.output, 'op': self.op, 'config': dump_fix(self.config) } return dump_dict - + def instantiate(self): from .data import DataFrameOperation, DataLoader from .merge import MergeOperation @@ -40,7 +46,8 @@ def instantiate(self): from .type import TypeInferOperation from .tuple import TupleOperation from .custom import CustomOperation - from .encode import OnehotEncodeOperation, ListOnehotEncodeOperation, TargetEncodeOperation, CountEncodeOperation + from .encode import OnehotEncodeOperation, ListOnehotEncodeOperation, TargetEncodeOperation, \ + CountEncodeOperation from pyrecdp.primitives.estimators.lightgbm import LightGBM operations_ = { @@ -73,13 +80,16 @@ def instantiate(self): return FeaturetoolsOperation(self) except: raise NotImplementedError(f"operation {self.op} is not implemented.") - + @staticmethod def load(idx, dump_dict): obj = Operation(idx, dump_dict['children'], None, dump_dict['op'], dump_dict['config']) return obj + BASEOPERATORS = Registry('BaseOperation') + + class BaseOperation: def __init__(self, op_base): # option1: for get_function_pd use @@ -92,22 +102,22 @@ def __init__(self, op_base): self.support_spark_rdd = False self.support_spark_ray = False self.fast_without_dpp = False - + def __repr__(self) -> str: return self.op.op - + def describe(self) -> str: return str(self.op.dump()) - - def execute_pd(self, pipeline, trans_type = 'fit_transform'): + + def execute_pd(self, pipeline, trans_type='fit_transform'): _proc = self.get_function_pd(trans_type) if not self.op.children or len(self.op.children) == 0: pass else: child_output = pipeline[self.op.children[0]].cache self.cache = _proc(child_output) - - def execute_spark(self, pipeline, rdp, trans_type = 'fit_transform'): + + def execute_spark(self, pipeline, rdp, trans_type='fit_transform'): _convert = None if not self.op.children or len(self.op.children) == 0: pass @@ -144,37 +154,44 @@ def execute_spark(self, pipeline, rdp, trans_type = 'fit_transform'): _proc = self.get_function_pd(trans_type) else: raise ValueError(f"child cache is not recognized {child_output}") - + if _convert: child_output = _convert(child_output) pipeline[self.op.children[0]].cache = child_output self.cache = _proc(child_output) - #print(self.cache.take(1)) - - def get_function_spark_rdd(self, rdp, trans_type = 'fit_transform'): + # print(self.cache.take(1)) + + def get_function_spark_rdd(self, rdp, trans_type='fit_transform'): actual_func = self.get_function_pd(trans_type) + def transform(iter, *args): for x in iter: yield actual_func(x, *args) + def base_spark_feature_generator(rdd): return rdd.mapPartitions(transform) + return base_spark_feature_generator + LLMOPERATORS = Registry('BaseLLMOperation') + + class BaseLLMOperation(BaseOperation): - def __init__(self, args_dict = {}): + def __init__(self, args_dict={}): self.op = Operation(-1, None, [], f'{self.__class__.__name__}', args_dict) self.cache = None self.support_spark = False self.support_ray = True - + self.statistics = OperationStatistics(0, 0, 0, 0) + @classmethod def instantiate(cls, op_obj, config): ins = cls(**config) ins.op = op_obj return ins - - def execute_ray(self, pipeline, child_ds = None): + + def execute_ray(self, pipeline, child_ds=None): child_output = [] if child_ds is not None: self.cache = self.process_rayds(child_ds) @@ -184,7 +201,7 @@ def execute_ray(self, pipeline, child_ds = None): child_output.append(pipeline[op].cache) self.cache = self.process_rayds(*child_output) return self.cache - + def execute_spark(self, pipeline, rdp): child_output = [] children = self.op.children if self.op.children is not None else [] @@ -192,32 +209,75 @@ def execute_spark(self, pipeline, rdp): child_output.append(pipeline[op].cache) self.cache = self.process_spark(rdp.spark, *child_output) return self.cache - - def process_rayds(self, ds = None): + + def process_rayds(self, ds=None): return self.cache - - def process_spark(self, spark, df = None): + + def process_spark(self, spark, df=None): return self.cache - + def process_row(self, sample: dict, text_key, new_name, actual_func, *actual_func_args) -> dict: sample[new_name] = actual_func(sample[text_key], *actual_func_args) return sample - + def process_batch(self, sample: dict) -> dict: raise NotImplementedError(f"{self.__class__.__name__} does not support process_batch yet") - + + def get_modified_rows(self): + self.statistics.total_changed = self.statistics.total_in - self.statistics.total_out + + def summarize(self) -> str: + self.get_modified_rows() + return ( + f"A total of {self.statistics.total_in} rows of data were processed, using {self.statistics.used_time} seconds, " + f"with {self.statistics.total_changed} rows modified or removed, {self.statistics.total_out} rows of data remaining.") + + class DummyOperation(BaseOperation): def __init__(self, op_base): super().__init__(op_base) self.support_spark_dataframe = True self.support_spark_rdd = True - def get_function_pd(self, trans_type = 'fit_transform'): + def get_function_pd(self, trans_type='fit_transform'): def dummy_op(df): return df + return dummy_op - def get_function_spark(self, rdp, trans_type = 'fit_transform'): + def get_function_spark(self, rdp, trans_type='fit_transform'): def dummy_op(df): return df - return dummy_op \ No newline at end of file + + return dummy_op + + +@dataclass +class OperationStatistics: + total_in: int + total_out: int + total_changed: int + used_time: float + + +def statistics_decorator(func): + def wrapper(self, *args, **kwargs): + if isinstance(args[0], Dataset): + ds = args[0] + self.statistics.total_in += ds.count() + start = time.time() + result = func(self, *args, **kwargs) + self.statistics.total_out += result.count() + elapse = time.time() - start + self.statistics.used_time += elapse + else: + df = args[1] + self.statistics.total_in += df.count() + start = time.time() + result = func(self, *args, **kwargs) + self.statistics.total_out += result.count() + elapse = time.time() - start + self.statistics.used_time += elapse + return result + + return wrapper diff --git a/RecDP/pyrecdp/primitives/operations/logging_utils.py b/RecDP/pyrecdp/primitives/operations/logging_utils.py new file mode 100644 index 000000000..b3f43d273 --- /dev/null +++ b/RecDP/pyrecdp/primitives/operations/logging_utils.py @@ -0,0 +1,13 @@ +import logging +import sys +from loguru import logger + +level = "INFO" +logging.root.setLevel(level) + +# configure loguru +default_log_path = "/tmp/recdp/log/llmutils.log" +logger.configure(handlers=[ + {"sink": sys.stdout}, + {"sink": default_log_path, "rotation": "10 MB"}, +]) diff --git a/RecDP/pyrecdp/primitives/operations/text_filter.py b/RecDP/pyrecdp/primitives/operations/text_filter.py index 0ce439c3b..13b6e3254 100644 --- a/RecDP/pyrecdp/primitives/operations/text_filter.py +++ b/RecDP/pyrecdp/primitives/operations/text_filter.py @@ -1,4 +1,4 @@ -from .base import BaseLLMOperation, LLMOPERATORS +from .base import BaseLLMOperation, LLMOPERATORS, statistics_decorator from ray.data import Dataset from pyspark.sql import DataFrame import os @@ -57,19 +57,18 @@ def __init__(self, text_key='text', minimum_length=100, maximum_length=-1): self.support_ray = True self.support_spark = True + @statistics_decorator def process_rayds(self, ds: Dataset) -> Dataset: if self.check_length is None: self.check_length = prepare_func_filter_by_length(self.minimum_length, self.maximum_length) if self.inplace: # remove unwanted text row inplace - original_num = ds.count() filtered_ds = ds.filter(lambda x: self.check_length(x[self.text_key])) - filtered_num = filtered_ds.count() - print(f"Processed a total of {original_num} rows of data, filtered out {original_num - filtered_num} rows of data") return filtered_ds else: raise NotImplementedError("We only support inplace modification for LengthFilter.") + @statistics_decorator def process_spark(self, spark, spark_df: DataFrame) -> DataFrame: import pyspark.sql.types as T check_length_udf = F.udf(prepare_func_filter_by_length(self.minimum_length, self.maximum_length), @@ -91,19 +90,18 @@ def __init__(self, text_key='text', language='en'): self.support_ray = True self.support_spark = True + @statistics_decorator def process_rayds(self, ds: Dataset) -> Dataset: if self.check_badwords is None: self.check_badwords = prepare_func_filter_by_badwords(self.language) if self.inplace: # remove unwanted text row inplace - original_num = ds.count() filtered_ds = ds.filter(lambda x: self.check_badwords(x[self.text_key])) - filtered_num = filtered_ds.count() - print(f"Processed a total of {original_num} rows of data, filtered out {original_num - filtered_num} rows of data") return filtered_ds else: raise NotImplementedError("We only support inplace modification for BadwordsFilter.") + @statistics_decorator def process_spark(self, spark, spark_df: DataFrame) -> DataFrame: import pyspark.sql.types as T check_badwords_udf = F.udf(prepare_func_filter_by_badwords(self.language), T.BooleanType()) @@ -123,19 +121,18 @@ def __init__(self, text_key='text', inplace=True): self.support_ray = True self.support_spark = True + @statistics_decorator def process_rayds(self, ds: Dataset) -> Dataset: if self.check_profanity is None: self.check_profanity = prepare_func_filter_by_profanity() if self.inplace: # remove unwanted text row inplace - original_num = ds.count() filtered_ds = ds.filter(lambda x: self.check_profanity(x[self.text_key])) - filtered_num = filtered_ds.count() - print(f"Processed a total of {original_num} rows of data, filtered out {original_num - filtered_num} rows of data") return filtered_ds else: raise NotImplementedError("We only support inplace modification for ProfanityFilter.") + @statistics_decorator def process_spark(self, spark, spark_df: DataFrame) -> DataFrame: import pyspark.sql.types as T check_profanity_udf = F.udf(prepare_func_filter_by_profanity(), T.BooleanType()) @@ -216,18 +213,17 @@ def __init__(self, text_key='text'): self.support_spark = True self.support_ray = True + @statistics_decorator def process_rayds(self, ds: Dataset) -> Dataset: blacklist = load_blacklist_set() if self.inplace: # remove unwanted text row inplace - original_num = ds.count() filtered_ds = ds.filter(lambda x: get_url_from_meta(x) not in blacklist) - filtered_num = filtered_ds.count() - print(f"Processed a total of {original_num} rows of data, filtered out {original_num - filtered_num} rows of data") return filtered_ds else: raise NotImplementedError("We only support inplace modification for URLFilter.") + @statistics_decorator def process_spark(self, spark, spark_df: DataFrame) -> DataFrame: get_url_from_meta_udf = F.udf(get_url_from_meta) get_domain_udf = F.udf(get_domain) diff --git a/RecDP/setup.py b/RecDP/setup.py index 90957746e..da2c6f4fa 100644 --- a/RecDP/setup.py +++ b/RecDP/setup.py @@ -78,5 +78,6 @@ "spacy", "torch", "Faker", - "ray" + "ray", + "loguru", ]) From d6eb7c9f017ae0b0868af8e9e27ca66282b6fb6b Mon Sep 17 00:00:00 2001 From: "Chendi.Xue" Date: Wed, 11 Oct 2023 15:52:55 -0500 Subject: [PATCH 08/47] [v1.2][ISSUE-306]Notebook update using pipeline (#380) * Created using Colaboratory * Created using Colaboratory * Created using Colaboratory * Created using Colaboratory * Created using Colaboratory * Created using Colaboratory * Created using Colaboratory * Created using Colaboratory * Created using Colaboratory --- .../notebooks/llmutils/bytesize.ipynb | 2686 ++++++++-- .../notebooks/llmutils/classify.ipynb | 1326 ++++- .../examples/notebooks/llmutils/convert.ipynb | 521 +- .../notebooks/llmutils/decontamination.ipynb | 1379 +++-- .../llmutils/fuzzy_deduplication.ipynb | 748 +-- .../examples/notebooks/llmutils/reader.ipynb | 4256 ++++++++++++++- .../llmutils/resumable_pipeline.ipynb | 4700 ++++++++++++++++- 7 files changed, 13493 insertions(+), 2123 deletions(-) diff --git a/RecDP/examples/notebooks/llmutils/bytesize.ipynb b/RecDP/examples/notebooks/llmutils/bytesize.ipynb index 20feffaf6..936cb3659 100644 --- a/RecDP/examples/notebooks/llmutils/bytesize.ipynb +++ b/RecDP/examples/notebooks/llmutils/bytesize.ipynb @@ -1,529 +1,2233 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "NUdnJWOJLGvF", - "metadata": { - "id": "NUdnJWOJLGvF" - }, - "source": [ - "# RecDP LLM - TextBytesize\n", - "\n", - "TextBytesize is a tool to get total byte size of text in the data.\n", - "\n", - "### We support two types of input and output:\n", - "\n", - "example 1:\n", - "* Expect Input format: a folder of *.jsonl.\n", - "* Expect Output format: a folder of *.jsonl after reduction." - ] - }, - { - "cell_type": "markdown", - "id": "C1FFwhr3MwA1", - "metadata": { - "id": "C1FFwhr3MwA1" - }, - "source": [ - "# Get started" - ] - }, - { - "cell_type": "markdown", - "id": "tMaSNIKIMz3T", - "metadata": { - "id": "tMaSNIKIMz3T" - }, - "source": [ - "## Install pyrecdp and dependencies" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ro4yOk5IMvRY", - "metadata": { - "id": "ro4yOk5IMvRY" - }, - "outputs": [], - "source": [ - "! DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-8-jre\n", - "! pip install pyrecdp --pre\n", - "# ! pip install 'git+https://github.com/intel/e2eAIOK.git#egg=pyrecdp&subdirectory=RecDP'" - ] - }, - { - "cell_type": "markdown", - "id": "pnHK2VTvM5rg", - "metadata": { - "id": "pnHK2VTvM5rg" - }, - "source": [ - "## 2. prepare your own data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a", - "metadata": { - "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a" - }, - "outputs": [], - "source": [ - "%mkdir -p /content/test_data\n", - "%cd /content/test_data\n", - "file_names = ['NIH_sample.jsonl']\n", - "file_list = [f\"https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/PILE/{i}\" for i in file_names]\n", - "!wget -P /content/test_data {\" \".join(file_list)}" - ] - }, - { - "cell_type": "markdown", - "id": "J-125gFtNyOg", - "metadata": { - "id": "J-125gFtNyOg" - }, - "source": [ - "## 3. get bytesize" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "vkGRn9uJN4B0", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "vkGRn9uJN4B0", - "outputId": "8aa9d021-99f5-4de8-932e-2fccb933f70e" - }, - "outputs": [ + "cells": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "NIH_sample.jsonl\n" - ] - } - ], - "source": [ - "! ls /content/test_data" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "SMK9KcV4N7al", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "SMK9KcV4N7al", - "outputId": "7e93835c-a7d0-4612-e9aa-7c6f452d5bef" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Will assign 1 cores and 10386 M memory for spark\n", - "per core memory size is 10.143 GB and shuffle_disk maximum capacity is 8589934592.000 GB\n", - "Load data with RowID started ...\n", - "Load data with RowID took 2.592839109000124 sec\n", - "num_bands is 9, ranges is 13\n", - "generate minHashLsh started ...\n", - "generate minHashLsh took 63.16276241699961 sec\n", - "generate_connected_components all started ...\n", - "Started graph building\n" - ] + "cell_type": "markdown", + "id": "NUdnJWOJLGvF", + "metadata": { + "id": "NUdnJWOJLGvF" + }, + "source": [ + "# RecDP LLM - TextBytesize\n", + "\n", + "TextBytesize is a tool to get total byte size of text in the data.\n", + "\n", + "### We support two types of input and output:\n", + "\n", + "example 1:\n", + "* Expect Input format: a folder of *.jsonl.\n", + "* Expect Output format: a folder of *.jsonl after reduction." + ] }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "loop on file: 100%|██████████| 2/2 [00:00<00:00, 5312.61it/s]\n" - ] + "cell_type": "markdown", + "id": "C1FFwhr3MwA1", + "metadata": { + "id": "C1FFwhr3MwA1" + }, + "source": [ + "# Get started" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "length of the set of duplicates: 13 0.01398324966430664\n" - ] + "cell_type": "markdown", + "id": "tMaSNIKIMz3T", + "metadata": { + "id": "tMaSNIKIMz3T" + }, + "source": [ + "## Install pyrecdp and dependencies" + ] }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 13/13 [00:00<00:00, 71275.75it/s]\n" - ] + "cell_type": "code", + "execution_count": null, + "id": "ro4yOk5IMvRY", + "metadata": { + "id": "ro4yOk5IMvRY" + }, + "outputs": [], + "source": [ + "! DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-8-jre\n", + "! pip install pyrecdp --pre\n", + "# ! pip install 'git+https://github.com/intel/e2eAIOK.git#egg=pyrecdp&subdirectory=RecDP'" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "number of connected components: 7 0.02257537841796875\n", - "Graph generated duplicates list!!! 0.022832632064819336\n", - "generate_connected_components all took 0.02385874599985982 sec\n", - "generate_duplicates_dict all started ...\n", - "Processing duplicates!!!\n" - ] + "cell_type": "markdown", + "id": "pnHK2VTvM5rg", + "metadata": { + "id": "pnHK2VTvM5rg" + }, + "source": [ + "## 2. prepare your own data" + ] }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 7/7 [00:00<00:00, 46163.72it/s]" - ] + "cell_type": "code", + "execution_count": 2, + "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a", + "metadata": { + "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "d326b334-d005-42e1-ee4e-619d9c0b388b" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "/content/test_data\n", + "--2023-10-11 18:10:37-- https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/PILE/NIH_sample.jsonl\n", + "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...\n", + "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 21626664 (21M) [text/plain]\n", + "Saving to: ‘/content/test_data/NIH_sample.jsonl’\n", + "\n", + "NIH_sample.jsonl 100%[===================>] 20.62M 114MB/s in 0.2s \n", + "\n", + "2023-10-11 18:10:38 (114 MB/s) - ‘/content/test_data/NIH_sample.jsonl’ saved [21626664/21626664]\n", + "\n" + ] + } + ], + "source": [ + "%mkdir -p /content/test_data\n", + "%cd /content/test_data\n", + "file_names = ['NIH_sample.jsonl']\n", + "file_list = [f\"https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/PILE/{i}\" for i in file_names]\n", + "!wget -P /content/test_data {\" \".join(file_list)}" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "number of duplicate documents that will be removed: 12\n", - "generate_duplicates_dict all took 0.009320153000317077 sec\n", - "Completed!!\n", - " total processed 10000 documents\n", - " total detected 12 duplicated documents\n", - " duplicate ratio is 0.0012\n" - ] + "cell_type": "markdown", + "id": "J-125gFtNyOg", + "metadata": { + "id": "J-125gFtNyOg" + }, + "source": [ + "## 3. get bytesize" + ] }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n" - ] + "cell_type": "code", + "execution_count": 3, + "id": "vkGRn9uJN4B0", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vkGRn9uJN4B0", + "outputId": "fb931ee0-a81c-414e-aa6c-60b3db1ab4cd" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "NIH_sample.jsonl\n" + ] + } + ], + "source": [ + "! ls /content/test_data" + ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "Detected duplications are:\n" - ] + "cell_type": "markdown", + "source": [ + "### 3.1 PIPELINE based API" + ], + "metadata": { + "id": "HZIPEzB477Bm" + }, + "id": "HZIPEzB477Bm" }, { - "data": { - "text/plain": [ - "[['NIH_sample.jsonl@1769', 'NIH_sample.jsonl@1764', 'NIH_sample.jsonl@1765'],\n", - " ['NIH_sample.jsonl@245',\n", - " 'NIH_sample.jsonl@243',\n", - " 'NIH_sample.jsonl@246',\n", - " 'NIH_sample.jsonl@248',\n", - " 'NIH_sample.jsonl@244',\n", - " 'NIH_sample.jsonl@247'],\n", - " ['NIH_sample.jsonl@1191', 'NIH_sample.jsonl@1190'],\n", - " ['NIH_sample.jsonl@7746', 'NIH_sample.jsonl@7745'],\n", - " ['NIH_sample.jsonl@9026', 'NIH_sample.jsonl@8561'],\n", - " ['NIH_sample.jsonl@8200', 'NIH_sample.jsonl@7354'],\n", - " ['NIH_sample.jsonl@3037', 'NIH_sample.jsonl@3024']]" + "cell_type": "code", + "execution_count": 5, + "id": "SMK9KcV4N7al", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 704, + "referenced_widgets": [ + "2f6ad7bbc0964d7696c7dec5d0e66f44", + "60dd954b33414adfabf772f49ea2f3a2", + "93697baecfd442fa8d8db709cfc82eee", + "77548643af8d430db70bfb0af3707f91", + "92f4fcc6115c4f809c15b942ca0d11d4", + "90a32f5a48a74578bad33421c0e1599c", + "ec2613a4e1c04b2789a4ca8a257bda53", + "f955ca8d9b9e451791a5aa53bb984a71", + "0d52219723f944eb8b34e5aee50298be", + "58951323a0804ad8ad9d68dd4292f35f", + "c9d153b598854d0686849b48f84aa01e" + ] + }, + "id": "SMK9KcV4N7al", + "outputId": "17b2f0cc-92f7-4ff5-bdb0-7d3fb338c305" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "JAVA_HOME is not set, use default value of /usr/lib/jvm/java-8-openjdk-amd64/\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.10/dist-packages/pyspark/pandas/__init__.py:50: UserWarning: 'PYARROW_IGNORE_TIMEZONE' environment variable was not set. It is required to set this environment variable to '1' in both driver and executor sides if you use pyarrow>=2.0.0. pandas-on-Spark will set it for you but it does not work if there is a Spark context already launched.\n", + " warnings.warn(\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "\t\t\t\n", + "\t\t" + ] + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "init ray\n", + "init ray with total mem of 8167961395, total core of 1\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2023-10-11 18:11:28,068\tWARNING services.py:1889 -- WARNING: The object store is using /tmp instead of /dev/shm because /dev/shm has only 6133121024 bytes available. This will harm performance! You may be able to free up space by deleting files in /dev/shm. If you are inside a Docker container, you can increase /dev/shm size by passing '--shm-size=8.37gb' to 'docker run' (or add it to the run_options list in a Ray cluster config). Make sure to set this to more than 30% of available RAM.\n", + "2023-10-11 18:11:29,354\tINFO worker.py:1642 -- Started a local Ray instance.\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "execute with ray started ...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2023-10-11 18:11:34,510\tINFO read_api.py:406 -- To satisfy the requested parallelism of 20, each read task output is split into 20 smaller blocks.\n", + "2023-10-11 18:11:34,568\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[ReadText->SplitBlocks(20)] -> TaskPoolMapOperator[Map(convert_json)->Map()]\n", + "2023-10-11 18:11:34,576\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-10-11 18:11:34,582\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running 0: 0%| | 0/400 [00:00Map() pid=1685)\u001b[0m 2023-10-11 18:11:46.345224: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n", + "2023-10-11 18:11:50,723\tWARNING plan.py:567 -- Warning: The Ray cluster currently does not have any available CPUs. The Dataset job will hang unless more CPUs are freed up. A common reason is that cluster resources are used by Actors or Tune trials; see the following link for more details: https://docs.ray.io/en/master/data/dataset-internals.html#datasets-and-tune\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "execute with ray took 17.940069602999984 sec\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " meta \\\n", + "0 {'APPLICATION_ID': 100065} \n", + "1 {'APPLICATION_ID': 100066} \n", + "2 {'APPLICATION_ID': 100067} \n", + "3 {'APPLICATION_ID': 100068} \n", + "4 {'APPLICATION_ID': 100069} \n", + "... ... \n", + "9995 {'APPLICATION_ID': 2120612} \n", + "9996 {'APPLICATION_ID': 2120613} \n", + "9997 {'APPLICATION_ID': 2120616} \n", + "9998 {'APPLICATION_ID': 2120620} \n", + "9999 {'APPLICATION_ID': 2120624} \n", + "\n", + " text bytesize \n", + "0 The National Domestic Violence Hotline (NDVH) ... 1460 \n", + "1 The Office of Planning, Research and Evaluatio... 3181 \n", + "2 Improving outcomes for low-income fathers and ... 1777 \n", + "3 This project is implementing 36-month follow-u... 1760 \n", + "4 The CCDF Policies Database is a source of info... 2157 \n", + "... ... ... \n", + "9995 Project: Research and produce a videotape that... 1241 \n", + "9996 While relapse prevention has been studied and ... 1281 \n", + "9997 The proposed study on recruitment, adherence a... 2867 \n", + "9998 Recent studies suggest that HIV epidemics are ... 2424 \n", + "9999 The overall goal of this study is to develop a... 1463 \n", + "\n", + "[10000 rows x 3 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
metatextbytesize
0{'APPLICATION_ID': 100065}The National Domestic Violence Hotline (NDVH) ...1460
1{'APPLICATION_ID': 100066}The Office of Planning, Research and Evaluatio...3181
2{'APPLICATION_ID': 100067}Improving outcomes for low-income fathers and ...1777
3{'APPLICATION_ID': 100068}This project is implementing 36-month follow-u...1760
4{'APPLICATION_ID': 100069}The CCDF Policies Database is a source of info...2157
............
9995{'APPLICATION_ID': 2120612}Project: Research and produce a videotape that...1241
9996{'APPLICATION_ID': 2120613}While relapse prevention has been studied and ...1281
9997{'APPLICATION_ID': 2120616}The proposed study on recruitment, adherence a...2867
9998{'APPLICATION_ID': 2120620}Recent studies suggest that HIV epidemics are ...2424
9999{'APPLICATION_ID': 2120624}The overall goal of this study is to develop a...1463
\n", + "

10000 rows × 3 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 5 + } + ], + "source": [ + "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", + "from pyrecdp.primitives.operations import *\n", + "\n", + "pipeline = TextPipeline()\n", + "ops = [\n", + " JsonlReader(\"/content/test_data/\"),\n", + " TextBytesize(text_key = 'text'),\n", + "]\n", + "pipeline.add_operations(ops)\n", + "ret = pipeline.execute()\n", + "ret.to_pandas()" ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "data_files = [\"/content/test_data/NIH_sample.jsonl\"]\n", - "dup_dir = \"/content/fuzzy_dedup\"\n", - "\n", - "ngram_size = 13 # num_words to do compare\n", - "num_perm = 256 # num_permutation to hold this whole document.\n", - "# ranges and bands will impact the probabilities of false positive and false negative.\n", - "ranges = 13\n", - "bands = 9\n", - "\n", - "from pyrecdp.primitives.llmutils import near_dedup\n", - "import pandas as pd\n", - "\n", - "near_dedup(data_files, dup_dir, ngram_size, num_perm, bands, ranges)\n", - "\n", - "## Validate codes\n", - "import pickle\n", - "print(\"Detected duplications are:\")\n", - "connects, num_pair, index_list = pickle.load(open(f\"{dup_dir}/connected_components.pickle\", 'rb'))\n", - "connected_component_reverse = [[index_list[j] for j in i] for i in connects]\n", - "connected_component_reverse" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "81NiajWFTy2n", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "81NiajWFTy2n", - "outputId": "d8efdf8d-6561-411a-b190-acf8d289b331" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "resetting to 1 for number of processes\n", - "parallelize with 1 processes\n" - ] }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 1/1 [00:00<00:00, 12.83it/s]" - ] + "cell_type": "markdown", + "source": [ + "### 3.2 Operation-based API" + ], + "metadata": { + "id": "WJJXs5Co8EsB" + }, + "id": "WJJXs5Co8EsB" }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "Reduction is completed, checkout the new jsonl filesize\n" - ] + "cell_type": "markdown", + "source": [ + "#### prepare Ray and Spark context" + ], + "metadata": { + "id": "K49OFih-8aUc" + }, + "id": "K49OFih-8aUc" }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "\n" - ] + "cell_type": "code", + "source": [ + "import psutil\n", + "import ray\n", + "from pyrecdp.core import SparkDataProcessor\n", + "from pyspark.sql import DataFrame\n", + "from pyrecdp.core.cache_utils import RECDP_MODELS_CACHE\n", + "\n", + "total_mem = int(psutil.virtual_memory().total * 0.5)\n", + "total_cores = psutil.cpu_count(logical=False)\n", + "\n", + "class RayContext:\n", + " def __init__(self, dataset_path):\n", + " self.dataset_path = dataset_path\n", + "\n", + " def __enter__(self):\n", + " if not ray.is_initialized():\n", + " try:\n", + " ray.init(object_store_memory=total_mem, num_cpus=total_cores)\n", + " except:\n", + " ray.init()\n", + "\n", + " reader = JsonlReader(self.dataset_path)\n", + " self.ds = reader.process_rayds(None)\n", + " return self\n", + "\n", + " def __exit__(self, exc_type, exc_value, exc_traceback):\n", + " if ray.is_initialized():\n", + " ray.shutdown()\n", + "\n", + " def show(self, ds):\n", + " pd = ds.to_pandas()\n", + " display(pd)\n", + "\n", + "class SparkContext:\n", + " def __init__(self, dataset_path):\n", + " self.dataset_path = dataset_path\n", + " self.rdp = SparkDataProcessor()\n", + "\n", + " def __enter__(self):\n", + " self.spark = self.rdp.spark\n", + " reader = JsonlReader(self.dataset_path)\n", + " self.ds = reader.process_spark(self.spark)\n", + " return self\n", + "\n", + " def __exit__(self, exc_type, exc_value, exc_traceback):\n", + " pass\n", + "\n", + " def show(self, ds):\n", + " pd = ds.toPandas()\n", + " display(pd)" + ], + "metadata": { + "id": "-F2f_JCo8I0R" + }, + "id": "-F2f_JCo8I0R", + "execution_count": 6, + "outputs": [] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "NIH_sample.jsonl\n", - "9988\n" - ] - } - ], - "source": [ - "# apply duplication list to original data to remove duplication\n", - "\n", - "from pyrecdp.primitives.llmutils import shrink_document_MP\n", - "import os\n", - "\n", - "data_dir = \"/content/test_data/\"\n", - "dup_dir = \"/content/fuzzy_dedup\"\n", - "dup_dict = os.path.join(dup_dir, \"duplicates.pickle\")\n", - "out_dir = os.path.join(dup_dir, \"output\")\n", - "\n", - "shrink_document_MP(data_dir, dup_dict, out_dir)\n", - "\n", - "# validate\n", - "print(\"\\nReduction is completed, checkout the new jsonl filesize\")\n", - "! ls \"/content/fuzzy_dedup/output\"\n", - "! cat /content/fuzzy_dedup/output/* | wc -l" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "jFOflHdsQ2XI", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" + "cell_type": "code", + "source": [ + "# Ray mode\n", + "\n", + "from pyrecdp.primitives.operations import *\n", + "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", + "\n", + "op = TextBytesize()\n", + "with RayContext(\"/content/test_data/\") as ctx:\n", + " ctx.show(op.process_rayds(ctx.ds))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 513, + "referenced_widgets": [ + "41fbe06aba494f75ba11aeaf3fd6fa94", + "2784ff8eb12c471eac0c335cc3169c5c", + "de524508eb0947749b3f13c6710f1dbb", + "dbe163714118476e98ec10efc2e6f1e1", + "1dc281fa098a40f6a07af047f0edd1a9", + "789f99f9724442d59f05be15b3231888", + "bc776eb0348c49348497687be7316166", + "05302bd682724596bf8a61dbca5ae2e4", + "81f6b801a20c4f5c9ab21fc0dbccbd5d", + "c96dd696d0a84e8485b705750be517d7", + "61d3c42680814b0a95ccfac427d5c553" + ] + }, + "id": "zjFGFuWm8uLW", + "outputId": "750ead08-4002-4102-a6c7-c90f1694a0d7" + }, + "id": "zjFGFuWm8uLW", + "execution_count": 7, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2023-10-11 18:16:49,727\tINFO read_api.py:406 -- To satisfy the requested parallelism of 20, each read task output is split into 20 smaller blocks.\n", + "2023-10-11 18:16:49,743\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[ReadText->SplitBlocks(20)] -> TaskPoolMapOperator[Map(convert_json)->Map()]\n", + "2023-10-11 18:16:49,748\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-10-11 18:16:49,752\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running 0: 0%| | 0/400 [00:00\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
metatextbytesize
0{'APPLICATION_ID': 100065}The National Domestic Violence Hotline (NDVH) ...1460
1{'APPLICATION_ID': 100066}The Office of Planning, Research and Evaluatio...3181
2{'APPLICATION_ID': 100067}Improving outcomes for low-income fathers and ...1777
3{'APPLICATION_ID': 100068}This project is implementing 36-month follow-u...1760
4{'APPLICATION_ID': 100069}The CCDF Policies Database is a source of info...2157
............
9995{'APPLICATION_ID': 2120612}Project: Research and produce a videotape that...1241
9996{'APPLICATION_ID': 2120613}While relapse prevention has been studied and ...1281
9997{'APPLICATION_ID': 2120616}The proposed study on recruitment, adherence a...2867
9998{'APPLICATION_ID': 2120620}Recent studies suggest that HIV epidemics are ...2424
9999{'APPLICATION_ID': 2120624}The overall goal of this study is to develop a...1463
\n", + "

10000 rows × 3 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + " \n" + ] + }, + "metadata": {} + } + ] }, - "id": "jFOflHdsQ2XI", - "outputId": "88c1b3aa-8999-4563-cf4a-a65f5efbf0fc" - }, - "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "First duplication is ['NIH_sample.jsonl@1769', 'NIH_sample.jsonl@1764', 'NIH_sample.jsonl@1765']\n", - "You'll see the similar content in above documents\n", - "NIH_sample.jsonl@1769\n", - "{\"meta\": {\"APPLICATION_ID\": 2044519}, \"text\": \"The overall aim of study is to test the \\\"matching hypothesis\\\" that alcohol treatment effectiveness can be increased by assigning clients with certain characteristics to particular treatments. The present application proposes to continue work initiated and conducted over the past five years. The specific aims of study are: to test primary and secondary a priori matching hypotheses over the course of 15 months of follow-up; to conduct psychometric and other analyses of patient, treatment process, and outcome variables to test these matching hypotheses; to examine alternative analytic strategies and variables for testing matching; and to determine the extent to which matching effects persist over a three year period following treatment completion. Data sets collected from the Project MATCH outpatient (N=954) and aftercare (N=774) randomized clinical trial studies will be analyzed to achieve these aims. Clients randomly assigned to one of three treatments, Twelve Step, Cognitive Behavioral, or Motivational Enhancement, have been assessed prior to treatment on baseline and matching variables and followed, at 3 month intervals, for 15 months from treatment assignment to measure their alcohol consumption and other dimensions of outcome. To test longer term matching effects, clients in the outpatient arm of the study will be contacted and assessed at 39 months after treatment initiation. In year 08 these data will be analyzed to address this question. It is anticipated that study results will impact on alcohol treatment research and delivery for the next decade. The Project MATCH Steering Committee, following discussion with NIAAA Staff, has chosen to submit a generic proposal across each of the CRUs, reflecting the common protocol and cooperative process that has guided the project across its first five years of operation. However, each CRU has provided site-specific information in the budget, budget justifications, listing of key personnel, consultant/consortium agreements, and human subjects sections of their respective proposals.\"}\n", - "NIH_sample.jsonl@1764\n", - "{\"meta\": {\"APPLICATION_ID\": 2044494}, \"text\": \"The overall aim of this study is to test the \\\"matching hypothesis\\\" that alcohol treatment effectiveness can be increased by assigning clients with certain characteristics to particular treatments. The present application proposes to continue work initiated and conducted over the past five years. The specific aims of study are: to test primary and secondary a priori matching hypotheses over the course of 15 months of follow-up; to conduct psychometric and other analyses of patient, treatment process, and outcome variables to test these matching hypotheses; to examine alternative analytic strategies and variables for testing matching- and to determine the extent to which matching effects persist over a three year period following treatment completion. Data sets collected from the Project MATCH outpatient (N=954) and aftercare (N=774) randomized clinical trial studies will be analyzed to achieve these aims. Clients randomly assigned to one of three treatments (Twelve Step, Cognitive Behavioral, or Motivational Enhancement) have been assessed prior to treatment on baseline and matching variables and followed, at 3 month intervals, for 15 months from treatment assignment to measure their alcohol consumption and other dimensions of outcome. To test longer term matching effects clients in the outpatient arm of the study will be contacted and assessed at 39 months after treatment initiation. In year 08 these data will be analyzed to address this question. It is anticipated that study results will impact on alcohol treatment research and delivery for the next decade. Finally, it should be noted that the Project MATCH Steering Committee, following discussion with NIAAA Staff, has chosen to submit a generic proposal across each of the CRUs reflecting the common protocol and cooperative process that has guided the project across its first five years of operation. However, each CRU has provided site-specific information in the budget, budget justifications, listing of key personnel, consultant/consortium agreements, and human subjects sections of their respective proposals.\"}\n", - "NIH_sample.jsonl@1765\n", - "{\"meta\": {\"APPLICATION_ID\": 2044499}, \"text\": \"The overall aim of study is to test the \\\"matching hypothesis\\\" that alcohol treatment effectiveness can be increased by assigning clients with certain characteristics to particular treatments. The present application proposes to continue work initiated and conducted over the past five years. The specific aims of study are: to test primary and secondary a priori matching hypotheses over the course of 15 months of follow-up; to conduct psychometric and other analyses of patient, treatment process, and outcome variables to test these matching hypotheses; to examine alternative analytic strategies and variables for testing matching; and to determine the extent to which matching effects persist over a three year period following treatment completion. Data sets collected from the Project MATCH outpatient (N=954) and aftercare (N=774) randomized clinical trial studies will be analyzed to achieve these aims. Clients randomly assigned to one of three treatments, Twelve Step, Cognitive Behavioral, or Motivational Enhancement, have been assessed prior to treatment on baseline and matching variables and followed, at 3 month intervals, for 15 months from treatment assignment to measure their alcohol consumption and other dimensions of outcome. To test longer term matching effects clients in the outpatient arm of the study will be contacted and assessed at 39 months after treatment initiation. In year 08 these data will be analyzed to address this question. It is anticipated that study results will impact on alcohol treatment research and delivery for the next decade. The Project MATCH Steering Committee, following discussion with NIAAA Staff, has chosen to submit a generic proposal across each of the CRUs, reflecting the common protocol and cooperative process that has guided the project across its first five years of operation. However, each CRU has provided site-specific information in the budget, budget justifications, listing of key personnel, consultant/consortium agreements, and human subjects sections of their respective proposals.\"}\n" - ] + "cell_type": "code", + "execution_count": 9, + "id": "81NiajWFTy2n", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 458 + }, + "id": "81NiajWFTy2n", + "outputId": "db70e3fb-8033-4c08-b58b-b24c4e87aa42" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Will assign 1 cores and 10386 M memory for spark\n", + "per core memory size is 10.143 GB and shuffle_disk maximum capacity is 8589934592.000 GB\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " text \\\n", + "0 The National Domestic Violence Hotline (NDVH) ... \n", + "1 The Office of Planning, Research and Evaluatio... \n", + "2 Improving outcomes for low-income fathers and ... \n", + "3 This project is implementing 36-month follow-u... \n", + "4 The CCDF Policies Database is a source of info... \n", + "... ... \n", + "9995 Project: Research and produce a videotape that... \n", + "9996 While relapse prevention has been studied and ... \n", + "9997 The proposed study on recruitment, adherence a... \n", + "9998 Recent studies suggest that HIV epidemics are ... \n", + "9999 The overall goal of this study is to develop a... \n", + "\n", + " meta bytesize \n", + "0 {\"APPLICATION_ID\":100065} 1460 \n", + "1 {\"APPLICATION_ID\":100066} 3181 \n", + "2 {\"APPLICATION_ID\":100067} 1777 \n", + "3 {\"APPLICATION_ID\":100068} 1760 \n", + "4 {\"APPLICATION_ID\":100069} 2157 \n", + "... ... ... \n", + "9995 {\"APPLICATION_ID\":2120612} 1241 \n", + "9996 {\"APPLICATION_ID\":2120613} 1281 \n", + "9997 {\"APPLICATION_ID\":2120616} 2867 \n", + "9998 {\"APPLICATION_ID\":2120620} 2424 \n", + "9999 {\"APPLICATION_ID\":2120624} 1463 \n", + "\n", + "[10000 rows x 3 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
textmetabytesize
0The National Domestic Violence Hotline (NDVH) ...{\"APPLICATION_ID\":100065}1460
1The Office of Planning, Research and Evaluatio...{\"APPLICATION_ID\":100066}3181
2Improving outcomes for low-income fathers and ...{\"APPLICATION_ID\":100067}1777
3This project is implementing 36-month follow-u...{\"APPLICATION_ID\":100068}1760
4The CCDF Policies Database is a source of info...{\"APPLICATION_ID\":100069}2157
............
9995Project: Research and produce a videotape that...{\"APPLICATION_ID\":2120612}1241
9996While relapse prevention has been studied and ...{\"APPLICATION_ID\":2120613}1281
9997The proposed study on recruitment, adherence a...{\"APPLICATION_ID\":2120616}2867
9998Recent studies suggest that HIV epidemics are ...{\"APPLICATION_ID\":2120620}2424
9999The overall goal of this study is to develop a...{\"APPLICATION_ID\":2120624}1463
\n", + "

10000 rows × 3 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {} + } + ], + "source": [ + "# Spark mode\n", + "\n", + "from pyrecdp.primitives.operations import *\n", + "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", + "\n", + "op = TextBytesize()\n", + "with SparkContext(\"/content/test_data/\") as ctx:\n", + " ctx.show(op.process_spark(ctx.spark, ctx.ds))" + ] } - ], - "source": [ - "# Visual compare based on detection\n", - "print(f\"First duplication is {connected_component_reverse[0]}\")\n", - "print(\"You'll see the similar content in above documents\")\n", - "\n", - "for f_id in connected_component_reverse[0]:\n", - " print(f_id)\n", - " f_name, rid = f_id.split(\"@\")\n", - " ! sed -n {rid}p {f_name}\n" - ] - }, - { - "cell_type": "markdown", - "id": "okSSgtKDTnuE", - "metadata": { - "id": "okSSgtKDTnuE" - }, - "source": [ - "## 3. fuzzy deduplicate (unified detection and reduction)" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "HQ_Ax_wxTnC9", - "metadata": { + ], + "metadata": { "colab": { - "base_uri": "https://localhost:8080/" + "provenance": [] }, - "id": "HQ_Ax_wxTnC9", - "outputId": "98031a36-2956-434d-a576-b86bd782ea5c" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Will assign 1 cores and 10386 M memory for spark\n", - "per core memory size is 10.143 GB and shuffle_disk maximum capacity is 8589934592.000 GB\n", - "input is \n", - "+--------------------+--------------------+\n", - "| text| meta|\n", - "+--------------------+--------------------+\n", - "|The National Dome...|{\"APPLICATION_ID\"...|\n", - "|The Office of Pla...|{\"APPLICATION_ID\"...|\n", - "|Improving outcome...|{\"APPLICATION_ID\"...|\n", - "|This project is i...|{\"APPLICATION_ID\"...|\n", - "|The CCDF Policies...|{\"APPLICATION_ID\"...|\n", - "|The overall purpo...|{\"APPLICATION_ID\"...|\n", - "|This contract wil...|{\"APPLICATION_ID\"...|\n", - "|The purpose of th...|{\"APPLICATION_ID\"...|\n", - "|The purpose of th...|{\"APPLICATION_ID\"...|\n", - "|Intimate partner ...|{\"APPLICATION_ID\"...|\n", - "|ACF's Office of R...|{\"APPLICATION_ID\"...|\n", - "|The Temporary Ass...|{\"APPLICATION_ID\"...|\n", - "|Investing in Qual...|{\"APPLICATION_ID\"...|\n", - "|Current developme...|{\"APPLICATION_ID\"...|\n", - "|The proposed diss...|{\"APPLICATION_ID\"...|\n", - "|As the US populat...|{\"APPLICATION_ID\"...|\n", - "|Through employing...|{\"APPLICATION_ID\"...|\n", - "|The proposed mixe...|{\"APPLICATION_ID\"...|\n", - "|To better serve D...|{\"APPLICATION_ID\"...|\n", - "|A long standing r...|{\"APPLICATION_ID\"...|\n", - "+--------------------+--------------------+\n", - "only showing top 20 rows\n", - "\n", - "Total num_rows of input is 10000\n", - "num_bands is 9, ranges is 13\n", - "generate minHashLsh started ...\n", - "generate minHashLsh took 64.54865999799995 sec\n", - "generate_connected_components => duplicates started ...\n" - ] + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "100%|██████████| 13/13 [00:00<00:00, 69283.29it/s]\n" - ] + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "generate_connected_components => duplicates took 0.8337461669998447 sec\n", - "deduplicate input data started ...\n", - "deduplicate input data took 0.9185702700001457 sec\n", - "Completed!!\n", - " total processed 10000 documents\n", - " total detected 12 duplicated documents, exact deduplicated counts is 12\n", - " duplicate ratio is 0.0012\n", - "output is\n", - "+--------------+--------------------+--------------------+\n", - "|filename_docid| text| meta|\n", - "+--------------+--------------------+--------------------+\n", - "| global_id@0|The National Dome...|{\"APPLICATION_ID\"...|\n", - "| global_id@1|The Office of Pla...|{\"APPLICATION_ID\"...|\n", - "| global_id@2|Improving outcome...|{\"APPLICATION_ID\"...|\n", - "| global_id@3|This project is i...|{\"APPLICATION_ID\"...|\n", - "| global_id@4|The CCDF Policies...|{\"APPLICATION_ID\"...|\n", - "| global_id@5|The overall purpo...|{\"APPLICATION_ID\"...|\n", - "| global_id@6|This contract wil...|{\"APPLICATION_ID\"...|\n", - "| global_id@7|The purpose of th...|{\"APPLICATION_ID\"...|\n", - "| global_id@8|The purpose of th...|{\"APPLICATION_ID\"...|\n", - "| global_id@9|Intimate partner ...|{\"APPLICATION_ID\"...|\n", - "| global_id@10|ACF's Office of R...|{\"APPLICATION_ID\"...|\n", - "| global_id@11|The Temporary Ass...|{\"APPLICATION_ID\"...|\n", - "| global_id@12|Investing in Qual...|{\"APPLICATION_ID\"...|\n", - "| global_id@13|Current developme...|{\"APPLICATION_ID\"...|\n", - "| global_id@14|The proposed diss...|{\"APPLICATION_ID\"...|\n", - "| global_id@15|As the US populat...|{\"APPLICATION_ID\"...|\n", - "| global_id@16|Through employing...|{\"APPLICATION_ID\"...|\n", - "| global_id@17|The proposed mixe...|{\"APPLICATION_ID\"...|\n", - "| global_id@18|To better serve D...|{\"APPLICATION_ID\"...|\n", - "| global_id@19|A long standing r...|{\"APPLICATION_ID\"...|\n", - "+--------------+--------------------+--------------------+\n", - "only showing top 20 rows\n", - "\n", - "Total num_rows of output is 9988\n" - ] + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "2f6ad7bbc0964d7696c7dec5d0e66f44": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_60dd954b33414adfabf772f49ea2f3a2", + "IPY_MODEL_93697baecfd442fa8d8db709cfc82eee", + "IPY_MODEL_77548643af8d430db70bfb0af3707f91" + ], + "layout": "IPY_MODEL_92f4fcc6115c4f809c15b942ca0d11d4" + } + }, + "60dd954b33414adfabf772f49ea2f3a2": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_90a32f5a48a74578bad33421c0e1599c", + "placeholder": "​", + "style": "IPY_MODEL_ec2613a4e1c04b2789a4ca8a257bda53", + "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 0.0 MiB/1.9 GiB object_store_memory: 100%" + } + }, + "93697baecfd442fa8d8db709cfc82eee": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f955ca8d9b9e451791a5aa53bb984a71", + "max": 400, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_0d52219723f944eb8b34e5aee50298be", + "value": 20 + } + }, + "77548643af8d430db70bfb0af3707f91": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_58951323a0804ad8ad9d68dd4292f35f", + "placeholder": "​", + "style": "IPY_MODEL_c9d153b598854d0686849b48f84aa01e", + "value": " 20/20 [00:16<00:00, 5.89it/s]" + } + }, + "92f4fcc6115c4f809c15b942ca0d11d4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "90a32f5a48a74578bad33421c0e1599c": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ec2613a4e1c04b2789a4ca8a257bda53": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f955ca8d9b9e451791a5aa53bb984a71": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0d52219723f944eb8b34e5aee50298be": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "58951323a0804ad8ad9d68dd4292f35f": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c9d153b598854d0686849b48f84aa01e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "41fbe06aba494f75ba11aeaf3fd6fa94": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_2784ff8eb12c471eac0c335cc3169c5c", + "IPY_MODEL_de524508eb0947749b3f13c6710f1dbb", + "IPY_MODEL_dbe163714118476e98ec10efc2e6f1e1" + ], + "layout": "IPY_MODEL_1dc281fa098a40f6a07af047f0edd1a9" + } + }, + "2784ff8eb12c471eac0c335cc3169c5c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_789f99f9724442d59f05be15b3231888", + "placeholder": "​", + "style": "IPY_MODEL_bc776eb0348c49348497687be7316166", + "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 1.08 MiB/1.9 GiB object_store_memory: 100%" + } + }, + "de524508eb0947749b3f13c6710f1dbb": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_05302bd682724596bf8a61dbca5ae2e4", + "max": 400, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_81f6b801a20c4f5c9ab21fc0dbccbd5d", + "value": 20 + } + }, + "dbe163714118476e98ec10efc2e6f1e1": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c96dd696d0a84e8485b705750be517d7", + "placeholder": "​", + "style": "IPY_MODEL_61d3c42680814b0a95ccfac427d5c553", + "value": " 20/20 [00:04<00:00, 7.92it/s]" + } + }, + "1dc281fa098a40f6a07af047f0edd1a9": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "789f99f9724442d59f05be15b3231888": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bc776eb0348c49348497687be7316166": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "05302bd682724596bf8a61dbca5ae2e4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "81f6b801a20c4f5c9ab21fc0dbccbd5d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "c96dd696d0a84e8485b705750be517d7": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "61d3c42680814b0a95ccfac427d5c553": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + } + } } - ], - "source": [ - "from pyrecdp.core import SparkDataProcessor\n", - "from pyspark.sql.types import StructType, StructField, StringType\n", - "import pyspark.sql.functions as F\n", - "from pyrecdp.primitives.llmutils import near_dedup_spk\n", - "\n", - "data_files = [\"/content/test_data/NIH_sample.jsonl\"]\n", - "dup_dir = \"/content/fuzzy_dedup_spark\"\n", - "\n", - "ngram_size = 13\n", - "num_perm = 256\n", - "bands = 9\n", - "ranges = 13\n", - "rdp = SparkDataProcessor()\n", - "spark = rdp.spark\n", - "schema = StructType([\n", - " StructField(\"text\", StringType(), True),\n", - " StructField(\"meta\", StringType(), True)\n", - "])\n", - "spark_df = spark.read.text(data_files)\n", - "spark_df = spark_df.withColumn('jsonData', F.from_json(F.col('value'), schema)).select(\"jsonData.*\")\n", - "print(\"input is \")\n", - "spark_df.show()\n", - "print(f\"Total num_rows of input is {spark_df.count()}\")\n", - "\n", - "ret_df = near_dedup_spk(spark_df, ngram_size, num_perm, bands, ranges)\n", - "\n", - "print(\"output is\")\n", - "ret_df.show()\n", - "print(f\"Total num_rows of output is {ret_df.count()}\")\n", - "del rdp" - ] - } - ], - "metadata": { - "colab": { - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/RecDP/examples/notebooks/llmutils/classify.ipynb b/RecDP/examples/notebooks/llmutils/classify.ipynb index a8947fa8a..89ed8bf84 100644 --- a/RecDP/examples/notebooks/llmutils/classify.ipynb +++ b/RecDP/examples/notebooks/llmutils/classify.ipynb @@ -3,275 +3,1323 @@ { "cell_type": "markdown", "source": [ - "# Install pyrecdp from github" + "# RecDP LLM - ClassifyWriter\n", + "\n", + "We provide multiple Writer methods for different purpose\n", + "* ClassifyJsonlWriter\n", + "* ClassifyParquetWriter" ], "metadata": { - "id": "IJ8RaakCnsyW" + "id": "IVNSf_HhXNpO" }, - "id": "IJ8RaakCnsyW" + "id": "IVNSf_HhXNpO" }, { - "cell_type": "code", - "execution_count": null, - "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a", + "cell_type": "markdown", + "source": [ + "# Get Started" + ], "metadata": { - "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a" + "id": "q_NEHGhhXbw_" }, - "outputs": [], - "source": [ - "!pip install 'git+https://github.com/intel/e2eAIOK.git#egg=pyrecdp&subdirectory=RecDP'" - ] + "id": "q_NEHGhhXbw_" }, { "cell_type": "markdown", "source": [ - "# Install jdk for pyspark running" + "## 1. Install pyrecdp and dependencies" ], "metadata": { - "id": "TWv2WvL6nzTA" + "id": "rg9GUZ4-XfDg" }, - "id": "TWv2WvL6nzTA" + "id": "rg9GUZ4-XfDg" }, { "cell_type": "code", "source": [ - "!DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-8-jre" + "! DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-8-jre\n", + "! pip install pyrecdp --pre\n", + "# ! pip install 'git+https://github.com/intel/e2eAIOK.git#egg=pyrecdp&subdirectory=RecDP'" ], "metadata": { - "id": "vk2j9kKbSrLT" + "id": "Wjweg3dbXhI-" }, - "id": "vk2j9kKbSrLT", + "id": "Wjweg3dbXhI-", "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ - "# Prepare test data" + "## 2. Prepare test data" ], "metadata": { - "id": "ljHxOJL8n-5E" + "id": "w1JiRsdHXkCu" }, - "id": "ljHxOJL8n-5E" + "id": "w1JiRsdHXkCu" }, { "cell_type": "code", "source": [ "%mkdir -p /content/test_data\n", "%cd /content/test_data\n", - "!wget https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/arxiv_sample_100.jsonl" + "!wget -P /content/test_data https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/tiny_c4_sample.jsonl" ], "metadata": { - "id": "bWDi0vtLoHwm" + "id": "cGVSGiYlXlqY" }, - "id": "bWDi0vtLoHwm", + "id": "cGVSGiYlXlqY", "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ - "# Import classifier function" + "## 3. Classify Data based on language" ], "metadata": { - "id": "XusjrHT4tOdj" + "id": "jL9eVqZPXlFF" }, - "id": "XusjrHT4tOdj" + "id": "jL9eVqZPXlFF" + }, + { + "cell_type": "markdown", + "source": [ + "### 3.1 Write output as parquet" + ], + "metadata": { + "id": "OLBNRL68YMyT" + }, + "id": "OLBNRL68YMyT" }, { "cell_type": "code", "source": [ - "from pyrecdp.primitives.llmutils import classify_spark, language_identify_spark\n", - "from pyrecdp.primitives.llmutils.utils import get_target_file_list\n", - "from huggingface_hub import hf_hub_download\n", - "from pyrecdp.core import SparkDataProcessor" + "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", + "from pyrecdp.primitives.operations import *\n", + "\n", + "# Below is just a quick example of using some of the operation,\n", + "# full operation list please refer to RecDP LLM readme.\n", + "\n", + "pipeline = TextPipeline()\n", + "ops = [\n", + " JsonlReader(\"/content/test_data/tiny_c4_sample.jsonl\"),\n", + " LanguageIdentify(),\n", + " ClassifyParquetWriter('output/tiny_c4_sample_parquet', 'language'),\n", + "]\n", + "pipeline.add_operations(ops)\n", + "result = pipeline.execute()\n", + "del pipeline" ], "metadata": { - "id": "SkccgiE9oNyL" + "id": "wKsYSPSnpU8x", + "outputId": "653dee67-fb28-4c93-fdbb-cbd6bec693b9", + "colab": { + "base_uri": "https://localhost:8080/" + } }, - "id": "SkccgiE9oNyL", - "execution_count": 6, - "outputs": [] + "id": "wKsYSPSnpU8x", + "execution_count": 13, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "init spark\n", + "Will assign 1 cores and 10386 M memory for spark\n", + "per core memory size is 10.143 GB and shuffle_disk maximum capacity is 8589934592.000 GB\n", + "execute with spark started ...\n", + "\n", + "execute with spark took 22.19131917599998 sec\n" + ] + } + ] }, { - "cell_type": "markdown", + "cell_type": "code", "source": [ - "# Specify variables" + "## View Result\n", + "! ls output/tiny_c4_sample_parquet" ], "metadata": { - "id": "w0kSy1Fotwcl" + "id": "2UgpZyVpZFkk", + "outputId": "40ffb9bd-f098-4f54-d79e-1343b12010d6", + "colab": { + "base_uri": "https://localhost:8080/" + } }, - "id": "w0kSy1Fotwcl" + "id": "2UgpZyVpZFkk", + "execution_count": 14, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "'language=eng_Latn' 'language=kor_Hang' 'language=yue_Hant' _SUCCESS\n" + ] + } + ] }, { "cell_type": "code", "source": [ - "fasttext_model_dir = hf_hub_download(repo_id=\"facebook/fasttext-language-identification\", filename=\"model.bin\")\n", - "data_dir = \"/content/test_data/\"\n", - "data_file = '/content/test_data/arxiv_sample_100.jsonl'\n", - "classify_save_path = \"/content/test_data/output/classify_spark\"" + "import pandas as pd\n", + "pd.read_parquet(\"output/tiny_c4_sample_parquet/language=eng_Latn\")" ], "metadata": { - "id": "xM8XygxBXKfh" + "id": "UkScD2OzZvd0", + "outputId": "7826f001-6065-45b2-e154-ae136b7c9e09", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 424 + } }, - "id": "xM8XygxBXKfh", - "execution_count": 5, - "outputs": [] + "id": "UkScD2OzZvd0", + "execution_count": 15, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " text \\\n", + "0 lorazepam nombre comercial mexico From an inte... \n", + "1 It is possible to love someone who does not lo... \n", + "2 Canon PIXMA TS9520 All-in-One Print / Scan / C... \n", + "3 For those who plan on buying an iPad this Satu... \n", + "4 After tipping 25 tokens in a day, you'll be ab... \n", + ".. ... \n", + "416 Sunrise is an equal opportunity employer. Vete... \n", + "417 Home / Business / #Exploitation: Coca Cola is ... \n", + "418 I got really surprised when I saw that I recei... \n", + "419 Here's a brief schedule for 2016 as requested ... \n", + "420 It spreads like a wild fire. “It can never hap... \n", + "\n", + " meta \n", + "0 {\"timestamp\":\"2019-04-24T02:17:53Z\",\"url\":\"htt... \n", + "1 {\"timestamp\":\"2019-04-23T06:32:35Z\",\"url\":\"htt... \n", + "2 {\"timestamp\":\"2019-04-25T17:03:36Z\",\"url\":\"htt... \n", + "3 {\"timestamp\":\"2019-04-22T22:39:52Z\",\"url\":\"htt... \n", + "4 {\"timestamp\":\"2019-04-20T00:25:13Z\",\"url\":\"htt... \n", + ".. ... \n", + "416 {\"timestamp\":\"2019-04-22T10:28:15Z\",\"url\":\"htt... \n", + "417 {\"timestamp\":\"2019-04-24T18:04:45Z\",\"url\":\"htt... \n", + "418 {\"timestamp\":\"2019-04-26T08:57:28Z\",\"url\":\"htt... \n", + "419 {\"timestamp\":\"2019-04-18T10:15:11Z\",\"url\":\"htt... \n", + "420 {\"timestamp\":\"2019-04-22T18:51:33Z\",\"url\":\"htt... \n", + "\n", + "[421 rows x 2 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
textmeta
0lorazepam nombre comercial mexico From an inte...{\"timestamp\":\"2019-04-24T02:17:53Z\",\"url\":\"htt...
1It is possible to love someone who does not lo...{\"timestamp\":\"2019-04-23T06:32:35Z\",\"url\":\"htt...
2Canon PIXMA TS9520 All-in-One Print / Scan / C...{\"timestamp\":\"2019-04-25T17:03:36Z\",\"url\":\"htt...
3For those who plan on buying an iPad this Satu...{\"timestamp\":\"2019-04-22T22:39:52Z\",\"url\":\"htt...
4After tipping 25 tokens in a day, you'll be ab...{\"timestamp\":\"2019-04-20T00:25:13Z\",\"url\":\"htt...
.........
416Sunrise is an equal opportunity employer. Vete...{\"timestamp\":\"2019-04-22T10:28:15Z\",\"url\":\"htt...
417Home / Business / #Exploitation: Coca Cola is ...{\"timestamp\":\"2019-04-24T18:04:45Z\",\"url\":\"htt...
418I got really surprised when I saw that I recei...{\"timestamp\":\"2019-04-26T08:57:28Z\",\"url\":\"htt...
419Here's a brief schedule for 2016 as requested ...{\"timestamp\":\"2019-04-18T10:15:11Z\",\"url\":\"htt...
420It spreads like a wild fire. “It can never hap...{\"timestamp\":\"2019-04-22T18:51:33Z\",\"url\":\"htt...
\n", + "

421 rows × 2 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 15 + } + ] }, { - "cell_type": "markdown", + "cell_type": "code", "source": [ - "# Load data" + "import pandas as pd\n", + "pd.read_parquet(\"output/tiny_c4_sample_parquet/language=yue_Hant\")" ], "metadata": { - "id": "TVbiJxG3uNX5" + "id": "m_O5YQqMZz3P", + "outputId": "436f016e-8d8b-4d71-fcaf-2630f9c31397", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 802 + } }, - "id": "TVbiJxG3uNX5" + "id": "m_O5YQqMZz3P", + "execution_count": 16, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " text \\\n", + "0 KATALEIYA . LaraEvans4U. PreciousFoxx. FreakyA... \n", + "1 Nightqueen9 . MattPayton. xPerfectGameX. Diamo... \n", + "2 Fall Out Boy -Death Valley (Part 8 of 11) feat... \n", + "3 KateDoll . brattandjolinna. DanmBBy69. AlinaAn... \n", + "4 AlissonX23 . xYourSexyDreamx. VelourDomme. Alm... \n", + "5 Xialove Kyle1 jasmin. MillieClark. promorpheus... \n", + "6 LittlePussa LiamHolecum jasmin. MorbiidBitch. ... \n", + "7 Aeitta . pablobeda2. Marinaorlova. straponin.\\... \n", + "8 Advice, Animals, and Dad: DON'T GET JEALOUS IT... \n", + "9 LoudLove . DaringSandy. Whippedcreamer. Diamon... \n", + "10 AnnyDubois HotSurpriseBB jasmin. DeliciousWayn... \n", + "11 EbonySatin2 MaryHotBb livejasmin. KentCool. Qu... \n", + "12 beautybigpretty Amazon24 jasmin. ChantalReid. ... \n", + "13 webcamlatino . TsBeautyQUEENx. LinnMey. WildJu... \n", + "14 daynaa . TacyRope. innocentgirl2. GoddessKassi... \n", + "15 MelannieLust OhLady livejasmin. BrunetteMariss... \n", + "16 FashionofSEX . yamihot. JoeyTyler. NaughtyTOPr... \n", + "17 BrunetteJulie . MelissaNRoksana. LATYNYOUNGHOT... \n", + "18 HonestxLinsy . Lorennaxx. HottieAngelforu. ale... \n", + "19 SabrinaFlash . NatalieSkye. smaja. STRYourSwee... \n", + "20 amy06 . Luca1995. AriannaSkyy. JBigTonight.\\nM... \n", + "21 CammyJones . AlexNaughtyGirl. AbbyScott. Chris... \n", + "22 ArielDiamond2 . dollanna. AlettaTeen. PLAYFULM... \n", + "23 JessicaCloud IGOR1SWEET jasmin. TerryTrevor. K... \n", + "\n", + " meta \n", + "0 {\"timestamp\":\"2019-04-22T09:05:46Z\",\"url\":\"htt... \n", + "1 {\"timestamp\":\"2019-04-21T21:00:47Z\",\"url\":\"htt... \n", + "2 {\"timestamp\":\"2019-04-18T16:45:48Z\",\"url\":\"htt... \n", + "3 {\"timestamp\":\"2019-04-20T05:07:53Z\",\"url\":\"htt... \n", + "4 {\"timestamp\":\"2019-04-22T08:15:06Z\",\"url\":\"htt... \n", + "5 {\"timestamp\":\"2019-04-21T10:16:22Z\",\"url\":\"htt... \n", + "6 {\"timestamp\":\"2019-04-20T11:05:20Z\",\"url\":\"htt... \n", + "7 {\"timestamp\":\"2019-04-22T10:16:41Z\",\"url\":\"htt... \n", + "8 {\"timestamp\":\"2019-04-18T15:53:04Z\",\"url\":\"htt... \n", + "9 {\"timestamp\":\"2019-04-24T02:42:05Z\",\"url\":\"htt... \n", + "10 {\"timestamp\":\"2019-04-22T04:47:08Z\",\"url\":\"htt... \n", + "11 {\"timestamp\":\"2019-04-24T19:48:12Z\",\"url\":\"htt... \n", + "12 {\"timestamp\":\"2019-04-21T06:20:49Z\",\"url\":\"htt... \n", + "13 {\"timestamp\":\"2019-04-22T14:59:07Z\",\"url\":\"htt... \n", + "14 {\"timestamp\":\"2019-04-20T10:47:10Z\",\"url\":\"htt... \n", + "15 {\"timestamp\":\"2019-04-19T05:07:14Z\",\"url\":\"htt... \n", + "16 {\"timestamp\":\"2019-04-19T06:19:15Z\",\"url\":\"htt... \n", + "17 {\"timestamp\":\"2019-04-23T18:52:19Z\",\"url\":\"htt... \n", + "18 {\"timestamp\":\"2019-04-23T02:57:55Z\",\"url\":\"htt... \n", + "19 {\"timestamp\":\"2019-04-18T16:40:33Z\",\"url\":\"htt... \n", + "20 {\"timestamp\":\"2019-04-23T18:49:13Z\",\"url\":\"htt... \n", + "21 {\"timestamp\":\"2019-04-24T19:50:57Z\",\"url\":\"htt... \n", + "22 {\"timestamp\":\"2019-04-20T07:21:04Z\",\"url\":\"htt... \n", + "23 {\"timestamp\":\"2019-04-20T00:43:50Z\",\"url\":\"htt... " + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
textmeta
0KATALEIYA . LaraEvans4U. PreciousFoxx. FreakyA...{\"timestamp\":\"2019-04-22T09:05:46Z\",\"url\":\"htt...
1Nightqueen9 . MattPayton. xPerfectGameX. Diamo...{\"timestamp\":\"2019-04-21T21:00:47Z\",\"url\":\"htt...
2Fall Out Boy -Death Valley (Part 8 of 11) feat...{\"timestamp\":\"2019-04-18T16:45:48Z\",\"url\":\"htt...
3KateDoll . brattandjolinna. DanmBBy69. AlinaAn...{\"timestamp\":\"2019-04-20T05:07:53Z\",\"url\":\"htt...
4AlissonX23 . xYourSexyDreamx. VelourDomme. Alm...{\"timestamp\":\"2019-04-22T08:15:06Z\",\"url\":\"htt...
5Xialove Kyle1 jasmin. MillieClark. promorpheus...{\"timestamp\":\"2019-04-21T10:16:22Z\",\"url\":\"htt...
6LittlePussa LiamHolecum jasmin. MorbiidBitch. ...{\"timestamp\":\"2019-04-20T11:05:20Z\",\"url\":\"htt...
7Aeitta . pablobeda2. Marinaorlova. straponin.\\...{\"timestamp\":\"2019-04-22T10:16:41Z\",\"url\":\"htt...
8Advice, Animals, and Dad: DON'T GET JEALOUS IT...{\"timestamp\":\"2019-04-18T15:53:04Z\",\"url\":\"htt...
9LoudLove . DaringSandy. Whippedcreamer. Diamon...{\"timestamp\":\"2019-04-24T02:42:05Z\",\"url\":\"htt...
10AnnyDubois HotSurpriseBB jasmin. DeliciousWayn...{\"timestamp\":\"2019-04-22T04:47:08Z\",\"url\":\"htt...
11EbonySatin2 MaryHotBb livejasmin. KentCool. Qu...{\"timestamp\":\"2019-04-24T19:48:12Z\",\"url\":\"htt...
12beautybigpretty Amazon24 jasmin. ChantalReid. ...{\"timestamp\":\"2019-04-21T06:20:49Z\",\"url\":\"htt...
13webcamlatino . TsBeautyQUEENx. LinnMey. WildJu...{\"timestamp\":\"2019-04-22T14:59:07Z\",\"url\":\"htt...
14daynaa . TacyRope. innocentgirl2. GoddessKassi...{\"timestamp\":\"2019-04-20T10:47:10Z\",\"url\":\"htt...
15MelannieLust OhLady livejasmin. BrunetteMariss...{\"timestamp\":\"2019-04-19T05:07:14Z\",\"url\":\"htt...
16FashionofSEX . yamihot. JoeyTyler. NaughtyTOPr...{\"timestamp\":\"2019-04-19T06:19:15Z\",\"url\":\"htt...
17BrunetteJulie . MelissaNRoksana. LATYNYOUNGHOT...{\"timestamp\":\"2019-04-23T18:52:19Z\",\"url\":\"htt...
18HonestxLinsy . Lorennaxx. HottieAngelforu. ale...{\"timestamp\":\"2019-04-23T02:57:55Z\",\"url\":\"htt...
19SabrinaFlash . NatalieSkye. smaja. STRYourSwee...{\"timestamp\":\"2019-04-18T16:40:33Z\",\"url\":\"htt...
20amy06 . Luca1995. AriannaSkyy. JBigTonight.\\nM...{\"timestamp\":\"2019-04-23T18:49:13Z\",\"url\":\"htt...
21CammyJones . AlexNaughtyGirl. AbbyScott. Chris...{\"timestamp\":\"2019-04-24T19:50:57Z\",\"url\":\"htt...
22ArielDiamond2 . dollanna. AlettaTeen. PLAYFULM...{\"timestamp\":\"2019-04-20T07:21:04Z\",\"url\":\"htt...
23JessicaCloud IGOR1SWEET jasmin. TerryTrevor. K...{\"timestamp\":\"2019-04-20T00:43:50Z\",\"url\":\"htt...
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 16 + } + ] }, { "cell_type": "code", "source": [ - "rdp = SparkDataProcessor()\n", - "spark=rdp.spark\n", - "spark_df = spark.read.json(data_file)\n", - "lid_df = language_identify_spark(spark_df, fasttext_model_dir)\n", - "print(\"input is\")\n", - "lid_df.show()" + "import pandas as pd\n", + "pd.read_parquet(\"output/tiny_c4_sample_parquet/language=kor_Hang\")" ], "metadata": { - "id": "ex3QUs1tuVb0", - "outputId": "d4d104a8-4b47-4996-c8fc-996e73e554bd", + "id": "XCIUT5eCbB4t", + "outputId": "7245391a-3c4d-4891-b1af-765dd7ea08b3", "colab": { - "base_uri": "https://localhost:8080/" + "base_uri": "https://localhost:8080/", + "height": 175 } }, - "id": "ex3QUs1tuVb0", - "execution_count": 7, + "id": "XCIUT5eCbB4t", + "execution_count": 18, "outputs": [ { - "output_type": "stream", - "name": "stdout", - "text": [ - "Will assign 1 cores and 10386 M memory for spark\n", - "per core memory size is 10.143 GB and shuffle_disk maximum capacity is 8589934592.000 GB\n", - "/root/.cache/huggingface/hub/models--facebook--fasttext-language-identification/snapshots/3af127d4124fc58b75666f3594bb5143b9757e78/model.bin\n", - "input is\n", - "+--------------------+--------------------+--------+\n", - "| meta| text|language|\n", - "+--------------------+--------------------+--------+\n", - "|{2203.15369, en, ...|\\section{Introduc...|eng_Latn|\n", - "|{math/9807097, en...|\\section{Introduc...|eng_Latn|\n", - "|{2008.06948, en, ...|\\section{Introduc...|eng_Latn|\n", - "|{cond-mat/9807071...|\\section{Introduc...|eng_Latn|\n", - "|{2210.10650, en, ...|\\section{\\label{s...|eng_Latn|\n", - "|{astro-ph/9807119...|\\section{Introduc...|eng_Latn|\n", - "|{2111.03152, en, ...|\\section{Introduc...|eng_Latn|\n", - "|{1606.04992, en, ...|\\n\\n\\section{Intr...|eng_Latn|\n", - "|{1608.03404, en, ...|\\section{introduc...|eng_Latn|\n", - "|{1904.10101, en, ...|\\section{Introduc...|eng_Latn|\n", - "|{cond-mat/9807275...|\\section{Introduc...|eng_Latn|\n", - "|{2109.05334, en, ...|\\section{Introduc...|eng_Latn|\n", - "|{1512.06966, en, ...|\\section{Introduc...|eng_Latn|\n", - "|{2112.04926, en, ...|\\section{Introduc...|eng_Latn|\n", - "|{2202.01000, en, ...|\\section{Introduc...|eng_Latn|\n", - "|{2209.13421, en, ...|\\section{Introduc...|eng_Latn|\n", - "|{1103.5603, en, 2...|\\section{Introduc...|eng_Latn|\n", - "|{1001.3679, en, 2...|\\section{Introduc...|eng_Latn|\n", - "|{1702.08222, en, ...|\\section{Introduc...|eng_Latn|\n", - "|{2201.05495, en, ...|\\section{Introduc...|eng_Latn|\n", - "+--------------------+--------------------+--------+\n", - "only showing top 20 rows\n", - "\n" - ] + "output_type": "execute_result", + "data": { + "text/plain": [ + " text \\\n", + "0 Image Title: Buy Leonardo Motion Sensor Faucet... \n", + "1 Feltrinelli Pordenone. Novita Mondadori 2016. ... \n", + "2 Feltrinelli Pordenone. Novita Mondadori 2016. ... \n", + "3 Cialis 20 Mg Cpr 8 About Cialis Super Active O... \n", + "\n", + " meta \n", + "0 {\"timestamp\":\"2019-04-22T02:29:16Z\",\"url\":\"htt... \n", + "1 {\"timestamp\":\"2019-04-22T12:45:56Z\",\"url\":\"htt... \n", + "2 {\"timestamp\":\"2019-04-22T12:45:56Z\",\"url\":\"htt... \n", + "3 {\"timestamp\":\"2019-04-26T16:53:08Z\",\"url\":\"htt... " + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
textmeta
0Image Title: Buy Leonardo Motion Sensor Faucet...{\"timestamp\":\"2019-04-22T02:29:16Z\",\"url\":\"htt...
1Feltrinelli Pordenone. Novita Mondadori 2016. ...{\"timestamp\":\"2019-04-22T12:45:56Z\",\"url\":\"htt...
2Feltrinelli Pordenone. Novita Mondadori 2016. ...{\"timestamp\":\"2019-04-22T12:45:56Z\",\"url\":\"htt...
3Cialis 20 Mg Cpr 8 About Cialis Super Active O...{\"timestamp\":\"2019-04-26T16:53:08Z\",\"url\":\"htt...
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 18 } ] }, { "cell_type": "markdown", "source": [ - "# Split the data into sub buckets according to lang column" + "### 3.1 Write output as Json" ], "metadata": { - "id": "QEMpJ79yuf8W" + "id": "M-X6H1aSYS5Q" }, - "id": "QEMpJ79yuf8W" + "id": "M-X6H1aSYS5Q" }, { "cell_type": "code", "source": [ - "classify_spark(lid_df, \"language\", classify_save_path, \"file://\")" + "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", + "from pyrecdp.primitives.operations import *\n", + "\n", + "# Below is just a quick example of using some of the operation,\n", + "# full operation list please refer to RecDP LLM readme.\n", + "\n", + "pipeline = TextPipeline()\n", + "ops = [\n", + " JsonlReader(\"/content/test_data/tiny_c4_sample.jsonl\"),\n", + " LanguageIdentify(),\n", + " ClassifyJsonlWriter('output/tiny_c4_sample_jsonl', 'language'),\n", + "]\n", + "pipeline.add_operations(ops)\n", + "result = pipeline.execute()\n", + "del pipeline" ], "metadata": { - "id": "iQlDQ8SrkuN9", - "outputId": "9dbebae7-89b6-4f1b-cf52-8d91588bb72e", + "id": "I0G6fI9OYWBx", + "outputId": "ebce40c2-32f2-4fc4-ce43-af1c5e4e0040", "colab": { "base_uri": "https://localhost:8080/" } }, - "id": "iQlDQ8SrkuN9", - "execution_count": 9, + "id": "I0G6fI9OYWBx", + "execution_count": 19, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "Spilt data started ...\n", - "Spilt data took 28.158131373999822 sec\n", - "Completed!!\n", - " total classify the spark dataframe by language for 100 documents\n", - " All the classified data are saving under the folder: file:///content/test_data/output/classify_spark\n" + "init spark\n", + "Will assign 1 cores and 10386 M memory for spark\n", + "per core memory size is 10.143 GB and shuffle_disk maximum capacity is 8589934592.000 GB\n", + "execute with spark started ...\n", + "\n", + "execute with spark took 34.57764651000002 sec\n" ] - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "DataFrame[meta: struct, text: string, language: string]" - ] - }, - "metadata": {}, - "execution_count": 9 } ] }, { "cell_type": "code", "source": [ - "!ls -al $classify_save_path" + "## View Result\n", + "! ls output/tiny_c4_sample_jsonl" ], "metadata": { - "id": "Yl9V2MAVvk29", - "outputId": "7d99fd6e-6506-49f5-b2a4-52105d960964", + "id": "sARQuoyWZNud", + "outputId": "6049b230-19c0-451e-c8cd-61c5f826c2c2", "colab": { "base_uri": "https://localhost:8080/" } }, - "id": "Yl9V2MAVvk29", - "execution_count": 12, + "id": "sARQuoyWZNud", + "execution_count": 20, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "total 16\n", - "drwxr-xr-x 3 root root 4096 Oct 7 10:30 .\n", - "drwxr-xr-x 3 root root 4096 Oct 7 10:29 ..\n", - "drwxr-xr-x 2 root root 4096 Oct 7 10:29 'language=eng_Latn'\n", - "-rw-r--r-- 1 root root 0 Oct 7 10:30 _SUCCESS\n", - "-rw-r--r-- 1 root root 8 Oct 7 10:30 ._SUCCESS.crc\n" + "'language=eng_Latn' 'language=kor_Hang' 'language=yue_Hant' _SUCCESS\n" ] } ] - }, - { - "cell_type": "code", - "source": [], - "metadata": { - "id": "wKsYSPSnpU8x" - }, - "id": "wKsYSPSnpU8x", - "execution_count": null, - "outputs": [] } ], "metadata": { diff --git a/RecDP/examples/notebooks/llmutils/convert.ipynb b/RecDP/examples/notebooks/llmutils/convert.ipynb index f5ddb0ca5..ede5673a5 100644 --- a/RecDP/examples/notebooks/llmutils/convert.ipynb +++ b/RecDP/examples/notebooks/llmutils/convert.ipynb @@ -43,12 +43,422 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a", "metadata": { - "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a" + "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a", + "outputId": "a8dd5d6d-26e7-4dc3-d4ca-aa894da3f42d", + "colab": { + "base_uri": "https://localhost:8080/" + } }, - "outputs": [], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Reading package lists... Done\n", + "Building dependency tree... Done\n", + "Reading state information... Done\n", + "The following additional packages will be installed:\n", + " fonts-dejavu-core fonts-dejavu-extra libatk-wrapper-java\n", + " libatk-wrapper-java-jni libfontenc1 libgail-common libgail18 libgtk2.0-0\n", + " libgtk2.0-bin libgtk2.0-common librsvg2-common libxkbfile1 libxtst6\n", + " libxxf86dga1 openjdk-8-jre-headless x11-utils\n", + "Suggested packages:\n", + " gvfs libnss-mdns fonts-nanum fonts-ipafont-gothic fonts-ipafont-mincho\n", + " fonts-wqy-microhei fonts-wqy-zenhei fonts-indic mesa-utils\n", + "The following NEW packages will be installed:\n", + " fonts-dejavu-core fonts-dejavu-extra libatk-wrapper-java\n", + " libatk-wrapper-java-jni libfontenc1 libgail-common libgail18 libgtk2.0-0\n", + " libgtk2.0-bin libgtk2.0-common librsvg2-common libxkbfile1 libxtst6\n", + " libxxf86dga1 openjdk-8-jre openjdk-8-jre-headless x11-utils\n", + "0 upgraded, 17 newly installed, 0 to remove and 18 not upgraded.\n", + "Need to get 36.7 MB of archives.\n", + "After this operation, 123 MB of additional disk space will be used.\n", + "Get:1 http://archive.ubuntu.com/ubuntu jammy/main amd64 fonts-dejavu-core all 2.37-2build1 [1,041 kB]\n", + "Get:2 http://archive.ubuntu.com/ubuntu jammy/main amd64 fonts-dejavu-extra all 2.37-2build1 [2,041 kB]\n", + "Get:3 http://archive.ubuntu.com/ubuntu jammy/main amd64 libfontenc1 amd64 1:1.1.4-1build3 [14.7 kB]\n", + "Get:4 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxkbfile1 amd64 1:1.1.0-1build3 [71.8 kB]\n", + "Get:5 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxtst6 amd64 2:1.2.3-1build4 [13.4 kB]\n", + "Get:6 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxxf86dga1 amd64 2:1.1.5-0ubuntu3 [12.6 kB]\n", + "Get:7 http://archive.ubuntu.com/ubuntu jammy/main amd64 x11-utils amd64 7.7+5build2 [206 kB]\n", + "Get:8 http://archive.ubuntu.com/ubuntu jammy/main amd64 libatk-wrapper-java all 0.38.0-5build1 [53.1 kB]\n", + "Get:9 http://archive.ubuntu.com/ubuntu jammy/main amd64 libatk-wrapper-java-jni amd64 0.38.0-5build1 [49.0 kB]\n", + "Get:10 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgtk2.0-common all 2.24.33-2ubuntu2 [125 kB]\n", + "Get:11 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgtk2.0-0 amd64 2.24.33-2ubuntu2 [2,037 kB]\n", + "Get:12 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgail18 amd64 2.24.33-2ubuntu2 [15.9 kB]\n", + "Get:13 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgail-common amd64 2.24.33-2ubuntu2 [132 kB]\n", + "Get:14 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgtk2.0-bin amd64 2.24.33-2ubuntu2 [7,932 B]\n", + "Get:15 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 librsvg2-common amd64 2.52.5+dfsg-3ubuntu0.2 [17.7 kB]\n", + "Get:16 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 openjdk-8-jre-headless amd64 8u382-ga-1~22.04.1 [30.8 MB]\n", + "Get:17 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 openjdk-8-jre amd64 8u382-ga-1~22.04.1 [75.4 kB]\n", + "Fetched 36.7 MB in 2s (18.9 MB/s)\n", + "Selecting previously unselected package fonts-dejavu-core.\n", + "(Reading database ... 120875 files and directories currently installed.)\n", + "Preparing to unpack .../00-fonts-dejavu-core_2.37-2build1_all.deb ...\n", + "Unpacking fonts-dejavu-core (2.37-2build1) ...\n", + "Selecting previously unselected package fonts-dejavu-extra.\n", + "Preparing to unpack .../01-fonts-dejavu-extra_2.37-2build1_all.deb ...\n", + "Unpacking fonts-dejavu-extra (2.37-2build1) ...\n", + "Selecting previously unselected package libfontenc1:amd64.\n", + "Preparing to unpack .../02-libfontenc1_1%3a1.1.4-1build3_amd64.deb ...\n", + "Unpacking libfontenc1:amd64 (1:1.1.4-1build3) ...\n", + "Selecting previously unselected package libxkbfile1:amd64.\n", + "Preparing to unpack .../03-libxkbfile1_1%3a1.1.0-1build3_amd64.deb ...\n", + "Unpacking libxkbfile1:amd64 (1:1.1.0-1build3) ...\n", + "Selecting previously unselected package libxtst6:amd64.\n", + "Preparing to unpack .../04-libxtst6_2%3a1.2.3-1build4_amd64.deb ...\n", + "Unpacking libxtst6:amd64 (2:1.2.3-1build4) ...\n", + "Selecting previously unselected package libxxf86dga1:amd64.\n", + "Preparing to unpack .../05-libxxf86dga1_2%3a1.1.5-0ubuntu3_amd64.deb ...\n", + "Unpacking libxxf86dga1:amd64 (2:1.1.5-0ubuntu3) ...\n", + "Selecting previously unselected package x11-utils.\n", + "Preparing to unpack .../06-x11-utils_7.7+5build2_amd64.deb ...\n", + "Unpacking x11-utils (7.7+5build2) ...\n", + "Selecting previously unselected package libatk-wrapper-java.\n", + "Preparing to unpack .../07-libatk-wrapper-java_0.38.0-5build1_all.deb ...\n", + "Unpacking libatk-wrapper-java (0.38.0-5build1) ...\n", + "Selecting previously unselected package libatk-wrapper-java-jni:amd64.\n", + "Preparing to unpack .../08-libatk-wrapper-java-jni_0.38.0-5build1_amd64.deb ...\n", + "Unpacking libatk-wrapper-java-jni:amd64 (0.38.0-5build1) ...\n", + "Selecting previously unselected package libgtk2.0-common.\n", + "Preparing to unpack .../09-libgtk2.0-common_2.24.33-2ubuntu2_all.deb ...\n", + "Unpacking libgtk2.0-common (2.24.33-2ubuntu2) ...\n", + "Selecting previously unselected package libgtk2.0-0:amd64.\n", + "Preparing to unpack .../10-libgtk2.0-0_2.24.33-2ubuntu2_amd64.deb ...\n", + "Unpacking libgtk2.0-0:amd64 (2.24.33-2ubuntu2) ...\n", + "Selecting previously unselected package libgail18:amd64.\n", + "Preparing to unpack .../11-libgail18_2.24.33-2ubuntu2_amd64.deb ...\n", + "Unpacking libgail18:amd64 (2.24.33-2ubuntu2) ...\n", + "Selecting previously unselected package libgail-common:amd64.\n", + "Preparing to unpack .../12-libgail-common_2.24.33-2ubuntu2_amd64.deb ...\n", + "Unpacking libgail-common:amd64 (2.24.33-2ubuntu2) ...\n", + "Selecting previously unselected package libgtk2.0-bin.\n", + "Preparing to unpack .../13-libgtk2.0-bin_2.24.33-2ubuntu2_amd64.deb ...\n", + "Unpacking libgtk2.0-bin (2.24.33-2ubuntu2) ...\n", + "Selecting previously unselected package librsvg2-common:amd64.\n", + "Preparing to unpack .../14-librsvg2-common_2.52.5+dfsg-3ubuntu0.2_amd64.deb ...\n", + "Unpacking librsvg2-common:amd64 (2.52.5+dfsg-3ubuntu0.2) ...\n", + "Selecting previously unselected package openjdk-8-jre-headless:amd64.\n", + "Preparing to unpack .../15-openjdk-8-jre-headless_8u382-ga-1~22.04.1_amd64.deb ...\n", + "Unpacking openjdk-8-jre-headless:amd64 (8u382-ga-1~22.04.1) ...\n", + "Selecting previously unselected package openjdk-8-jre:amd64.\n", + "Preparing to unpack .../16-openjdk-8-jre_8u382-ga-1~22.04.1_amd64.deb ...\n", + "Unpacking openjdk-8-jre:amd64 (8u382-ga-1~22.04.1) ...\n", + "Setting up libxtst6:amd64 (2:1.2.3-1build4) ...\n", + "Setting up libxxf86dga1:amd64 (2:1.1.5-0ubuntu3) ...\n", + "Setting up libfontenc1:amd64 (1:1.1.4-1build3) ...\n", + "Setting up openjdk-8-jre-headless:amd64 (8u382-ga-1~22.04.1) ...\n", + "update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/orbd to provide /usr/bin/orbd (orbd) in auto mode\n", + "update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/servertool to provide /usr/bin/servertool (servertool) in auto mode\n", + "update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/tnameserv to provide /usr/bin/tnameserv (tnameserv) in auto mode\n", + "Setting up fonts-dejavu-core (2.37-2build1) ...\n", + "Setting up librsvg2-common:amd64 (2.52.5+dfsg-3ubuntu0.2) ...\n", + "Setting up fonts-dejavu-extra (2.37-2build1) ...\n", + "Setting up libgtk2.0-common (2.24.33-2ubuntu2) ...\n", + "Setting up libxkbfile1:amd64 (1:1.1.0-1build3) ...\n", + "Setting up libgtk2.0-0:amd64 (2.24.33-2ubuntu2) ...\n", + "Setting up libgail18:amd64 (2.24.33-2ubuntu2) ...\n", + "Setting up libgtk2.0-bin (2.24.33-2ubuntu2) ...\n", + "Setting up x11-utils (7.7+5build2) ...\n", + "Setting up libatk-wrapper-java (0.38.0-5build1) ...\n", + "Setting up libgail-common:amd64 (2.24.33-2ubuntu2) ...\n", + "Setting up libatk-wrapper-java-jni:amd64 (0.38.0-5build1) ...\n", + "Setting up openjdk-8-jre:amd64 (8u382-ga-1~22.04.1) ...\n", + "update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/policytool to provide /usr/bin/policytool (policytool) in auto mode\n", + "Processing triggers for fontconfig (2.13.1-4.2ubuntu5) ...\n", + "Processing triggers for hicolor-icon-theme (0.17-2) ...\n", + "Processing triggers for libc-bin (2.35-0ubuntu3.1) ...\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbb.so.12 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbbbind_2_5.so.3 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbbmalloc.so.2 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbbmalloc_proxy.so.2 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbbbind.so.3 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbbbind_2_0.so.3 is not a symbolic link\n", + "\n", + "Processing triggers for man-db (2.10.2-1) ...\n", + "Processing triggers for libgdk-pixbuf-2.0-0:amd64 (2.42.8+dfsg-1ubuntu0.2) ...\n", + "Collecting pyrecdp\n", + " Downloading pyrecdp-1.6.1b2023101201.tar.gz (238 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m238.8/238.8 kB\u001b[0m \u001b[31m5.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Installing build dependencies ... \u001b[?25l\u001b[?25hdone\n", + " Getting requirements to build wheel ... \u001b[?25l\u001b[?25hdone\n", + " Preparing metadata (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n", + "Requirement already satisfied: scikit-learn in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (1.2.2)\n", + "Requirement already satisfied: psutil in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (5.9.5)\n", + "Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (4.66.1)\n", + "Requirement already satisfied: pyyaml in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (6.0.1)\n", + "Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (1.5.3)\n", + "Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (1.23.5)\n", + "Requirement already satisfied: pyarrow in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (9.0.0)\n", + "Collecting pandas-flavor (from pyrecdp)\n", + " Downloading pandas_flavor-0.6.0-py3-none-any.whl (7.2 kB)\n", + "Collecting featuretools (from pyrecdp)\n", + " Downloading featuretools-1.27.0-py3-none-any.whl (618 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m618.3/618.3 kB\u001b[0m \u001b[31m11.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: bokeh>=2.4.2 in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (3.2.2)\n", + "Collecting transformers (from pyrecdp)\n", + " Downloading transformers-4.34.0-py3-none-any.whl (7.7 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.7/7.7 MB\u001b[0m \u001b[31m27.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: ipywidgets in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (7.7.1)\n", + "Requirement already satisfied: shapely in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (2.0.1)\n", + "Requirement already satisfied: graphviz in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (0.20.1)\n", + "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (2.31.0)\n", + "Requirement already satisfied: distro in /usr/lib/python3/dist-packages (from pyrecdp) (1.7.0)\n", + "Collecting pyspark==3.4.0 (from pyrecdp)\n", + " Downloading pyspark-3.4.0.tar.gz (310.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m310.8/310.8 MB\u001b[0m \u001b[31m3.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "Collecting lightgbm<4.0.0 (from pyrecdp)\n", + " Downloading lightgbm-3.3.5-py3-none-manylinux1_x86_64.whl (2.0 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m84.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: matplotlib in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (3.7.1)\n", + "Collecting category-encoders (from pyrecdp)\n", + " Downloading category_encoders-2.6.2-py2.py3-none-any.whl (81 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m81.8/81.8 kB\u001b[0m \u001b[31m11.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: seaborn in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (0.12.2)\n", + "Requirement already satisfied: numba in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (0.56.4)\n", + "Requirement already satisfied: missingno in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (0.5.2)\n", + "Collecting datasketch==1.5.9 (from pyrecdp)\n", + " Downloading datasketch-1.5.9-py3-none-any.whl (76 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m76.7/76.7 kB\u001b[0m \u001b[31m11.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting ftfy==6.1.1 (from pyrecdp)\n", + " Downloading ftfy-6.1.1-py3-none-any.whl (53 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m53.1/53.1 kB\u001b[0m \u001b[31m6.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting jsonlines==3.1.0 (from pyrecdp)\n", + " Downloading jsonlines-3.1.0-py3-none-any.whl (8.6 kB)\n", + "Collecting networkit==10.1 (from pyrecdp)\n", + " Downloading networkit-10.1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (9.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m9.8/9.8 MB\u001b[0m \u001b[31m38.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: nltk==3.8.1 in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (3.8.1)\n", + "Requirement already satisfied: regex==2023.6.3 in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (2023.6.3)\n", + "Collecting scipy==1.10.1 (from pyrecdp)\n", + " Downloading scipy-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (34.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m34.4/34.4 MB\u001b[0m \u001b[31m39.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting datasets>=2.7.0 (from pyrecdp)\n", + " Downloading datasets-2.14.5-py3-none-any.whl (519 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m519.6/519.6 kB\u001b[0m \u001b[31m49.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: typer>=0.6.1 in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (0.9.0)\n", + "Collecting phonenumbers (from pyrecdp)\n", + " Downloading phonenumbers-8.13.22-py2.py3-none-any.whl (2.6 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.6/2.6 MB\u001b[0m \u001b[31m63.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting fasttext==0.9.2 (from pyrecdp)\n", + " Downloading fasttext-0.9.2.tar.gz (68 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m68.8/68.8 kB\u001b[0m \u001b[31m9.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "Collecting wget==3.2 (from pyrecdp)\n", + " Downloading wget-3.2.zip (10 kB)\n", + " Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "Collecting alt-profanity-check==1.3.0 (from pyrecdp)\n", + " Downloading alt-profanity-check-1.3.0.tar.gz (1.9 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.9/1.9 MB\u001b[0m \u001b[31m90.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "Collecting huggingface-hub==0.16.4 (from pyrecdp)\n", + " Downloading huggingface_hub-0.16.4-py3-none-any.whl (268 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m268.8/268.8 kB\u001b[0m \u001b[31m25.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting loguru==0.7.2 (from pyrecdp)\n", + " Downloading loguru-0.7.2-py3-none-any.whl (62 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m62.5/62.5 kB\u001b[0m \u001b[31m8.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: tabulate==0.9.0 in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (0.9.0)\n", + "Collecting sentencepiece==0.1.99 (from pyrecdp)\n", + " Downloading sentencepiece-0.1.99-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.3/1.3 MB\u001b[0m \u001b[31m15.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting selectolax (from pyrecdp)\n", + " Downloading selectolax-0.3.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.5 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m5.5/5.5 MB\u001b[0m \u001b[31m16.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: spacy in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (3.6.1)\n", + "Requirement already satisfied: torch in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (2.0.1+cu118)\n", + "Collecting Faker (from pyrecdp)\n", + " Downloading Faker-19.10.0-py3-none-any.whl (1.7 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.7/1.7 MB\u001b[0m \u001b[31m77.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting ray (from pyrecdp)\n", + " Downloading ray-2.7.1-cp310-cp310-manylinux2014_x86_64.whl (62.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m62.4/62.4 MB\u001b[0m \u001b[31m9.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting scikit-learn (from pyrecdp)\n", + " Downloading scikit_learn-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m10.8/10.8 MB\u001b[0m \u001b[31m102.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: joblib>=1.3.1 in /usr/local/lib/python3.10/dist-packages (from alt-profanity-check==1.3.0->pyrecdp) (1.3.2)\n", + "Collecting pybind11>=2.2 (from fasttext==0.9.2->pyrecdp)\n", + " Using cached pybind11-2.11.1-py3-none-any.whl (227 kB)\n", + "Requirement already satisfied: setuptools>=0.7.0 in /usr/local/lib/python3.10/dist-packages (from fasttext==0.9.2->pyrecdp) (67.7.2)\n", + "Requirement already satisfied: wcwidth>=0.2.5 in /usr/local/lib/python3.10/dist-packages (from ftfy==6.1.1->pyrecdp) (0.2.8)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from huggingface-hub==0.16.4->pyrecdp) (3.12.4)\n", + "Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from huggingface-hub==0.16.4->pyrecdp) (2023.6.0)\n", + "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub==0.16.4->pyrecdp) (4.5.0)\n", + "Requirement already satisfied: packaging>=20.9 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub==0.16.4->pyrecdp) (23.2)\n", + "Requirement already satisfied: attrs>=19.2.0 in /usr/local/lib/python3.10/dist-packages (from jsonlines==3.1.0->pyrecdp) (23.1.0)\n", + "Requirement already satisfied: click in /usr/local/lib/python3.10/dist-packages (from nltk==3.8.1->pyrecdp) (8.1.7)\n", + "Requirement already satisfied: py4j==0.10.9.7 in /usr/local/lib/python3.10/dist-packages (from pyspark==3.4.0->pyrecdp) (0.10.9.7)\n", + "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn->pyrecdp) (3.2.0)\n", + "Requirement already satisfied: Jinja2>=2.9 in /usr/local/lib/python3.10/dist-packages (from bokeh>=2.4.2->pyrecdp) (3.1.2)\n", + "Requirement already satisfied: contourpy>=1 in /usr/local/lib/python3.10/dist-packages (from bokeh>=2.4.2->pyrecdp) (1.1.1)\n", + "Requirement already satisfied: pillow>=7.1.0 in /usr/local/lib/python3.10/dist-packages (from bokeh>=2.4.2->pyrecdp) (9.4.0)\n", + "Requirement already satisfied: tornado>=5.1 in /usr/local/lib/python3.10/dist-packages (from bokeh>=2.4.2->pyrecdp) (6.3.2)\n", + "Requirement already satisfied: xyzservices>=2021.09.1 in /usr/local/lib/python3.10/dist-packages (from bokeh>=2.4.2->pyrecdp) (2023.10.0)\n", + "Collecting dill<0.3.8,>=0.3.0 (from datasets>=2.7.0->pyrecdp)\n", + " Downloading dill-0.3.7-py3-none-any.whl (115 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m115.3/115.3 kB\u001b[0m \u001b[31m14.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting xxhash (from datasets>=2.7.0->pyrecdp)\n", + " Downloading xxhash-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (194 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m194.1/194.1 kB\u001b[0m \u001b[31m15.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting multiprocess (from datasets>=2.7.0->pyrecdp)\n", + " Downloading multiprocess-0.70.15-py310-none-any.whl (134 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m134.8/134.8 kB\u001b[0m \u001b[31m16.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: aiohttp in /usr/local/lib/python3.10/dist-packages (from datasets>=2.7.0->pyrecdp) (3.8.5)\n", + "Requirement already satisfied: wheel in /usr/local/lib/python3.10/dist-packages (from lightgbm<4.0.0->pyrecdp) (0.41.2)\n", + "Requirement already satisfied: python-dateutil>=2.8.1 in /usr/local/lib/python3.10/dist-packages (from pandas->pyrecdp) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->pyrecdp) (2023.3.post1)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->pyrecdp) (3.3.0)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->pyrecdp) (3.4)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->pyrecdp) (2.0.6)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->pyrecdp) (2023.7.22)\n", + "Requirement already satisfied: statsmodels>=0.9.0 in /usr/local/lib/python3.10/dist-packages (from category-encoders->pyrecdp) (0.14.0)\n", + "Requirement already satisfied: patsy>=0.5.1 in /usr/local/lib/python3.10/dist-packages (from category-encoders->pyrecdp) (0.5.3)\n", + "Requirement already satisfied: cloudpickle>=1.5.0 in /usr/local/lib/python3.10/dist-packages (from featuretools->pyrecdp) (2.2.1)\n", + "Requirement already satisfied: holidays>=0.13 in /usr/local/lib/python3.10/dist-packages (from featuretools->pyrecdp) (0.34)\n", + "Collecting woodwork>=0.23.0 (from featuretools->pyrecdp)\n", + " Downloading woodwork-0.26.0-py3-none-any.whl (236 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m236.0/236.0 kB\u001b[0m \u001b[31m26.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: ipykernel>=4.5.1 in /usr/local/lib/python3.10/dist-packages (from ipywidgets->pyrecdp) (5.5.6)\n", + "Requirement already satisfied: ipython-genutils~=0.2.0 in /usr/local/lib/python3.10/dist-packages (from ipywidgets->pyrecdp) (0.2.0)\n", + "Requirement already satisfied: traitlets>=4.3.1 in /usr/local/lib/python3.10/dist-packages (from ipywidgets->pyrecdp) (5.7.1)\n", + "Requirement already satisfied: widgetsnbextension~=3.6.0 in /usr/local/lib/python3.10/dist-packages (from ipywidgets->pyrecdp) (3.6.6)\n", + "Requirement already satisfied: ipython>=4.0.0 in /usr/local/lib/python3.10/dist-packages (from ipywidgets->pyrecdp) (7.34.0)\n", + "Requirement already satisfied: jupyterlab-widgets>=1.0.0 in /usr/local/lib/python3.10/dist-packages (from ipywidgets->pyrecdp) (3.0.9)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib->pyrecdp) (0.12.0)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->pyrecdp) (4.43.1)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->pyrecdp) (1.4.5)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->pyrecdp) (3.1.1)\n", + "Requirement already satisfied: llvmlite<0.40,>=0.39.0dev0 in /usr/local/lib/python3.10/dist-packages (from numba->pyrecdp) (0.39.1)\n", + "Requirement already satisfied: xarray in /usr/local/lib/python3.10/dist-packages (from pandas-flavor->pyrecdp) (2023.7.0)\n", + "Requirement already satisfied: jsonschema in /usr/local/lib/python3.10/dist-packages (from ray->pyrecdp) (4.19.1)\n", + "Requirement already satisfied: msgpack<2.0.0,>=1.0.0 in /usr/local/lib/python3.10/dist-packages (from ray->pyrecdp) (1.0.7)\n", + "Requirement already satisfied: protobuf!=3.19.5,>=3.15.3 in /usr/local/lib/python3.10/dist-packages (from ray->pyrecdp) (3.20.3)\n", + "Requirement already satisfied: aiosignal in /usr/local/lib/python3.10/dist-packages (from ray->pyrecdp) (1.3.1)\n", + "Requirement already satisfied: frozenlist in /usr/local/lib/python3.10/dist-packages (from ray->pyrecdp) (1.4.0)\n", + "Requirement already satisfied: spacy-legacy<3.1.0,>=3.0.11 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (3.0.12)\n", + "Requirement already satisfied: spacy-loggers<2.0.0,>=1.0.0 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (1.0.5)\n", + "Requirement already satisfied: murmurhash<1.1.0,>=0.28.0 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (1.0.10)\n", + "Requirement already satisfied: cymem<2.1.0,>=2.0.2 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (2.0.8)\n", + "Requirement already satisfied: preshed<3.1.0,>=3.0.2 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (3.0.9)\n", + "Requirement already satisfied: thinc<8.2.0,>=8.1.8 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (8.1.12)\n", + "Requirement already satisfied: wasabi<1.2.0,>=0.9.1 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (1.1.2)\n", + "Requirement already satisfied: srsly<3.0.0,>=2.4.3 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (2.4.8)\n", + "Requirement already satisfied: catalogue<2.1.0,>=2.0.6 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (2.0.10)\n", + "Requirement already satisfied: pathy>=0.10.0 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (0.10.2)\n", + "Requirement already satisfied: smart-open<7.0.0,>=5.2.1 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (6.4.0)\n", + "Requirement already satisfied: pydantic!=1.8,!=1.8.1,<3.0.0,>=1.7.4 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (1.10.13)\n", + "Requirement already satisfied: langcodes<4.0.0,>=3.2.0 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (3.3.0)\n", + "Requirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from torch->pyrecdp) (1.12)\n", + "Requirement already satisfied: networkx in /usr/local/lib/python3.10/dist-packages (from torch->pyrecdp) (3.1)\n", + "Requirement already satisfied: triton==2.0.0 in /usr/local/lib/python3.10/dist-packages (from torch->pyrecdp) (2.0.0)\n", + "Requirement already satisfied: cmake in /usr/local/lib/python3.10/dist-packages (from triton==2.0.0->torch->pyrecdp) (3.27.6)\n", + "Requirement already satisfied: lit in /usr/local/lib/python3.10/dist-packages (from triton==2.0.0->torch->pyrecdp) (17.0.2)\n", + "Collecting tokenizers<0.15,>=0.14 (from transformers->pyrecdp)\n", + " Downloading tokenizers-0.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.8/3.8 MB\u001b[0m \u001b[31m72.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting safetensors>=0.3.1 (from transformers->pyrecdp)\n", + " Downloading safetensors-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.3/1.3 MB\u001b[0m \u001b[31m56.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.7.0->pyrecdp) (6.0.4)\n", + "Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.7.0->pyrecdp) (4.0.3)\n", + "Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.7.0->pyrecdp) (1.9.2)\n", + "Requirement already satisfied: jupyter-client in /usr/local/lib/python3.10/dist-packages (from ipykernel>=4.5.1->ipywidgets->pyrecdp) (6.1.12)\n", + "Collecting jedi>=0.16 (from ipython>=4.0.0->ipywidgets->pyrecdp)\n", + " Downloading jedi-0.19.1-py2.py3-none-any.whl (1.6 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m69.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: decorator in /usr/local/lib/python3.10/dist-packages (from ipython>=4.0.0->ipywidgets->pyrecdp) (4.4.2)\n", + "Requirement already satisfied: pickleshare in /usr/local/lib/python3.10/dist-packages (from ipython>=4.0.0->ipywidgets->pyrecdp) (0.7.5)\n", + "Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from ipython>=4.0.0->ipywidgets->pyrecdp) (3.0.39)\n", + "Requirement already satisfied: pygments in /usr/local/lib/python3.10/dist-packages (from ipython>=4.0.0->ipywidgets->pyrecdp) (2.16.1)\n", + "Requirement already satisfied: backcall in /usr/local/lib/python3.10/dist-packages (from ipython>=4.0.0->ipywidgets->pyrecdp) (0.2.0)\n", + "Requirement already satisfied: matplotlib-inline in /usr/local/lib/python3.10/dist-packages (from ipython>=4.0.0->ipywidgets->pyrecdp) (0.1.6)\n", + "Requirement already satisfied: pexpect>4.3 in /usr/local/lib/python3.10/dist-packages (from ipython>=4.0.0->ipywidgets->pyrecdp) (4.8.0)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from Jinja2>=2.9->bokeh>=2.4.2->pyrecdp) (2.1.3)\n", + "Requirement already satisfied: six in /usr/local/lib/python3.10/dist-packages (from patsy>=0.5.1->category-encoders->pyrecdp) (1.16.0)\n", + "Requirement already satisfied: blis<0.8.0,>=0.7.8 in /usr/local/lib/python3.10/dist-packages (from thinc<8.2.0,>=8.1.8->spacy->pyrecdp) (0.7.11)\n", + "Requirement already satisfied: confection<1.0.0,>=0.0.1 in /usr/local/lib/python3.10/dist-packages (from thinc<8.2.0,>=8.1.8->spacy->pyrecdp) (0.1.3)\n", + "Requirement already satisfied: notebook>=4.4.1 in /usr/local/lib/python3.10/dist-packages (from widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (6.5.5)\n", + "Requirement already satisfied: importlib-resources>=5.10.0 in /usr/local/lib/python3.10/dist-packages (from woodwork>=0.23.0->featuretools->pyrecdp) (6.1.0)\n", + "Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /usr/local/lib/python3.10/dist-packages (from jsonschema->ray->pyrecdp) (2023.7.1)\n", + "Requirement already satisfied: referencing>=0.28.4 in /usr/local/lib/python3.10/dist-packages (from jsonschema->ray->pyrecdp) (0.30.2)\n", + "Requirement already satisfied: rpds-py>=0.7.1 in /usr/local/lib/python3.10/dist-packages (from jsonschema->ray->pyrecdp) (0.10.4)\n", + "Requirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy->torch->pyrecdp) (1.3.0)\n", + "Requirement already satisfied: parso<0.9.0,>=0.8.3 in /usr/local/lib/python3.10/dist-packages (from jedi>=0.16->ipython>=4.0.0->ipywidgets->pyrecdp) (0.8.3)\n", + "Requirement already satisfied: pyzmq<25,>=17 in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (23.2.1)\n", + "Requirement already satisfied: argon2-cffi in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (23.1.0)\n", + "Requirement already satisfied: jupyter-core>=4.6.1 in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (5.3.2)\n", + "Requirement already satisfied: nbformat in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (5.9.2)\n", + "Requirement already satisfied: nbconvert>=5 in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (6.5.4)\n", + "Requirement already satisfied: nest-asyncio>=1.5 in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (1.5.8)\n", + "Requirement already satisfied: Send2Trash>=1.8.0 in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (1.8.2)\n", + "Requirement already satisfied: terminado>=0.8.3 in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (0.17.1)\n", + "Requirement already satisfied: prometheus-client in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (0.17.1)\n", + "Requirement already satisfied: nbclassic>=0.4.7 in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (1.0.0)\n", + "Requirement already satisfied: ptyprocess>=0.5 in /usr/local/lib/python3.10/dist-packages (from pexpect>4.3->ipython>=4.0.0->ipywidgets->pyrecdp) (0.7.0)\n", + "Requirement already satisfied: platformdirs>=2.5 in /usr/local/lib/python3.10/dist-packages (from jupyter-core>=4.6.1->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (3.11.0)\n", + "Requirement already satisfied: jupyter-server>=1.8 in /usr/local/lib/python3.10/dist-packages (from nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (1.24.0)\n", + "Requirement already satisfied: notebook-shim>=0.2.3 in /usr/local/lib/python3.10/dist-packages (from nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (0.2.3)\n", + "Requirement already satisfied: lxml in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (4.9.3)\n", + "Requirement already satisfied: beautifulsoup4 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (4.11.2)\n", + "Requirement already satisfied: bleach in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (6.0.0)\n", + "Requirement already satisfied: defusedxml in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (0.7.1)\n", + "Requirement already satisfied: entrypoints>=0.2.2 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (0.4)\n", + "Requirement already satisfied: jupyterlab-pygments in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (0.2.2)\n", + "Requirement already satisfied: mistune<2,>=0.8.1 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (0.8.4)\n", + "Requirement already satisfied: nbclient>=0.5.0 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (0.8.0)\n", + "Requirement already satisfied: pandocfilters>=1.4.1 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (1.5.0)\n", + "Requirement already satisfied: tinycss2 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (1.2.1)\n", + "Requirement already satisfied: fastjsonschema in /usr/local/lib/python3.10/dist-packages (from nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (2.18.1)\n", + "Requirement already satisfied: argon2-cffi-bindings in /usr/local/lib/python3.10/dist-packages (from argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (21.2.0)\n", + "Requirement already satisfied: anyio<4,>=3.1.0 in /usr/local/lib/python3.10/dist-packages (from jupyter-server>=1.8->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (3.7.1)\n", + "Requirement already satisfied: websocket-client in /usr/local/lib/python3.10/dist-packages (from jupyter-server>=1.8->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (1.6.3)\n", + "Requirement already satisfied: cffi>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from argon2-cffi-bindings->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (1.16.0)\n", + "Requirement already satisfied: soupsieve>1.2 in /usr/local/lib/python3.10/dist-packages (from beautifulsoup4->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (2.5)\n", + "Requirement already satisfied: webencodings in /usr/local/lib/python3.10/dist-packages (from bleach->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (0.5.1)\n", + "Requirement already satisfied: sniffio>=1.1 in /usr/local/lib/python3.10/dist-packages (from anyio<4,>=3.1.0->jupyter-server>=1.8->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (1.3.0)\n", + "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio<4,>=3.1.0->jupyter-server>=1.8->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (1.1.3)\n", + "Requirement already satisfied: pycparser in /usr/local/lib/python3.10/dist-packages (from cffi>=1.0.1->argon2-cffi-bindings->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (2.21)\n", + "Building wheels for collected packages: pyrecdp, alt-profanity-check, fasttext, pyspark, wget\n", + " Building wheel for pyrecdp (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for pyrecdp: filename=pyrecdp-1.6.1b2023101201-py3-none-any.whl size=302254 sha256=6e4724b20f48d61b899a09cb70010ddb2ba56f4e087ea36590778d3bc47863ab\n", + " Stored in directory: /root/.cache/pip/wheels/63/57/92/ce666c63b1b51e2dfac9355c98b031e66a6ce576c9fc6a2986\n", + " Building wheel for alt-profanity-check (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for alt-profanity-check: filename=alt_profanity_check-1.3.0-py3-none-any.whl size=1866314 sha256=db330af9863748a434fdfd5909fd7c7c584633a7c30abb6d40a36a79091f7492\n", + " Stored in directory: /root/.cache/pip/wheels/c3/90/42/6a4db18c278ef1720f9ca92275c793f52882ec5a6e044ff2ea\n", + " Building wheel for fasttext (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for fasttext: filename=fasttext-0.9.2-cp310-cp310-linux_x86_64.whl size=4199773 sha256=983b379e744ce0c040578ddfa488bbde1fc62b2efebe84fb3f8c7609cdf6ad9b\n", + " Stored in directory: /root/.cache/pip/wheels/a5/13/75/f811c84a8ab36eedbaef977a6a58a98990e8e0f1967f98f394\n", + " Building wheel for pyspark (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for pyspark: filename=pyspark-3.4.0-py2.py3-none-any.whl size=311317123 sha256=a1db492769d5402a16aa93f3262801f624258d6b3171e3ebb912d7f671787fd2\n", + " Stored in directory: /root/.cache/pip/wheels/7b/1b/4b/3363a1d04368e7ff0d408e57ff57966fcdf00583774e761327\n", + " Building wheel for wget (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for wget: filename=wget-3.2-py3-none-any.whl size=9655 sha256=00f1f1a20de5e6737bdedbf175088538db264980c26b2da5e543881a0e702d98\n", + " Stored in directory: /root/.cache/pip/wheels/8b/f1/7f/5c94f0a7a505ca1c81cd1d9208ae2064675d97582078e6c769\n", + "Successfully built pyrecdp alt-profanity-check fasttext pyspark wget\n", + "Installing collected packages: wget, sentencepiece, selectolax, phonenumbers, xxhash, scipy, safetensors, pyspark, pybind11, loguru, jsonlines, jedi, ftfy, dill, scikit-learn, networkit, multiprocess, huggingface-hub, fasttext, Faker, datasketch, woodwork, tokenizers, lightgbm, alt-profanity-check, transformers, ray, pandas-flavor, featuretools, datasets, category-encoders, pyrecdp\n", + " Attempting uninstall: scipy\n", + " Found existing installation: scipy 1.11.3\n", + " Uninstalling scipy-1.11.3:\n", + " Successfully uninstalled scipy-1.11.3\n", + " Attempting uninstall: scikit-learn\n", + " Found existing installation: scikit-learn 1.2.2\n", + " Uninstalling scikit-learn-1.2.2:\n", + " Successfully uninstalled scikit-learn-1.2.2\n", + " Attempting uninstall: lightgbm\n", + " Found existing installation: lightgbm 4.0.0\n", + " Uninstalling lightgbm-4.0.0:\n", + " Successfully uninstalled lightgbm-4.0.0\n", + "Successfully installed Faker-19.10.0 alt-profanity-check-1.3.0 category-encoders-2.6.2 datasets-2.14.5 datasketch-1.5.9 dill-0.3.7 fasttext-0.9.2 featuretools-1.27.0 ftfy-6.1.1 huggingface-hub-0.16.4 jedi-0.19.1 jsonlines-3.1.0 lightgbm-3.3.5 loguru-0.7.2 multiprocess-0.70.15 networkit-10.1 pandas-flavor-0.6.0 phonenumbers-8.13.22 pybind11-2.11.1 pyrecdp-1.6.1b2023101201 pyspark-3.4.0 ray-2.7.1 safetensors-0.4.0 scikit-learn-1.3.0 scipy-1.10.1 selectolax-0.3.16 sentencepiece-0.1.99 tokenizers-0.14.1 transformers-4.34.0 wget-3.2 woodwork-0.26.0 xxhash-3.4.1\n" + ] + } + ], "source": [ "! DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-8-jre\n", "! pip install pyrecdp --pre\n", @@ -71,7 +481,7 @@ "%mkdir -p /content/test_data\n", "%cd /content/test_data\n", "file_names = ['PMC100320.md', 'PMC100321.md', 'PMC100322.md', 'PMC100323.md', 'PMC100324.md', 'PMC100325.md', 'PMC100326.md', 'PMC100327.md']\n", - "file_list = [f\"https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/pmc/{i}\" for i in file_names]\n", + "file_list = [f\"https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/pmc/{i}\" for i in file_names]\n", "!wget -P /content/test_data {\" \".join(file_list)}" ], "metadata": { @@ -84,7 +494,7 @@ { "cell_type": "markdown", "source": [ - "## 3. convert data" + "## 3. convert dat - from seperate text files to a unified parquet" ], "metadata": { "id": "dhrC92TbIriM" @@ -101,7 +511,7 @@ "base_uri": "https://localhost:8080/" }, "id": "2MyAkmk2InU6", - "outputId": "96e6079f-29dc-4b80-cd14-61c37671d98a" + "outputId": "12eb62c5-06ec-43bc-a42c-0fde52ef5a26" }, "id": "2MyAkmk2InU6", "execution_count": 6, @@ -110,8 +520,8 @@ "output_type": "stream", "name": "stdout", "text": [ - "PMC100320.md\tPMC100321.md PMC100323.md PMC100325.md PMC100327.md\n", - "PMC100320.md.1\tPMC100322.md PMC100324.md PMC100326.md\n" + "PMC100320.md PMC100322.md PMC100324.md PMC100326.md\n", + "PMC100321.md PMC100323.md PMC100325.md PMC100327.md\n" ] } ] @@ -133,13 +543,13 @@ "metadata": { "colab": { "base_uri": "https://localhost:8080/", - "height": 1921 + "height": 335 }, "id": "g6udosvfI9oo", - "outputId": "7bedd21d-e911-41e4-b3b0-c65f077eb6aa" + "outputId": "716dd4c5-9d4c-482d-8c8b-a255cbb6a7c8" }, "id": "g6udosvfI9oo", - "execution_count": 8, + "execution_count": 7, "outputs": [ { "output_type": "stream", @@ -152,7 +562,7 @@ "output_type": "stream", "name": "stderr", "text": [ - "convert.py: 100%|██████████| 1/1 [00:05<00:00, 5.36s/it]\n" + "convert.py: 100%|██████████| 1/1 [00:13<00:00, 13.49s/it]\n" ] }, { @@ -160,30 +570,28 @@ "data": { "text/plain": [ " text \\\n", - "0 Background\\n==========\\n\\nHealth information s... \n", - "1 Background\\n==========\\n\\nCongenital fibrosis ... \n", - "2 Background\\n==========\\n\\nMost current methods... \n", - "3 Background\\n==========\\n\\nNerve growth factor ... \n", - "4 Background\\n==========\\n\\nIn 1990 the National... \n", - "5 Background\\n==========\\n\\nCongenital fibrosis ... \n", - "6 Background\\n==========\\n\\nIdentification of sp... \n", - "7 Background\\n==========\\n\\nThe manner in which ... \n", - "8 Background\\n==========\\n\\nOver the last 50 yea... \n", + "0 Background\\n==========\\n\\nIdentification of sp... \n", + "1 Background\\n==========\\n\\nHealth information s... \n", + "2 Background\\n==========\\n\\nOver the last 50 yea... \n", + "3 Background\\n==========\\n\\nThe manner in which ... \n", + "4 Background\\n==========\\n\\nMost current methods... \n", + "5 Background\\n==========\\n\\nNerve growth factor ... \n", + "6 Background\\n==========\\n\\nCongenital fibrosis ... \n", + "7 Background\\n==========\\n\\nIn 1990 the National... \n", "\n", - " meta \n", - "0 {'filename': 'PMC100325.md'} \n", - "1 {'filename': 'PMC100320.md'} \n", - "2 {'filename': 'PMC100327.md'} \n", - "3 {'filename': 'PMC100322.md'} \n", - "4 {'filename': 'PMC100324.md'} \n", - "5 {'filename': 'PMC100320.md.1'} \n", - "6 {'filename': 'PMC100321.md'} \n", - "7 {'filename': 'PMC100326.md'} \n", - "8 {'filename': 'PMC100323.md'} " + " meta \n", + "0 {'filename': 'PMC100321.md'} \n", + "1 {'filename': 'PMC100325.md'} \n", + "2 {'filename': 'PMC100323.md'} \n", + "3 {'filename': 'PMC100326.md'} \n", + "4 {'filename': 'PMC100327.md'} \n", + "5 {'filename': 'PMC100322.md'} \n", + "6 {'filename': 'PMC100320.md'} \n", + "7 {'filename': 'PMC100324.md'} " ], "text/html": [ "\n", - "
\n", + "
\n", "
\n", "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + "\n", + " \n", + " \n" + ] + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "source": [ + "from pyrecdp.primitives.llmutils.global_dedup import get_duplication_list\n", + "\n", + "out_dir = \"/content/test_data_duplications_index/\"\n", + "data_dir = \"/content/test_data_hash_indexing\"\n", + "\n", + "get_duplication_list(data_dir, out_dir)\n", + "\n", + "pdf = pd.read_parquet(out_dir)\n", + "display(pdf)" + ], + "metadata": { + "id": "ejKGxYW8p3LI", + "outputId": "8d7235a4-bbfc-449e-af9c-03dbdbc9e12d", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 147 + } + }, + "id": "ejKGxYW8p3LI", + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Will assign 1 cores and 10386 M memory for spark\n", + "per core memory size is 10.143 GB and shuffle_disk maximum capacity is 8589934592.000 GB\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " hash doc_id\n", + "0 cbf6bdde4c26dcfcc289e66dd2808a36d917827d1277ac... NIH_sample.jsonl@9026\n", + "1 f885d6525920cf293bba730b788c60c5f3b9978af1420a... NIH_sample.jsonl@1769" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "
doc_idhashtextmetasourcebytesize
0NIH_sample.jsonl@1bf1acc6a7abb6cdfdc8157f3f0ddae7a344b4618949429...The National Domestic Violence Hotline (NDVH) ...{'APPLICATION_ID': 100065}PILE-NIH_NIH_sample.jsonl1460
1NIH_sample.jsonl@24ab814d1699f93fb9d7500f7216065c3d870526aae0637...The Office of Planning, Research and Evaluatio...{'APPLICATION_ID': 100066}PILE-NIH_NIH_sample.jsonl3181
2NIH_sample.jsonl@31ec7d83045ce5002e2692acdb30a204292c02da7fd65f5...Improving outcomes for low-income fathers and ...{'APPLICATION_ID': 100067}PILE-NIH_NIH_sample.jsonl1777
3NIH_sample.jsonl@420deec0fa0d5f4995357049d3110ef1fe661579b2ea4a4...This project is implementing 36-month follow-u...{'APPLICATION_ID': 100068}PILE-NIH_NIH_sample.jsonl1760
4NIH_sample.jsonl@56581b71fc72f4c94bb743a029478291cba4cadf576155e...The CCDF Policies Database is a source of info...{'APPLICATION_ID': 100069}PILE-NIH_NIH_sample.jsonl2157
.....................
9993NIH_sample.jsonl@99961fa5db880d2a122674fdebc4ecd39b056e2d96d3957f60...Project: Research and produce a videotape that...{'APPLICATION_ID': 2120612}PILE-NIH_NIH_sample.jsonl1241
9994NIH_sample.jsonl@999779247d33552267e1cb0a2a5af570d28e8f55c555b342d4...While relapse prevention has been studied and ...{'APPLICATION_ID': 2120613}PILE-NIH_NIH_sample.jsonl1281
9995NIH_sample.jsonl@9998fae920171a632df483a495172cc4085da8ec1232c30334...The proposed study on recruitment, adherence a...{'APPLICATION_ID': 2120616}PILE-NIH_NIH_sample.jsonl2867
\n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", + " \n", + " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", " \n", " \n", "
hashdoc_id
9996NIH_sample.jsonl@99996890265c9bfcb7c1eff700c2a99982d1298adce6c9e876...Recent studies suggest that HIV epidemics are ...{'APPLICATION_ID': 2120620}PILE-NIH_NIH_sample.jsonl24240cbf6bdde4c26dcfcc289e66dd2808a36d917827d1277ac...NIH_sample.jsonl@9026
9997NIH_sample.jsonl@100004b9be8fbbedfb5e8c71fd1a2419b2b724c6c48597837fc...The overall goal of this study is to develop a...{'APPLICATION_ID': 2120624}PILE-NIH_NIH_sample.jsonl14631f885d6525920cf293bba730b788c60c5f3b9978af1420a...NIH_sample.jsonl@1769
\n", - "

9998 rows × 6 columns

\n", "
\n", "
\n", "\n", "
\n", - "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 9 } ] } diff --git a/RecDP/examples/notebooks/llmutils/reader.ipynb b/RecDP/examples/notebooks/llmutils/reader.ipynb index 80d84f95d..c3d05b702 100644 --- a/RecDP/examples/notebooks/llmutils/reader.ipynb +++ b/RecDP/examples/notebooks/llmutils/reader.ipynb @@ -1,180 +1,4086 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "BT-BjcaHj3eh" - }, - "source": [ - "## Install pyrecdp from github" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "E3ffXVymdeKg" - }, - "outputs": [], - "source": [ - "! pip install 'git+https://github.com/intel/e2eAIOK.git#egg=pyrecdp&subdirectory=RecDP'" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "KVAcXKenj_sZ" - }, - "source": [ - "## Install jdk for pyspark running" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "4Z1dPdx3dwf1" - }, - "outputs": [], - "source": [ - "! DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-8-jre" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "bMqBJ9eckIs6" - }, - "source": [ - "### Prepare test data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "2SFjDgfLd4qE" - }, - "outputs": [], - "source": [ - "%mkdir -p /content/test_data\n", - "%cd /content/test_data\n", - "!wget -P /content/test_data https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/arxiv_sample_100.jsonl\n", - "!wget -P /content/test_data https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/github_sample_50.jsonl\n", - "!wget -P /content/test_data https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/pii_test.jsonl\n", - "!wget -P /content/test_data https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/tiny_c4_sample.jsonl" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "JjTnnzw_kRVV" - }, - "source": [ - "## Import filter functions" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "id": "Swy-H3HQepjA" - }, - "outputs": [], - "source": [ - "from pyrecdp.primitives.llmutils.text_fixer import text_fixer\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "XXGify_rkXHZ" - }, - "source": [ - "## Specify input data path, output path,input data type and text types" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "id": "UvIWsnV-fYmv" - }, - "outputs": [], - "source": [ - "data_dir = \"/content/test_data\"\n", - "out_dir = \"/content/output\"\n", - "in_type = \"jsonl\"\n", - "text_types = [\"html\", 'latex', \"codes\"]\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "nj0LuIsFkhRr" - }, - "source": [ - "## Process the 'text' column and remove unnecessary control characters, HTML elements and comments\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# RecDP LLM - Reader\n", + "\n", + "We provide multiple Reader methods for different purpose\n", + "* JsonlReader\n", + "* ParquetReader\n", + "* SourcedJsonlReader\n", + "* SourcedParquetReader" + ], + "metadata": { + "id": "dYQq3DgCQWtu" + } + }, + { + "cell_type": "markdown", + "source": [ + "# Get Started" + ], + "metadata": { + "id": "6o5wKI-0Q3_K" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BT-BjcaHj3eh" + }, + "source": [ + "## 1. Install pyrecdp and dependencies" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "E3ffXVymdeKg" + }, + "outputs": [], + "source": [ + "! DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-8-jre\n", + "! pip install pyrecdp --pre\n", + "# ! pip install 'git+https://github.com/intel/e2eAIOK.git#egg=pyrecdp&subdirectory=RecDP'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "bMqBJ9eckIs6" + }, + "source": [ + "## 2. Prepare test data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "2SFjDgfLd4qE" + }, + "outputs": [], + "source": [ + "%mkdir -p /content/test_data\n", + "%cd /content/test_data\n", + "!wget -P /content/test_data https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/PILE/NIH_sample.jsonl\n", + "!wget -P /content/test_data https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/PILE/NIH_sample.parquet" + ] }, - "id": "vftAYZMwfllh", - "outputId": "21041b9e-3643-427c-ca71-0eca0bf622b9" - }, - "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Will assign 1 cores and 10386 M memory for spark\n", - "per core memory size is 10.143 GB and shuffle_disk maximum capacity is 8589934592.000 GB\n", - "Load data from jsonl file started ...\n", - "Load data from jsonl file took 0.7552096419999543 sec\n", - "Processing data started ...\n", - "Processing data took 0.12260321699977794 sec\n", - "Save data started ...\n", - "Save data took 11.986804642999687 sec\n", - "Completed!!\n", - " Loaded and processed total 602 documents\n" - ] + "cell_type": "markdown", + "metadata": { + "id": "JjTnnzw_kRVV" + }, + "source": [ + "## 3. Reader" + ] + }, + { + "cell_type": "markdown", + "source": [ + "### 3.1 JsonlReader" + ], + "metadata": { + "id": "M3LlsCNWRwiw" + } + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "id": "Swy-H3HQepjA", + "outputId": "ed5801e5-07d5-44bc-c18f-e8c071afe919", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 617, + "referenced_widgets": [ + "9989f80e386c4d2089fde9d111d4380a", + "5046e836749e430283fc5d83e0adefea", + "76fe681245484067bc9c33cf697688f6", + "b1d932b232a54d218d1f951179ec0b58", + "4e1d0496e9904f989b64b98036980a1c", + "1a26aabdfcd649378b06ba30a5dc5ce7", + "94a407209e3c4b2b9698cc30e7dc4dd0", + "c29a53da225e44aa95e9eef92618c445", + "4324eeeee08e4c5ab7af580fb36552ee", + "b55707a4cd094c2fae1b6eec1b3c9bfe", + "c3a8181a5b2f4893b9de4a365cb1c8ab" + ] + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "init ray\n", + "init ray with total mem of 8167961395, total core of 1\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2023-10-11 20:05:58,658\tWARNING services.py:1889 -- WARNING: The object store is using /tmp instead of /dev/shm because /dev/shm has only 6133116928 bytes available. This will harm performance! You may be able to free up space by deleting files in /dev/shm. If you are inside a Docker container, you can increase /dev/shm size by passing '--shm-size=8.37gb' to 'docker run' (or add it to the run_options list in a Ray cluster config). Make sure to set this to more than 30% of available RAM.\n", + "2023-10-11 20:05:59,792\tINFO worker.py:1642 -- Started a local Ray instance.\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "execute with ray started ...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2023-10-11 20:06:02,237\tINFO read_api.py:406 -- To satisfy the requested parallelism of 20, each read task output is split into 20 smaller blocks.\n", + "2023-10-11 20:06:02,278\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[ReadText->SplitBlocks(20)] -> TaskPoolMapOperator[Map(convert_json)]\n", + "2023-10-11 20:06:02,288\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-10-11 20:06:02,292\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running 0: 0%| | 0/400 [00:00\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
metatext
0{'APPLICATION_ID': 100065}The National Domestic Violence Hotline (NDVH) ...
1{'APPLICATION_ID': 100066}The Office of Planning, Research and Evaluatio...
2{'APPLICATION_ID': 100067}Improving outcomes for low-income fathers and ...
3{'APPLICATION_ID': 100068}This project is implementing 36-month follow-u...
4{'APPLICATION_ID': 100069}The CCDF Policies Database is a source of info...
.........
9995{'APPLICATION_ID': 2120612}Project: Research and produce a videotape that...
9996{'APPLICATION_ID': 2120613}While relapse prevention has been studied and ...
9997{'APPLICATION_ID': 2120616}The proposed study on recruitment, adherence a...
9998{'APPLICATION_ID': 2120620}Recent studies suggest that HIV epidemics are ...
9999{'APPLICATION_ID': 2120624}The overall goal of this study is to develop a...
\n", + "

10000 rows × 2 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 2 + } + ], + "source": [ + "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", + "from pyrecdp.primitives.operations import *\n", + "\n", + "# Below is just a quick example of using some of the operation,\n", + "# full operation list please refer to RecDP LLM readme.\n", + "\n", + "pipeline = TextPipeline()\n", + "ops = [\n", + " JsonlReader(\"/content/test_data/NIH_sample.jsonl\"),\n", + "]\n", + "pipeline.add_operations(ops)\n", + "result = pipeline.execute().to_pandas()\n", + "del pipeline\n", + "result" + ] + }, + { + "cell_type": "markdown", + "source": [ + "### 3.2 ParquetReader" + ], + "metadata": { + "id": "17unVQqtR0zu" + } + }, + { + "cell_type": "code", + "source": [ + "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", + "from pyrecdp.primitives.operations import *\n", + "\n", + "# Below is just a quick example of using some of the operation,\n", + "# full operation list please refer to RecDP LLM readme.\n", + "\n", + "pipeline = TextPipeline()\n", + "ops = [\n", + " ParquetReader(\"/content/test_data/NIH_sample.parquet\"),\n", + "]\n", + "pipeline.add_operations(ops)\n", + "result = pipeline.execute().to_pandas()\n", + "del pipeline\n", + "result" + ], + "metadata": { + "id": "GymNEmEpR0BU", + "outputId": "c1c60679-5474-4832-e05d-5c6ac8825645", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 669, + "referenced_widgets": [ + "bec2ffdb72404bdb9ac2c189e3e03c47", + "8e57b5bf918d4c6e811ef7d369218f9d", + "753415f88b884138ae6dcddba8a6f2b0", + "8d8bed98eadb4a539d7ed07f67bbb1b2", + "538a19cc1c58459b9209b0f0f05e6862", + "13ae6831f1b149e6b361c490a8bd03ab", + "198b47dc2d514a07bb5358a8f68c96b7", + "07c185bc54e548fba1c515ce872e3534", + "45f3e35ed0224c30ab3d9722bab8bee4", + "5a48a01f5fc045a28169c0ae92cad28e", + "4c724965347e405ba857cac12f17c8f4", + "9a67a6dbddd14c12b4ae255acc4f4d8c", + "62fabe87e79d44e39d3152b632b09379", + "9b83c29b39ff46ab8f1883ff13270129", + "0f07ea2978b64887846725b03952dbd4", + "26fd3e4edfc443a1b767f19c4e44399b", + "2cccad9169f54e53a203b2616faa3ff7", + "e41a8ab25b3146d2b0c98e6b7b46332b", + "8f5d07d1f284462c8e26599f192cc719", + "654f84c0eb874a28ab65d4fe271b5082", + "4038c2837cee4fca8760b9ff558d8983", + "2006233f573f46a4b758ff2aa9e5c2e3" + ] + } + }, + "execution_count": 3, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "init ray\n", + "init ray with total mem of 8167961395, total core of 1\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2023-10-11 20:06:10,708\tWARNING services.py:1889 -- WARNING: The object store is using /tmp instead of /dev/shm because /dev/shm has only 6133116928 bytes available. This will harm performance! You may be able to free up space by deleting files in /dev/shm. If you are inside a Docker container, you can increase /dev/shm size by passing '--shm-size=8.37gb' to 'docker run' (or add it to the run_options list in a Ray cluster config). Make sure to set this to more than 30% of available RAM.\n", + "2023-10-11 20:06:11,882\tINFO worker.py:1642 -- Started a local Ray instance.\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "execute with ray started ...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[2m\u001b[36m(_get_reader pid=8691)\u001b[0m /usr/local/lib/python3.10/dist-packages/ray/data/datasource/parquet_datasource.py:259: FutureWarning: 'ParquetDataset.pieces' attribute is deprecated as of pyarrow 5.0.0 and will be removed in a future version. Use the '.fragments' attribute instead\n", + "\u001b[2m\u001b[36m(_get_reader pid=8691)\u001b[0m pq_ds.pieces, **prefetch_remote_args\n", + "\u001b[2m\u001b[36m(_get_reader pid=8691)\u001b[0m /usr/local/lib/python3.10/dist-packages/ray/data/datasource/parquet_datasource.py:269: FutureWarning: 'ParquetDataset.pieces' attribute is deprecated as of pyarrow 5.0.0 and will be removed in a future version. Use the '.fragments' attribute instead\n", + "\u001b[2m\u001b[36m(_get_reader pid=8691)\u001b[0m self._pq_pieces = [_SerializedPiece(p) for p in pq_ds.pieces]\n", + "\u001b[2m\u001b[36m(_get_reader pid=8691)\u001b[0m /usr/local/lib/python3.10/dist-packages/ray/data/datasource/parquet_datasource.py:270: FutureWarning: 'ParquetDataset.pieces' attribute is deprecated as of pyarrow 5.0.0 and will be removed in a future version. Use the '.fragments' attribute instead\n", + "\u001b[2m\u001b[36m(_get_reader pid=8691)\u001b[0m self._pq_paths = [p.path for p in pq_ds.pieces]\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2m\u001b[36m(pid=8691) \u001b[0mParquet Files Sample 0: 0%| | 0/1 [00:00\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
textmeta
0The National Domestic Violence Hotline (NDVH) ...{'APPLICATION_ID': 100065}
1The Office of Planning, Research and Evaluatio...{'APPLICATION_ID': 100066}
2Improving outcomes for low-income fathers and ...{'APPLICATION_ID': 100067}
3This project is implementing 36-month follow-u...{'APPLICATION_ID': 100068}
4The CCDF Policies Database is a source of info...{'APPLICATION_ID': 100069}
.........
9995Project: Research and produce a videotape that...{'APPLICATION_ID': 2120612}
9996While relapse prevention has been studied and ...{'APPLICATION_ID': 2120613}
9997The proposed study on recruitment, adherence a...{'APPLICATION_ID': 2120616}
9998Recent studies suggest that HIV epidemics are ...{'APPLICATION_ID': 2120620}
9999The overall goal of this study is to develop a...{'APPLICATION_ID': 2120624}
\n", + "

10000 rows × 2 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + " \n" + ] + }, + "metadata": {}, + "execution_count": 3 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### 3.3 SourcedJsonlReader" + ], + "metadata": { + "id": "8vF5ByysR_hC" + } + }, + { + "cell_type": "code", + "source": [ + "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", + "from pyrecdp.primitives.operations import *\n", + "\n", + "# Below is just a quick example of using some of the operation,\n", + "# full operation list please refer to RecDP LLM readme.\n", + "\n", + "pipeline = TextPipeline()\n", + "ops = [\n", + " SourcedJsonlReader(\"/content/test_data/NIH_sample.jsonl\"),\n", + "]\n", + "pipeline.add_operations(ops)\n", + "result = pipeline.execute().to_pandas()\n", + "del pipeline\n", + "result" + ], + "metadata": { + "id": "A_afRiPdR-4h", + "outputId": "0454e352-6031-4775-a161-9dd0f85098a5", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 704, + "referenced_widgets": [ + "95967a3523084969a0d70f0d0e7f6287", + "17f63609fa9c4afb9ea4fff15537e6d6", + "178bbcde4a6340fa8b1f90e9451ae0c3", + "8e4db74eb909472ebe6ac1685feff87d", + "ef32c460594942a5a8e71c28511bbe25", + "b14f8de8c5924512a30d2404cacf7403", + "5d566297dda446e7bcdd36548982a0ee", + "74d8d6e9217b4ae2974fa941e16d0c5d", + "d1db87dc789f468082fd194f4e98c5c2", + "75a2857f6a9b44c9b373bd6060ee839a", + "e48cf024f8e3425c985886dcfa748bab" + ] + } + }, + "execution_count": 1, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "JAVA_HOME is not set, use default value of /usr/lib/jvm/java-8-openjdk-amd64/\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.10/dist-packages/pyspark/pandas/__init__.py:50: UserWarning: 'PYARROW_IGNORE_TIMEZONE' environment variable was not set. It is required to set this environment variable to '1' in both driver and executor sides if you use pyarrow>=2.0.0. pandas-on-Spark will set it for you but it does not work if there is a Spark context already launched.\n", + " warnings.warn(\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "\t\t\t\n", + "\t\t" + ] + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "init ray\n", + "init ray with total mem of 8167961395, total core of 1\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2023-10-11 20:08:28,554\tWARNING services.py:1889 -- WARNING: The object store is using /tmp instead of /dev/shm because /dev/shm has only 6133121024 bytes available. This will harm performance! You may be able to free up space by deleting files in /dev/shm. If you are inside a Docker container, you can increase /dev/shm size by passing '--shm-size=8.37gb' to 'docker run' (or add it to the run_options list in a Ray cluster config). Make sure to set this to more than 30% of available RAM.\n", + "2023-10-11 20:08:28,776\tINFO worker.py:1642 -- Started a local Ray instance.\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "execute with ray started ...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2023-10-11 20:08:33,099\tINFO read_api.py:406 -- To satisfy the requested parallelism of 20, each read task output is split into 20 smaller blocks.\n", + "2023-10-11 20:08:33,140\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[ReadText->SplitBlocks(20)] -> TaskPoolMapOperator[Map()]\n", + "2023-10-11 20:08:33,146\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-10-11 20:08:33,151\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running 0: 0%| | 0/400 [00:00) pid=9510)\u001b[0m 2023-10-11 20:08:42.951151: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n", + "2023-10-11 20:08:49,300\tWARNING plan.py:567 -- Warning: The Ray cluster currently does not have any available CPUs. The Dataset job will hang unless more CPUs are freed up. A common reason is that cluster resources are used by Actors or Tune trials; see the following link for more details: https://docs.ray.io/en/master/data/dataset-internals.html#datasets-and-tune\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "execute with ray took 17.068184013999826 sec\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " meta \\\n", + "0 {'APPLICATION_ID': 100065} \n", + "1 {'APPLICATION_ID': 100066} \n", + "2 {'APPLICATION_ID': 100067} \n", + "3 {'APPLICATION_ID': 100068} \n", + "4 {'APPLICATION_ID': 100069} \n", + "... ... \n", + "9995 {'APPLICATION_ID': 2120612} \n", + "9996 {'APPLICATION_ID': 2120613} \n", + "9997 {'APPLICATION_ID': 2120616} \n", + "9998 {'APPLICATION_ID': 2120620} \n", + "9999 {'APPLICATION_ID': 2120624} \n", + "\n", + " text source_id \n", + "0 The National Domestic Violence Hotline (NDVH) ... NIH_sample.jsonl \n", + "1 The Office of Planning, Research and Evaluatio... NIH_sample.jsonl \n", + "2 Improving outcomes for low-income fathers and ... NIH_sample.jsonl \n", + "3 This project is implementing 36-month follow-u... NIH_sample.jsonl \n", + "4 The CCDF Policies Database is a source of info... NIH_sample.jsonl \n", + "... ... ... \n", + "9995 Project: Research and produce a videotape that... NIH_sample.jsonl \n", + "9996 While relapse prevention has been studied and ... NIH_sample.jsonl \n", + "9997 The proposed study on recruitment, adherence a... NIH_sample.jsonl \n", + "9998 Recent studies suggest that HIV epidemics are ... NIH_sample.jsonl \n", + "9999 The overall goal of this study is to develop a... NIH_sample.jsonl \n", + "\n", + "[10000 rows x 3 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
metatextsource_id
0{'APPLICATION_ID': 100065}The National Domestic Violence Hotline (NDVH) ...NIH_sample.jsonl
1{'APPLICATION_ID': 100066}The Office of Planning, Research and Evaluatio...NIH_sample.jsonl
2{'APPLICATION_ID': 100067}Improving outcomes for low-income fathers and ...NIH_sample.jsonl
3{'APPLICATION_ID': 100068}This project is implementing 36-month follow-u...NIH_sample.jsonl
4{'APPLICATION_ID': 100069}The CCDF Policies Database is a source of info...NIH_sample.jsonl
............
9995{'APPLICATION_ID': 2120612}Project: Research and produce a videotape that...NIH_sample.jsonl
9996{'APPLICATION_ID': 2120613}While relapse prevention has been studied and ...NIH_sample.jsonl
9997{'APPLICATION_ID': 2120616}The proposed study on recruitment, adherence a...NIH_sample.jsonl
9998{'APPLICATION_ID': 2120620}Recent studies suggest that HIV epidemics are ...NIH_sample.jsonl
9999{'APPLICATION_ID': 2120624}The overall goal of this study is to develop a...NIH_sample.jsonl
\n", + "

10000 rows × 3 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 1 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### 3.4 SourcedParquetReader" + ], + "metadata": { + "id": "SVLy-M8USJnt" + } + }, + { + "cell_type": "code", + "source": [ + "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", + "from pyrecdp.primitives.operations import *\n", + "\n", + "# Below is just a quick example of using some of the operation,\n", + "# full operation list please refer to RecDP LLM readme.\n", + "\n", + "pipeline = TextPipeline()\n", + "ops = [\n", + " SourcedParquetReader(\"/content/test_data/NIH_sample.parquet\"),\n", + "]\n", + "pipeline.add_operations(ops)\n", + "result = pipeline.execute().to_pandas()\n", + "del pipeline\n", + "result" + ], + "metadata": { + "id": "b0e04htzSJCk", + "outputId": "622de14a-a557-4e5f-ebd5-2365c548c76e", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 739, + "referenced_widgets": [ + "17c4cd4aa3de4b8089cf6429ad09e0d3", + "9b376935db1947c5ba613848844be959", + "d8b7b1911c50419fbf8e97274fc481e1", + "c0e55a979fb64691b9290ce5a91383d1", + "7b4543a8df7642c09028b5413f625137", + "e71bd63502174a099a6e4ca36897136d", + "84af03d6b9664367bc365e9960f4f7fd", + "8779a59e7a9b4337b958a52691c5aaee", + "200e83cade634fb0a083b67d0561ed93", + "8f1d9e4f745c4b3d8519259d0b16a7ce", + "889a1ee4b68d48149bab5b481edea58f", + "7d585c0a936d42e6926e80d03707df1a", + "18e3921334e54187972cf002305fda17", + "dab5c3d840534e73bd9f3ab83b5ba46d", + "933e20fa6180415db8632793b57c5216", + "5332b64e46a644318b730311b099626c", + "35225f770242490c987b074e79a724d9", + "2619ca15d31345b6b35f13a192bedb8c", + "f0c31619ea2941d883c024a0962f0c90", + "8a76c05a5456437b84a4914a3ed36e0e", + "ba04105094b04358a7743bc0164a27e1", + "9899c626196f4d3abf6f072387d5b211" + ] + } + }, + "execution_count": 2, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "init ray\n", + "init ray with total mem of 8167961395, total core of 1\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2023-10-11 20:08:59,031\tWARNING services.py:1889 -- WARNING: The object store is using /tmp instead of /dev/shm because /dev/shm has only 6133116928 bytes available. This will harm performance! You may be able to free up space by deleting files in /dev/shm. If you are inside a Docker container, you can increase /dev/shm size by passing '--shm-size=8.37gb' to 'docker run' (or add it to the run_options list in a Ray cluster config). Make sure to set this to more than 30% of available RAM.\n", + "2023-10-11 20:09:00,233\tINFO worker.py:1642 -- Started a local Ray instance.\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "execute with ray started ...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\u001b[2m\u001b[36m(_get_reader pid=10028)\u001b[0m /usr/local/lib/python3.10/dist-packages/ray/data/datasource/parquet_datasource.py:259: FutureWarning: 'ParquetDataset.pieces' attribute is deprecated as of pyarrow 5.0.0 and will be removed in a future version. Use the '.fragments' attribute instead\n", + "\u001b[2m\u001b[36m(_get_reader pid=10028)\u001b[0m pq_ds.pieces, **prefetch_remote_args\n", + "\u001b[2m\u001b[36m(_get_reader pid=10028)\u001b[0m /usr/local/lib/python3.10/dist-packages/ray/data/datasource/parquet_datasource.py:269: FutureWarning: 'ParquetDataset.pieces' attribute is deprecated as of pyarrow 5.0.0 and will be removed in a future version. Use the '.fragments' attribute instead\n", + "\u001b[2m\u001b[36m(_get_reader pid=10028)\u001b[0m self._pq_pieces = [_SerializedPiece(p) for p in pq_ds.pieces]\n", + "\u001b[2m\u001b[36m(_get_reader pid=10028)\u001b[0m /usr/local/lib/python3.10/dist-packages/ray/data/datasource/parquet_datasource.py:270: FutureWarning: 'ParquetDataset.pieces' attribute is deprecated as of pyarrow 5.0.0 and will be removed in a future version. Use the '.fragments' attribute instead\n", + "\u001b[2m\u001b[36m(_get_reader pid=10028)\u001b[0m self._pq_paths = [p.path for p in pq_ds.pieces]\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "\u001b[2m\u001b[36m(pid=10028) \u001b[0mParquet Files Sample 0: 0%| | 0/1 [00:00 TaskPoolMapOperator[ReadParquet->SplitBlocks(40)] -> TaskPoolMapOperator[Map()]\n", + "2023-10-11 20:09:05,764\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-10-11 20:09:05,766\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running 0: 0%| | 0/1600 [00:00) pid=10028)\u001b[0m 2023-10-11 20:09:19.738467: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "execute with ray took 21.284709955000153 sec\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " text \\\n", + "0 The National Domestic Violence Hotline (NDVH) ... \n", + "1 The Office of Planning, Research and Evaluatio... \n", + "2 Improving outcomes for low-income fathers and ... \n", + "3 This project is implementing 36-month follow-u... \n", + "4 The CCDF Policies Database is a source of info... \n", + "... ... \n", + "9995 Project: Research and produce a videotape that... \n", + "9996 While relapse prevention has been studied and ... \n", + "9997 The proposed study on recruitment, adherence a... \n", + "9998 Recent studies suggest that HIV epidemics are ... \n", + "9999 The overall goal of this study is to develop a... \n", + "\n", + " meta source_id \n", + "0 {'APPLICATION_ID': 100065} NIH_sample.parquet \n", + "1 {'APPLICATION_ID': 100066} NIH_sample.parquet \n", + "2 {'APPLICATION_ID': 100067} NIH_sample.parquet \n", + "3 {'APPLICATION_ID': 100068} NIH_sample.parquet \n", + "4 {'APPLICATION_ID': 100069} NIH_sample.parquet \n", + "... ... ... \n", + "9995 {'APPLICATION_ID': 2120612} NIH_sample.parquet \n", + "9996 {'APPLICATION_ID': 2120613} NIH_sample.parquet \n", + "9997 {'APPLICATION_ID': 2120616} NIH_sample.parquet \n", + "9998 {'APPLICATION_ID': 2120620} NIH_sample.parquet \n", + "9999 {'APPLICATION_ID': 2120624} NIH_sample.parquet \n", + "\n", + "[10000 rows x 3 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
textmetasource_id
0The National Domestic Violence Hotline (NDVH) ...{'APPLICATION_ID': 100065}NIH_sample.parquet
1The Office of Planning, Research and Evaluatio...{'APPLICATION_ID': 100066}NIH_sample.parquet
2Improving outcomes for low-income fathers and ...{'APPLICATION_ID': 100067}NIH_sample.parquet
3This project is implementing 36-month follow-u...{'APPLICATION_ID': 100068}NIH_sample.parquet
4The CCDF Policies Database is a source of info...{'APPLICATION_ID': 100069}NIH_sample.parquet
............
9995Project: Research and produce a videotape that...{'APPLICATION_ID': 2120612}NIH_sample.parquet
9996While relapse prevention has been studied and ...{'APPLICATION_ID': 2120613}NIH_sample.parquet
9997The proposed study on recruitment, adherence a...{'APPLICATION_ID': 2120616}NIH_sample.parquet
9998Recent studies suggest that HIV epidemics are ...{'APPLICATION_ID': 2120620}NIH_sample.parquet
9999The overall goal of this study is to develop a...{'APPLICATION_ID': 2120624}NIH_sample.parquet
\n", + "

10000 rows × 3 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 2 + } + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "9989f80e386c4d2089fde9d111d4380a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_5046e836749e430283fc5d83e0adefea", + "IPY_MODEL_76fe681245484067bc9c33cf697688f6", + "IPY_MODEL_b1d932b232a54d218d1f951179ec0b58" + ], + "layout": "IPY_MODEL_4e1d0496e9904f989b64b98036980a1c" + } + }, + "5046e836749e430283fc5d83e0adefea": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_1a26aabdfcd649378b06ba30a5dc5ce7", + "placeholder": "​", + "style": "IPY_MODEL_94a407209e3c4b2b9698cc30e7dc4dd0", + "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 1.08 MiB/1.9 GiB object_store_memory: 100%" + } + }, + "76fe681245484067bc9c33cf697688f6": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c29a53da225e44aa95e9eef92618c445", + "max": 400, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4324eeeee08e4c5ab7af580fb36552ee", + "value": 20 + } + }, + "b1d932b232a54d218d1f951179ec0b58": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b55707a4cd094c2fae1b6eec1b3c9bfe", + "placeholder": "​", + "style": "IPY_MODEL_c3a8181a5b2f4893b9de4a365cb1c8ab", + "value": " 20/20 [00:03<00:00, 14.79it/s]" + } + }, + "4e1d0496e9904f989b64b98036980a1c": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "1a26aabdfcd649378b06ba30a5dc5ce7": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "94a407209e3c4b2b9698cc30e7dc4dd0": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "c29a53da225e44aa95e9eef92618c445": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4324eeeee08e4c5ab7af580fb36552ee": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "b55707a4cd094c2fae1b6eec1b3c9bfe": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c3a8181a5b2f4893b9de4a365cb1c8ab": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "bec2ffdb72404bdb9ac2c189e3e03c47": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_8e57b5bf918d4c6e811ef7d369218f9d", + "IPY_MODEL_753415f88b884138ae6dcddba8a6f2b0", + "IPY_MODEL_8d8bed98eadb4a539d7ed07f67bbb1b2" + ], + "layout": "IPY_MODEL_538a19cc1c58459b9209b0f0f05e6862" + } + }, + "8e57b5bf918d4c6e811ef7d369218f9d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_13ae6831f1b149e6b361c490a8bd03ab", + "placeholder": "​", + "style": "IPY_MODEL_198b47dc2d514a07bb5358a8f68c96b7", + "value": "\u001b[2m\u001b[36m(pid=8691) \u001b[0mParquet Files Sample 0: 100%" + } + }, + "753415f88b884138ae6dcddba8a6f2b0": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_07c185bc54e548fba1c515ce872e3534", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_45f3e35ed0224c30ab3d9722bab8bee4", + "value": 1 + } + }, + "8d8bed98eadb4a539d7ed07f67bbb1b2": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_5a48a01f5fc045a28169c0ae92cad28e", + "placeholder": "​", + "style": "IPY_MODEL_4c724965347e405ba857cac12f17c8f4", + "value": " 1/1 [00:02<00:00, 2.22s/it]" + } + }, + "538a19cc1c58459b9209b0f0f05e6862": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "13ae6831f1b149e6b361c490a8bd03ab": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "198b47dc2d514a07bb5358a8f68c96b7": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "07c185bc54e548fba1c515ce872e3534": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "45f3e35ed0224c30ab3d9722bab8bee4": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "5a48a01f5fc045a28169c0ae92cad28e": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4c724965347e405ba857cac12f17c8f4": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "9a67a6dbddd14c12b4ae255acc4f4d8c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_62fabe87e79d44e39d3152b632b09379", + "IPY_MODEL_9b83c29b39ff46ab8f1883ff13270129", + "IPY_MODEL_0f07ea2978b64887846725b03952dbd4" + ], + "layout": "IPY_MODEL_26fd3e4edfc443a1b767f19c4e44399b" + } + }, + "62fabe87e79d44e39d3152b632b09379": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_2cccad9169f54e53a203b2616faa3ff7", + "placeholder": "​", + "style": "IPY_MODEL_e41a8ab25b3146d2b0c98e6b7b46332b", + "value": "Read progress 0: 100%" + } + }, + "9b83c29b39ff46ab8f1883ff13270129": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_8f5d07d1f284462c8e26599f192cc719", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_654f84c0eb874a28ab65d4fe271b5082", + "value": 1 + } + }, + "0f07ea2978b64887846725b03952dbd4": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_4038c2837cee4fca8760b9ff558d8983", + "placeholder": "​", + "style": "IPY_MODEL_2006233f573f46a4b758ff2aa9e5c2e3", + "value": " 1/1 [00:00<00:00, 3.58it/s]" + } + }, + "26fd3e4edfc443a1b767f19c4e44399b": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "2cccad9169f54e53a203b2616faa3ff7": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e41a8ab25b3146d2b0c98e6b7b46332b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "8f5d07d1f284462c8e26599f192cc719": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "654f84c0eb874a28ab65d4fe271b5082": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "4038c2837cee4fca8760b9ff558d8983": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2006233f573f46a4b758ff2aa9e5c2e3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "95967a3523084969a0d70f0d0e7f6287": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_17f63609fa9c4afb9ea4fff15537e6d6", + "IPY_MODEL_178bbcde4a6340fa8b1f90e9451ae0c3", + "IPY_MODEL_8e4db74eb909472ebe6ac1685feff87d" + ], + "layout": "IPY_MODEL_ef32c460594942a5a8e71c28511bbe25" + } + }, + "17f63609fa9c4afb9ea4fff15537e6d6": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_b14f8de8c5924512a30d2404cacf7403", + "placeholder": "​", + "style": "IPY_MODEL_5d566297dda446e7bcdd36548982a0ee", + "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 1.09 MiB/1.9 GiB object_store_memory: 100%" + } + }, + "178bbcde4a6340fa8b1f90e9451ae0c3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_74d8d6e9217b4ae2974fa941e16d0c5d", + "max": 400, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_d1db87dc789f468082fd194f4e98c5c2", + "value": 20 + } + }, + "8e4db74eb909472ebe6ac1685feff87d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_75a2857f6a9b44c9b373bd6060ee839a", + "placeholder": "​", + "style": "IPY_MODEL_e48cf024f8e3425c985886dcfa748bab", + "value": " 20/20 [00:16<00:00, 7.39it/s]" + } + }, + "ef32c460594942a5a8e71c28511bbe25": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "b14f8de8c5924512a30d2404cacf7403": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "5d566297dda446e7bcdd36548982a0ee": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "74d8d6e9217b4ae2974fa941e16d0c5d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d1db87dc789f468082fd194f4e98c5c2": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "75a2857f6a9b44c9b373bd6060ee839a": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e48cf024f8e3425c985886dcfa748bab": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "17c4cd4aa3de4b8089cf6429ad09e0d3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_9b376935db1947c5ba613848844be959", + "IPY_MODEL_d8b7b1911c50419fbf8e97274fc481e1", + "IPY_MODEL_c0e55a979fb64691b9290ce5a91383d1" + ], + "layout": "IPY_MODEL_7b4543a8df7642c09028b5413f625137" + } + }, + "9b376935db1947c5ba613848844be959": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_e71bd63502174a099a6e4ca36897136d", + "placeholder": "​", + "style": "IPY_MODEL_84af03d6b9664367bc365e9960f4f7fd", + "value": "\u001b[2m\u001b[36m(pid=10028) \u001b[0mParquet Files Sample 0: 100%" + } + }, + "d8b7b1911c50419fbf8e97274fc481e1": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_8779a59e7a9b4337b958a52691c5aaee", + "max": 1, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_200e83cade634fb0a083b67d0561ed93", + "value": 1 + } + }, + "c0e55a979fb64691b9290ce5a91383d1": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_8f1d9e4f745c4b3d8519259d0b16a7ce", + "placeholder": "​", + "style": "IPY_MODEL_889a1ee4b68d48149bab5b481edea58f", + "value": " 1/1 [00:01<00:00, 1.63s/it]" + } + }, + "7b4543a8df7642c09028b5413f625137": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "e71bd63502174a099a6e4ca36897136d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "84af03d6b9664367bc365e9960f4f7fd": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "8779a59e7a9b4337b958a52691c5aaee": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "200e83cade634fb0a083b67d0561ed93": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "8f1d9e4f745c4b3d8519259d0b16a7ce": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "889a1ee4b68d48149bab5b481edea58f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "7d585c0a936d42e6926e80d03707df1a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_18e3921334e54187972cf002305fda17", + "IPY_MODEL_dab5c3d840534e73bd9f3ab83b5ba46d", + "IPY_MODEL_933e20fa6180415db8632793b57c5216" + ], + "layout": "IPY_MODEL_5332b64e46a644318b730311b099626c" + } + }, + "18e3921334e54187972cf002305fda17": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_35225f770242490c987b074e79a724d9", + "placeholder": "​", + "style": "IPY_MODEL_2619ca15d31345b6b35f13a192bedb8c", + "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 0.52 MiB/1.9 GiB object_store_memory: 100%" + } + }, + "dab5c3d840534e73bd9f3ab83b5ba46d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f0c31619ea2941d883c024a0962f0c90", + "max": 1600, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_8a76c05a5456437b84a4914a3ed36e0e", + "value": 40 + } + }, + "933e20fa6180415db8632793b57c5216": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_ba04105094b04358a7743bc0164a27e1", + "placeholder": "​", + "style": "IPY_MODEL_9899c626196f4d3abf6f072387d5b211", + "value": " 40/40 [00:18<00:00, 15.90it/s]" + } + }, + "5332b64e46a644318b730311b099626c": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "35225f770242490c987b074e79a724d9": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2619ca15d31345b6b35f13a192bedb8c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f0c31619ea2941d883c024a0962f0c90": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8a76c05a5456437b84a4914a3ed36e0e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "ba04105094b04358a7743bc0164a27e1": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "9899c626196f4d3abf6f072387d5b211": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + } + } } - ], - "source": [ - "text_fixer(data_dir, in_type, out_dir,text_types)" - ] - } - ], - "metadata": { - "colab": { - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/RecDP/examples/notebooks/llmutils/resumable_pipeline.ipynb b/RecDP/examples/notebooks/llmutils/resumable_pipeline.ipynb index 80d84f95d..354dfca34 100644 --- a/RecDP/examples/notebooks/llmutils/resumable_pipeline.ipynb +++ b/RecDP/examples/notebooks/llmutils/resumable_pipeline.ipynb @@ -1,180 +1,4530 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "BT-BjcaHj3eh" - }, - "source": [ - "## Install pyrecdp from github" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "E3ffXVymdeKg" - }, - "outputs": [], - "source": [ - "! pip install 'git+https://github.com/intel/e2eAIOK.git#egg=pyrecdp&subdirectory=RecDP'" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "KVAcXKenj_sZ" - }, - "source": [ - "## Install jdk for pyspark running" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "4Z1dPdx3dwf1" - }, - "outputs": [], - "source": [ - "! DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-8-jre" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "bMqBJ9eckIs6" - }, - "source": [ - "### Prepare test data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "id": "2SFjDgfLd4qE" - }, - "outputs": [], - "source": [ - "%mkdir -p /content/test_data\n", - "%cd /content/test_data\n", - "!wget -P /content/test_data https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/arxiv_sample_100.jsonl\n", - "!wget -P /content/test_data https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/github_sample_50.jsonl\n", - "!wget -P /content/test_data https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/pii_test.jsonl\n", - "!wget -P /content/test_data https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/tiny_c4_sample.jsonl" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "JjTnnzw_kRVV" - }, - "source": [ - "## Import filter functions" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "id": "Swy-H3HQepjA" - }, - "outputs": [], - "source": [ - "from pyrecdp.primitives.llmutils.text_fixer import text_fixer\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "XXGify_rkXHZ" - }, - "source": [ - "## Specify input data path, output path,input data type and text types" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "id": "UvIWsnV-fYmv" - }, - "outputs": [], - "source": [ - "data_dir = \"/content/test_data\"\n", - "out_dir = \"/content/output\"\n", - "in_type = \"jsonl\"\n", - "text_types = [\"html\", 'latex', \"codes\"]\n" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "nj0LuIsFkhRr" - }, - "source": [ - "## Process the 'text' column and remove unnecessary control characters, HTML elements and comments\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# RecDP LLM - ResumableTextPipeline\n", + "\n", + "ResumableTextPipeline is designed for processing large dataset with failover support.\n", + "\n", + "User can link all the todo operations one by one and provide to pipeline. We will use a track log to capture the progress.\n", + "\n", + "If interruption happens in the middle of process, re-lauch the pipeline will resume from where left." + ], + "metadata": { + "id": "nDhyz4A3JF-4" + } + }, + { + "cell_type": "markdown", + "source": [ + "# Get started" + ], + "metadata": { + "id": "ygSsNjXDKCqx" + } + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BT-BjcaHj3eh" + }, + "source": [ + "## 1. Install pyrecdp and dependencies" + ] }, - "id": "vftAYZMwfllh", - "outputId": "21041b9e-3643-427c-ca71-0eca0bf622b9" - }, - "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "Will assign 1 cores and 10386 M memory for spark\n", - "per core memory size is 10.143 GB and shuffle_disk maximum capacity is 8589934592.000 GB\n", - "Load data from jsonl file started ...\n", - "Load data from jsonl file took 0.7552096419999543 sec\n", - "Processing data started ...\n", - "Processing data took 0.12260321699977794 sec\n", - "Save data started ...\n", - "Save data took 11.986804642999687 sec\n", - "Completed!!\n", - " Loaded and processed total 602 documents\n" - ] + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "E3ffXVymdeKg" + }, + "outputs": [], + "source": [ + "! DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-8-jre\n", + "! pip install pyrecdp --pre\n", + "# ! pip install 'git+https://github.com/intel/e2eAIOK.git#egg=pyrecdp&subdirectory=RecDP'" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "bMqBJ9eckIs6" + }, + "source": [ + "## 2. Prepare test data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "2SFjDgfLd4qE" + }, + "outputs": [], + "source": [ + "%mkdir -p /content/test_data\n", + "%cd /content/test_data\n", + "!wget -P /content/test_data https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/arxiv_sample_100.jsonl\n", + "!wget -P /content/test_data https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/tiny_c4_sample.jsonl" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "JjTnnzw_kRVV" + }, + "source": [ + "## 3. ResumableTextPipeline" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "id": "Swy-H3HQepjA", + "outputId": "87d5cdef-210a-4c96-8fb0-c38654abb41c", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000, + "referenced_widgets": [ + "ae3ac3305bbb4ef9bef2753ce8c80ea8", + "31a23eee85054cf68defd51eedc0d923", + "e35281c9c108444f91e3d2e99956c9c4", + "cb8a105d2d284cc3ad6c11ed9e0ac80a", + "e87438b63b454b6eb01c0e08eca279fa", + "f624e5cb29d04673bf562e6d117627b4", + "1ec6125904114da8b567079e7367fed3", + "691057d7d91c4c25a67c7125367affb5", + "fe997b4ba3664f488a729a98cfd5af40", + "01ec888ca5494abb808e1ff1a6b95b42", + "1064623521ff483aa68c97204c20686d", + "0fa70a2f2c404ae1a02b6e95a5eeeb94", + "666b5908fba046049a22a1c4034d0bee", + "e23f4cc64e674a53ab06331e47bf93af", + "a9c7a686804a4ee6921c531ac1aa5e61", + "389470a5ae154d8aad4167cbab7eca78", + "275b3eeeabcb4584ae4e60dc4b96d33a", + "a00d2947fd3245d3a5cec6fdb01080d2", + "c1f5351c03264b2ea3051c3fb653c59e", + "80f34a0fdb1f45dc9e6bf3d73fb9ae1f", + "c3326f3d36694b27bd38e8439848b4c4", + "c9bfd02da6414593938ce4d579e3ac4b", + "edb8c9187ce745f7a2dc83d455539fb4", + "d2a52fc97ede472ca03f019fa36e19ed", + "8c7b4eb9f5954db1b5a70cca9a98df26", + "0a524ae60f5a4fc8ab52be77170b1a6a", + "5254e81922a443d28b0f94cdca67b949", + "8bec093113ab442a81c2b189c0e842d1", + "73037f8ee21d4860a066b5e4c65401c5", + "08c52b09a8624c21a4f8816f45e4c783", + "a6c5cba7ccfd4a64acff223546df2bb4", + "2706c366900e4d0cbe7f48b0a64b9f94", + "14439e584bda44b69a1e966a7a40db05", + "94273a24a1c142a5a313acfc4d16374f", + "b68d1e2d2d654ccc960e0ae46f1bc0bc", + "900ab18e01594486a8539155c77ed120", + "dd061b7c6c29416990d1e16991dbfc69", + "f299cb222ede4c00b4f4868302a5ab1f", + "faaece59156943efa36304036cba6ded", + "dbaed49746634fa6a75c42567dcc12ff", + "d659e960c6b940fc991634b2d6e32c9a", + "2d057967f9104759a1fe126859a52148", + "cfe65ab4c32a41a09b8c2697f919249c", + "4d801d07fd1841e7bac890e46af6e8f7", + "34ea5ca01a5e4993a83b1e289e5e5be8", + "578539174be8486aa9a6f03064f3babc", + "bf01405b26be4630b8352e638e1a27d9", + "e3f800c0d292412eae99c0a77072034b", + "ee7fb0f1962f4fd28b2ae71fb731ba5c", + "59b4b05e28754a2f99b5cbf4050ab407", + "15885936a1cd4fa3815ab0cd633c3aff", + "334cedb034804e5bb229833c5ab72208", + "876ebf393fab4009ac06119de4f9ba9f", + "1bb6610f891240db8852ab2875c4de68", + "e0801f8d48704e22a98146e4bdb4d6f5", + "640c84dbb0114187abd1f3ab66f3f110", + "0b8e994fa907486eb91281c2d6fd075e", + "7ad5846e59884e8f9cdf9d6ebb0ebec9", + "a2a458c292ca4499b3498b1ce7e6a6f8", + "f06ccfdb213d40bba42d1fc919d1ab9a", + "25989f97fa124f1da1929982ea4d081b", + "548be59310e4413696ffb48bbf57225c", + "92de0b523d6e4bf5bd1bd96fc95c73e4", + "f92ffdb6309d4c6a979595fb516386df", + "d42f4011aa644090810a62467aeda5f0", + "589087f298484943a1b3ada5723d90ad", + "3344220e93cd4752ab8743f99fa2465f", + "7de96f0a8d3f4227b763dad8e465179b", + "35a9b88ffc2a4f17a5816b9e72ebacde", + "d1449e09f7044d1bae5531d6c696a78c", + "dbdd40c5a8854fb19b18fd07e6ec8ab8", + "00b98577de18459da340ec93a48704af", + "ad1c192b6d434e03b674976daafa93ed", + "fa6e2318d19d48bc9d16be031425f64e", + "33e5e1df09f543d7b6a3b7565f155187", + "ba3427245939424d8ecd04fe8322cf47", + "fc89e9814e2c40d5b32512dc83cb3549", + "4a7e258c7edc43968785d2f25336ec63", + "1ddd6cf2ca8e4cc5abe6febedfafe95b", + "c2a3b04b6c67481681f641d36f340b59", + "ae41f0fb8a014440a7950bd057c829fb", + "6c67ebc8ece34226af33e9c5cb9e554f", + "f93898579b554030aa61e620d35d8204", + "d629a9f72dad44cfb27ce741f4785488", + "46376820119f430aa647cbc1bf253a47", + "ae4bd1ce767742698d4f593e260c251b", + "08669172df55499fa14b3c825afa6951", + "0d3e9467f77d4c7aafffaa1fad4c7e86", + "1512d99e5f5c4c59b4aa69eac84d55e1", + "47b618795e694bc3a116ea649b691ddf", + "a83989f9c7844ef487194fedfdb7605d", + "bef8a3954fc1456bb9118321a941ed18", + "108d4af4018e4046ad46f83fb8f5a5b7", + "f260dd3f20bc4bd18f339f0f8f5c1465", + "b9768e09d22344778c34197bb3b7fee5", + "81fb1fd186e54da1ba09a8941d026288", + "8243867fce014a74b079936b1eaadf6d", + "d3ac30e5245c46c5b6e3b6059899b59c", + "cfd60973d8554ffd90512c264e122fdd" + ] + } + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "JAVA_HOME is not set, use default value of /usr/lib/jvm/java-8-openjdk-amd64/\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.10/dist-packages/pyspark/pandas/__init__.py:50: UserWarning: 'PYARROW_IGNORE_TIMEZONE' environment variable was not set. It is required to set this environment variable to '1' in both driver and executor sides if you use pyarrow>=2.0.0. pandas-on-Spark will set it for you but it does not work if there is a Spark context already launched.\n", + " warnings.warn(\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "\t\t\t\n", + "\t\t" + ] + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "init ray with total mem of 8167956480\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2023-10-11 19:35:25,199\tWARNING services.py:1889 -- WARNING: The object store is using /tmp instead of /dev/shm because /dev/shm has only 6133121024 bytes available. This will harm performance! You may be able to free up space by deleting files in /dev/shm. If you are inside a Docker container, you can increase /dev/shm size by passing '--shm-size=8.37gb' to 'docker run' (or add it to the run_options list in a Ray cluster config). Make sure to set this to more than 30% of available RAM.\n", + "2023-10-11 19:35:26,357\tINFO worker.py:1642 -- Started a local Ray instance.\n", + "2023-10-11 19:35:30,545\tINFO read_api.py:406 -- To satisfy the requested parallelism of 2, each read task output is split into 2 smaller blocks.\n", + "2023-10-11 19:35:30,607\tINFO read_api.py:406 -- To satisfy the requested parallelism of 5, each read task output is split into 5 smaller blocks.\n", + "ResumableTextPipeline, current on tiny_c4_sample.jsonl: 0%| | 0/2 [00:00 TaskPoolMapOperator[ReadText->SplitBlocks(2)] -> TaskPoolMapOperator[Map()]\n", + "2023-10-11 19:35:30,654\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-10-11 19:35:30,660\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running 0: 0%| | 0/4 [00:00 TaskPoolMapOperator[ReadText->SplitBlocks(2)] -> TaskPoolMapOperator[Map()->Filter()]\n", + "2023-10-11 19:35:32,651\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-10-11 19:35:32,652\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running 0: 0%| | 0/4 [00:00)->Filter() pid=1731)\u001b[0m 2023-10-11 19:35:40.103464: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Processed a total of 449 rows of data, filtered out 8 rows of data\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2023-10-11 19:35:44,114\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[ReadText->SplitBlocks(2)] -> TaskPoolMapOperator[Map()->Filter()->Filter()]\n", + "2023-10-11 19:35:44,116\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-10-11 19:35:44,120\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running 0: 0%| | 0/4 [00:00 TaskPoolMapOperator[ReadText->SplitBlocks(2)] -> TaskPoolMapOperator[Map()->Filter()->Filter()->Map()->Write]\n", + "2023-10-11 19:36:13,799\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-10-11 19:36:13,803\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running 0: 0%| | 0/4 [00:00)->Filter()->Filter()->Map()->Write pid=1731)\u001b[0m Warning : `load_model` does not return WordVectorModel or SupervisedModel any more, but a `FastText` object which is very similar.\n", + "\u001b[2m\u001b[36m(Map()->Filter()->Filter()->Map()->Write pid=1731)\u001b[0m Warning : `load_model` does not return WordVectorModel or SupervisedModel any more, but a `FastText` object which is very similar.\n", + "ResumableTextPipeline, current on arxiv_sample_100.jsonl: 50%|█████ | 1/2 [00:50<00:50, 50.65s/it]2023-10-11 19:36:21,291\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[ReadText->SplitBlocks(5)] -> TaskPoolMapOperator[Map()]\n", + "2023-10-11 19:36:21,293\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-10-11 19:36:21,296\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running 0: 0%| | 0/25 [00:00 TaskPoolMapOperator[ReadText->SplitBlocks(5)] -> TaskPoolMapOperator[Map()->Filter()]\n", + "2023-10-11 19:36:21,814\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-10-11 19:36:21,817\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running 0: 0%| | 0/25 [00:00)->Filter() pid=1731)\u001b[0m Warning : `load_model` does not return WordVectorModel or SupervisedModel any more, but a `FastText` object which is very similar.\n", + "\u001b[2m\u001b[36m(Map()->Filter() pid=1731)\u001b[0m Warning : `load_model` does not return WordVectorModel or SupervisedModel any more, but a `FastText` object which is very similar.\n", + "\u001b[2m\u001b[36m(Map()->Filter() pid=1731)\u001b[0m Warning : `load_model` does not return WordVectorModel or SupervisedModel any more, but a `FastText` object which is very similar.\n", + "\u001b[2m\u001b[36m(Map()->Filter() pid=1731)\u001b[0m Warning : `load_model` does not return WordVectorModel or SupervisedModel any more, but a `FastText` object which is very similar.\n", + "\u001b[2m\u001b[36m(Map()->Filter() pid=1731)\u001b[0m Warning : `load_model` does not return WordVectorModel or SupervisedModel any more, but a `FastText` object which is very similar.\n", + "2023-10-11 19:36:38,064\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[ReadText->SplitBlocks(5)] -> TaskPoolMapOperator[Map()->Filter()->Filter()]\n", + "2023-10-11 19:36:38,066\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-10-11 19:36:38,070\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Processed a total of 100 rows of data, filtered out 0 rows of data\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running 0: 0%| | 0/25 [00:00)->Filter()->Filter() pid=1731)\u001b[0m Warning : `load_model` does not return WordVectorModel or SupervisedModel any more, but a `FastText` object which is very similar.\n", + "\u001b[2m\u001b[36m(Map()->Filter()->Filter() pid=1731)\u001b[0m Warning : `load_model` does not return WordVectorModel or SupervisedModel any more, but a `FastText` object which is very similar.\n", + "\u001b[2m\u001b[36m(Map()->Filter()->Filter() pid=1731)\u001b[0m Warning : `load_model` does not return WordVectorModel or SupervisedModel any more, but a `FastText` object which is very similar.\n", + "\u001b[2m\u001b[36m(Map()->Filter()->Filter() pid=1731)\u001b[0m Warning : `load_model` does not return WordVectorModel or SupervisedModel any more, but a `FastText` object which is very similar.\n", + "\u001b[2m\u001b[36m(Map()->Filter()->Filter() pid=1731)\u001b[0m Warning : `load_model` does not return WordVectorModel or SupervisedModel any more, but a `FastText` object which is very similar.\n", + "2023-10-11 19:36:45,890\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[ReadText->SplitBlocks(5)] -> TaskPoolMapOperator[Map()->Filter()->Filter()->Map()->Write]\n", + "2023-10-11 19:36:45,892\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-10-11 19:36:45,897\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Processed a total of 100 rows of data, filtered out 0 rows of data\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running 0: 0%| | 0/25 [00:00)->Filter()->Filter()->Map()->Write pid=1731)\u001b[0m Warning : `load_model` does not return WordVectorModel or SupervisedModel any more, but a `FastText` object which is very similar.\n", + "\u001b[2m\u001b[36m(Map()->Filter()->Filter()->Map()->Write pid=1731)\u001b[0m Warning : `load_model` does not return WordVectorModel or SupervisedModel any more, but a `FastText` object which is very similar.\n", + "\u001b[2m\u001b[36m(Map()->Filter()->Filter()->Map()->Write pid=1731)\u001b[0m Warning : `load_model` does not return WordVectorModel or SupervisedModel any more, but a `FastText` object which is very similar.\n", + "\u001b[2m\u001b[36m(Map()->Filter()->Filter()->Map()->Write pid=1731)\u001b[0m Warning : `load_model` does not return WordVectorModel or SupervisedModel any more, but a `FastText` object which is very similar.\n", + "\u001b[2m\u001b[36m(Map()->Filter()->Filter()->Map()->Write pid=1731)\u001b[0m Warning : `load_model` does not return WordVectorModel or SupervisedModel any more, but a `FastText` object which is very similar.\n", + "ResumableTextPipeline, current on arxiv_sample_100.jsonl: 100%|██████████| 2/2 [01:36<00:00, 48.47s/it]" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Completed!\n", + "ResumableTextPipeline will not return dataset, please check ResumableTextPipeline_output for verification.\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "\n" + ] + } + ], + "source": [ + "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", + "from pyrecdp.primitives.operations import *\n", + "\n", + "# Below is just a quick example of using some of the operation,\n", + "# full operation list please refer to RecDP LLM readme.\n", + "\n", + "pipeline = ResumableTextPipeline()\n", + "ops = [\n", + " JsonlReader(\"/content/test_data\"),\n", + " LengthFilter(),\n", + " ProfanityFilter(),\n", + " LanguageIdentify(),\n", + " PerfileParquetWriter(\"ResumableTextPipeline_output\")\n", + "]\n", + "pipeline.add_operations(ops)\n", + "pipeline.execute()" + ] + }, + { + "cell_type": "code", + "source": [ + "pipeline.plot()" + ], + "metadata": { + "id": "nXNuIgNnKkIE", + "outputId": "7859fc9c-51ae-46d6-b260-b5aba85ead74", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 568 + } + }, + "execution_count": 4, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "image/svg+xml": "\n\n\n\n\n\n%3\n\n\n\n0\n\n0:DatasetReader\n\n[]\n\n\n\n1\n\n1:PerfileSourcedJsonlReader\n\n['input_dir: /content/test_data']\n\n\n\n0->1\n\n\n\n\n\n2\n\n2:LengthFilter\n\n['text_key: text', 'minimum_length: 100', 'maximum_length: -1']\n\n\n\n1->2\n\n\n\n\n\n3\n\n3:ProfanityFilter\n\n['text_key: text']\n\n\n\n2->3\n\n\n\n\n\n4\n\n4:LanguageIdentify\n\n['text_key: text', 'inplace: False', 'fasttext_model_dir: ']\n\n\n\n3->4\n\n\n\n\n\n5\n\n5:PerfileParquetWriter\n\n['output_dir: ResumableTextPipeline_output']\n\n\n\n4->5\n\n\n\n\n\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 4 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## 4. View processed data" + ], + "metadata": { + "id": "YtHaUIcpPyeR" + } + }, + { + "cell_type": "code", + "source": [ + "! cat ResumableTextPipeline_output/status.log" + ], + "metadata": { + "id": "UfTm1M-fLKi_", + "outputId": "988d79db-4748-4981-efdf-e366ca6e91bd", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "execution_count": 5, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "tiny_c4_sample.jsonl, 50.65073895454407 secs\n", + "arxiv_sample_100.jsonl, 46.28073239326477 secs\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "! ls ResumableTextPipeline_output/" + ], + "metadata": { + "id": "Kaau8EZBPsTe", + "outputId": "003752d8-cd9b-4913-8d4e-2a72b6e8995e", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "execution_count": 6, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "arxiv_sample_100.jsonl\tpipeline.json status.log tiny_c4_sample.jsonl\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "import pandas as pd\n", + "pd.read_parquet(\"ResumableTextPipeline_output/arxiv_sample_100.jsonl\")" + ], + "metadata": { + "id": "Kuz_Oh3EP4gI", + "outputId": "8486400e-8aac-47b2-e7dc-57d9147e1c20", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 424 + } + }, + "execution_count": 7, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " text \\\n", + "0 \\section{Introduction}\\n\\label{sec:intro}\\n\\n\\... \n", + "1 \\section{Introduction}\\n\\nOne of the fundament... \n", + "2 \\section{Introduction}\\n\\nContinuous Engineeri... \n", + "3 \\section{Introduction}\\nWhen granular material... \n", + "4 \\section{\\label{sec:intro}Introduction}\\n \\nDe... \n", + ".. ... \n", + "95 \\section{Introduction\\label{sec-introduction}}... \n", + "96 \\section{Introduction}\\n\\nThroughout this pape... \n", + "97 \\section{Introduction}\\n\\nIn what follows, $k\\... \n", + "98 \\chapter{Comments on the Measurement of Vermee... \n", + "99 \\section{Introduction}\\n\\n\\nThe Cluster Variat... \n", + "\n", + " meta source_id \\\n", + "0 {'timestamp': '2022-03-30T02:27:00', 'yymm': '... arxiv_sample_100.jsonl \n", + "1 {'timestamp': '1998-07-19T14:33:52', 'yymm': '... arxiv_sample_100.jsonl \n", + "2 {'timestamp': '2020-08-18T02:18:33', 'yymm': '... arxiv_sample_100.jsonl \n", + "3 {'timestamp': '2002-03-19T12:47:20', 'yymm': '... arxiv_sample_100.jsonl \n", + "4 {'timestamp': '2022-10-20T02:16:28', 'yymm': '... arxiv_sample_100.jsonl \n", + ".. ... ... \n", + "95 {'timestamp': '2023-01-09T02:13:57', 'yymm': '... arxiv_sample_100.jsonl \n", + "96 {'timestamp': '2022-02-15T02:07:14', 'yymm': '... arxiv_sample_100.jsonl \n", + "97 {'timestamp': '2019-07-16T02:03:16', 'yymm': '... arxiv_sample_100.jsonl \n", + "98 {'timestamp': '2021-03-17T01:10:13', 'yymm': '... arxiv_sample_100.jsonl \n", + "99 {'timestamp': '2005-08-09T11:19:35', 'yymm': '... arxiv_sample_100.jsonl \n", + "\n", + " language \n", + "0 eng_Latn \n", + "1 eng_Latn \n", + "2 eng_Latn \n", + "3 eng_Latn \n", + "4 eng_Latn \n", + ".. ... \n", + "95 eng_Latn \n", + "96 eng_Latn \n", + "97 eng_Latn \n", + "98 eng_Latn \n", + "99 eng_Latn \n", + "\n", + "[100 rows x 4 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
textmetasource_idlanguage
0\\section{Introduction}\\n\\label{sec:intro}\\n\\n\\...{'timestamp': '2022-03-30T02:27:00', 'yymm': '...arxiv_sample_100.jsonleng_Latn
1\\section{Introduction}\\n\\nOne of the fundament...{'timestamp': '1998-07-19T14:33:52', 'yymm': '...arxiv_sample_100.jsonleng_Latn
2\\section{Introduction}\\n\\nContinuous Engineeri...{'timestamp': '2020-08-18T02:18:33', 'yymm': '...arxiv_sample_100.jsonleng_Latn
3\\section{Introduction}\\nWhen granular material...{'timestamp': '2002-03-19T12:47:20', 'yymm': '...arxiv_sample_100.jsonleng_Latn
4\\section{\\label{sec:intro}Introduction}\\n \\nDe...{'timestamp': '2022-10-20T02:16:28', 'yymm': '...arxiv_sample_100.jsonleng_Latn
...............
95\\section{Introduction\\label{sec-introduction}}...{'timestamp': '2023-01-09T02:13:57', 'yymm': '...arxiv_sample_100.jsonleng_Latn
96\\section{Introduction}\\n\\nThroughout this pape...{'timestamp': '2022-02-15T02:07:14', 'yymm': '...arxiv_sample_100.jsonleng_Latn
97\\section{Introduction}\\n\\nIn what follows, $k\\...{'timestamp': '2019-07-16T02:03:16', 'yymm': '...arxiv_sample_100.jsonleng_Latn
98\\chapter{Comments on the Measurement of Vermee...{'timestamp': '2021-03-17T01:10:13', 'yymm': '...arxiv_sample_100.jsonleng_Latn
99\\section{Introduction}\\n\\n\\nThe Cluster Variat...{'timestamp': '2005-08-09T11:19:35', 'yymm': '...arxiv_sample_100.jsonleng_Latn
\n", + "

100 rows × 4 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 7 + } + ] + }, + { + "cell_type": "code", + "source": [ + "import pandas as pd\n", + "pd.read_parquet(\"ResumableTextPipeline_output/tiny_c4_sample.jsonl\")" + ], + "metadata": { + "id": "Fkdb9DkzQDZM", + "outputId": "d568bbc2-8ad5-4e18-8587-c156d28a6787", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 424 + } + }, + "execution_count": 8, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " text \\\n", + "0 lorazepam nombre comercial mexico From an inte... \n", + "1 It is possible to love someone who does not lo... \n", + "2 Canon PIXMA TS9520 All-in-One Print / Scan / C... \n", + "3 For those who plan on buying an iPad this Satu... \n", + "4 After tipping 25 tokens in a day, you'll be ab... \n", + ".. ... \n", + "432 Sunrise is an equal opportunity employer. Vete... \n", + "433 Home / Business / #Exploitation: Coca Cola is ... \n", + "434 I got really surprised when I saw that I recei... \n", + "435 Here's a brief schedule for 2016 as requested ... \n", + "436 It spreads like a wild fire. “It can never hap... \n", + "\n", + " meta \\\n", + "0 {\"timestamp\":\"2019-04-24T02:17:53Z\",\"url\":\"htt... \n", + "1 {\"timestamp\":\"2019-04-23T06:32:35Z\",\"url\":\"htt... \n", + "2 {\"timestamp\":\"2019-04-25T17:03:36Z\",\"url\":\"htt... \n", + "3 {\"timestamp\":\"2019-04-22T22:39:52Z\",\"url\":\"htt... \n", + "4 {\"timestamp\":\"2019-04-20T00:25:13Z\",\"url\":\"htt... \n", + ".. ... \n", + "432 {\"timestamp\":\"2019-04-22T10:28:15Z\",\"url\":\"htt... \n", + "433 {\"timestamp\":\"2019-04-24T18:04:45Z\",\"url\":\"htt... \n", + "434 {\"timestamp\":\"2019-04-26T08:57:28Z\",\"url\":\"htt... \n", + "435 {\"timestamp\":\"2019-04-18T10:15:11Z\",\"url\":\"htt... \n", + "436 {\"timestamp\":\"2019-04-22T18:51:33Z\",\"url\":\"htt... \n", + "\n", + " source_id language \n", + "0 arxiv_sample_100.jsonl eng_Latn \n", + "1 arxiv_sample_100.jsonl eng_Latn \n", + "2 arxiv_sample_100.jsonl eng_Latn \n", + "3 arxiv_sample_100.jsonl eng_Latn \n", + "4 arxiv_sample_100.jsonl eng_Latn \n", + ".. ... ... \n", + "432 arxiv_sample_100.jsonl eng_Latn \n", + "433 arxiv_sample_100.jsonl eng_Latn \n", + "434 arxiv_sample_100.jsonl eng_Latn \n", + "435 arxiv_sample_100.jsonl eng_Latn \n", + "436 arxiv_sample_100.jsonl eng_Latn \n", + "\n", + "[437 rows x 4 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
textmetasource_idlanguage
0lorazepam nombre comercial mexico From an inte...{\"timestamp\":\"2019-04-24T02:17:53Z\",\"url\":\"htt...arxiv_sample_100.jsonleng_Latn
1It is possible to love someone who does not lo...{\"timestamp\":\"2019-04-23T06:32:35Z\",\"url\":\"htt...arxiv_sample_100.jsonleng_Latn
2Canon PIXMA TS9520 All-in-One Print / Scan / C...{\"timestamp\":\"2019-04-25T17:03:36Z\",\"url\":\"htt...arxiv_sample_100.jsonleng_Latn
3For those who plan on buying an iPad this Satu...{\"timestamp\":\"2019-04-22T22:39:52Z\",\"url\":\"htt...arxiv_sample_100.jsonleng_Latn
4After tipping 25 tokens in a day, you'll be ab...{\"timestamp\":\"2019-04-20T00:25:13Z\",\"url\":\"htt...arxiv_sample_100.jsonleng_Latn
...............
432Sunrise is an equal opportunity employer. Vete...{\"timestamp\":\"2019-04-22T10:28:15Z\",\"url\":\"htt...arxiv_sample_100.jsonleng_Latn
433Home / Business / #Exploitation: Coca Cola is ...{\"timestamp\":\"2019-04-24T18:04:45Z\",\"url\":\"htt...arxiv_sample_100.jsonleng_Latn
434I got really surprised when I saw that I recei...{\"timestamp\":\"2019-04-26T08:57:28Z\",\"url\":\"htt...arxiv_sample_100.jsonleng_Latn
435Here's a brief schedule for 2016 as requested ...{\"timestamp\":\"2019-04-18T10:15:11Z\",\"url\":\"htt...arxiv_sample_100.jsonleng_Latn
436It spreads like a wild fire. “It can never hap...{\"timestamp\":\"2019-04-22T18:51:33Z\",\"url\":\"htt...arxiv_sample_100.jsonleng_Latn
\n", + "

437 rows × 4 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 8 + } + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "ae3ac3305bbb4ef9bef2753ce8c80ea8": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_31a23eee85054cf68defd51eedc0d923", + "IPY_MODEL_e35281c9c108444f91e3d2e99956c9c4", + "IPY_MODEL_cb8a105d2d284cc3ad6c11ed9e0ac80a" + ], + "layout": "IPY_MODEL_e87438b63b454b6eb01c0e08eca279fa" + } + }, + "31a23eee85054cf68defd51eedc0d923": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f624e5cb29d04673bf562e6d117627b4", + "placeholder": "​", + "style": "IPY_MODEL_1ec6125904114da8b567079e7367fed3", + "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 0.0 MiB/1.9 GiB object_store_memory: 100%" + } + }, + "e35281c9c108444f91e3d2e99956c9c4": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_691057d7d91c4c25a67c7125367affb5", + "max": 4, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_fe997b4ba3664f488a729a98cfd5af40", + "value": 2 + } + }, + "cb8a105d2d284cc3ad6c11ed9e0ac80a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_01ec888ca5494abb808e1ff1a6b95b42", + "placeholder": "​", + "style": "IPY_MODEL_1064623521ff483aa68c97204c20686d", + "value": " 2/2 [00:01<00:00, 1.22it/s]" + } + }, + "e87438b63b454b6eb01c0e08eca279fa": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "f624e5cb29d04673bf562e6d117627b4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1ec6125904114da8b567079e7367fed3": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "691057d7d91c4c25a67c7125367affb5": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fe997b4ba3664f488a729a98cfd5af40": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "01ec888ca5494abb808e1ff1a6b95b42": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "1064623521ff483aa68c97204c20686d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "0fa70a2f2c404ae1a02b6e95a5eeeb94": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_666b5908fba046049a22a1c4034d0bee", + "IPY_MODEL_e23f4cc64e674a53ab06331e47bf93af", + "IPY_MODEL_a9c7a686804a4ee6921c531ac1aa5e61" + ], + "layout": "IPY_MODEL_389470a5ae154d8aad4167cbab7eca78" + } + }, + "666b5908fba046049a22a1c4034d0bee": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_275b3eeeabcb4584ae4e60dc4b96d33a", + "placeholder": "​", + "style": "IPY_MODEL_a00d2947fd3245d3a5cec6fdb01080d2", + "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 0.0 MiB/1.9 GiB object_store_memory: 100%" + } + }, + "e23f4cc64e674a53ab06331e47bf93af": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c1f5351c03264b2ea3051c3fb653c59e", + "max": 4, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_80f34a0fdb1f45dc9e6bf3d73fb9ae1f", + "value": 2 + } + }, + "a9c7a686804a4ee6921c531ac1aa5e61": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c3326f3d36694b27bd38e8439848b4c4", + "placeholder": "​", + "style": "IPY_MODEL_c9bfd02da6414593938ce4d579e3ac4b", + "value": " 2/2 [00:10<00:00, 4.34s/it]" + } + }, + "389470a5ae154d8aad4167cbab7eca78": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "275b3eeeabcb4584ae4e60dc4b96d33a": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a00d2947fd3245d3a5cec6fdb01080d2": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "c1f5351c03264b2ea3051c3fb653c59e": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "80f34a0fdb1f45dc9e6bf3d73fb9ae1f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "c3326f3d36694b27bd38e8439848b4c4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c9bfd02da6414593938ce4d579e3ac4b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "edb8c9187ce745f7a2dc83d455539fb4": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_d2a52fc97ede472ca03f019fa36e19ed", + "IPY_MODEL_8c7b4eb9f5954db1b5a70cca9a98df26", + "IPY_MODEL_0a524ae60f5a4fc8ab52be77170b1a6a" + ], + "layout": "IPY_MODEL_5254e81922a443d28b0f94cdca67b949" + } + }, + "d2a52fc97ede472ca03f019fa36e19ed": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_8bec093113ab442a81c2b189c0e842d1", + "placeholder": "​", + "style": "IPY_MODEL_73037f8ee21d4860a066b5e4c65401c5", + "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 0.0 MiB/1.9 GiB object_store_memory: 100%" + } + }, + "8c7b4eb9f5954db1b5a70cca9a98df26": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_08c52b09a8624c21a4f8816f45e4c783", + "max": 4, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_a6c5cba7ccfd4a64acff223546df2bb4", + "value": 2 + } + }, + "0a524ae60f5a4fc8ab52be77170b1a6a": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_2706c366900e4d0cbe7f48b0a64b9f94", + "placeholder": "​", + "style": "IPY_MODEL_14439e584bda44b69a1e966a7a40db05", + "value": " 2/2 [00:05<00:00, 2.43s/it]" + } + }, + "5254e81922a443d28b0f94cdca67b949": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "8bec093113ab442a81c2b189c0e842d1": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "73037f8ee21d4860a066b5e4c65401c5": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "08c52b09a8624c21a4f8816f45e4c783": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a6c5cba7ccfd4a64acff223546df2bb4": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "2706c366900e4d0cbe7f48b0a64b9f94": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "14439e584bda44b69a1e966a7a40db05": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "94273a24a1c142a5a313acfc4d16374f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_b68d1e2d2d654ccc960e0ae46f1bc0bc", + "IPY_MODEL_900ab18e01594486a8539155c77ed120", + "IPY_MODEL_dd061b7c6c29416990d1e16991dbfc69" + ], + "layout": "IPY_MODEL_f299cb222ede4c00b4f4868302a5ab1f" + } + }, + "b68d1e2d2d654ccc960e0ae46f1bc0bc": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_faaece59156943efa36304036cba6ded", + "placeholder": "​", + "style": "IPY_MODEL_dbaed49746634fa6a75c42567dcc12ff", + "value": "Downloading model.bin: 100%" + } + }, + "900ab18e01594486a8539155c77ed120": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d659e960c6b940fc991634b2d6e32c9a", + "max": 1176355829, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_2d057967f9104759a1fe126859a52148", + "value": 1176355829 + } + }, + "dd061b7c6c29416990d1e16991dbfc69": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_cfe65ab4c32a41a09b8c2697f919249c", + "placeholder": "​", + "style": "IPY_MODEL_4d801d07fd1841e7bac890e46af6e8f7", + "value": " 1.18G/1.18G [00:23<00:00, 54.0MB/s]" + } + }, + "f299cb222ede4c00b4f4868302a5ab1f": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "faaece59156943efa36304036cba6ded": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "dbaed49746634fa6a75c42567dcc12ff": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "d659e960c6b940fc991634b2d6e32c9a": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2d057967f9104759a1fe126859a52148": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "cfe65ab4c32a41a09b8c2697f919249c": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4d801d07fd1841e7bac890e46af6e8f7": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "34ea5ca01a5e4993a83b1e289e5e5be8": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_578539174be8486aa9a6f03064f3babc", + "IPY_MODEL_bf01405b26be4630b8352e638e1a27d9", + "IPY_MODEL_e3f800c0d292412eae99c0a77072034b" + ], + "layout": "IPY_MODEL_ee7fb0f1962f4fd28b2ae71fb731ba5c" + } + }, + "578539174be8486aa9a6f03064f3babc": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_59b4b05e28754a2f99b5cbf4050ab407", + "placeholder": "​", + "style": "IPY_MODEL_15885936a1cd4fa3815ab0cd633c3aff", + "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 0.0 MiB/1.9 GiB object_store_memory: 100%" + } + }, + "bf01405b26be4630b8352e638e1a27d9": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_334cedb034804e5bb229833c5ab72208", + "max": 4, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_876ebf393fab4009ac06119de4f9ba9f", + "value": 2 + } + }, + "e3f800c0d292412eae99c0a77072034b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_1bb6610f891240db8852ab2875c4de68", + "placeholder": "​", + "style": "IPY_MODEL_e0801f8d48704e22a98146e4bdb4d6f5", + "value": " 2/2 [00:07<00:00, 3.59s/it]" + } + }, + "ee7fb0f1962f4fd28b2ae71fb731ba5c": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "59b4b05e28754a2f99b5cbf4050ab407": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "15885936a1cd4fa3815ab0cd633c3aff": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "334cedb034804e5bb229833c5ab72208": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "876ebf393fab4009ac06119de4f9ba9f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "1bb6610f891240db8852ab2875c4de68": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e0801f8d48704e22a98146e4bdb4d6f5": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "640c84dbb0114187abd1f3ab66f3f110": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_0b8e994fa907486eb91281c2d6fd075e", + "IPY_MODEL_7ad5846e59884e8f9cdf9d6ebb0ebec9", + "IPY_MODEL_a2a458c292ca4499b3498b1ce7e6a6f8" + ], + "layout": "IPY_MODEL_f06ccfdb213d40bba42d1fc919d1ab9a" + } + }, + "0b8e994fa907486eb91281c2d6fd075e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_25989f97fa124f1da1929982ea4d081b", + "placeholder": "​", + "style": "IPY_MODEL_548be59310e4413696ffb48bbf57225c", + "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 1.31 MiB/1.9 GiB object_store_memory: 100%" + } + }, + "7ad5846e59884e8f9cdf9d6ebb0ebec9": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_92de0b523d6e4bf5bd1bd96fc95c73e4", + "max": 25, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_f92ffdb6309d4c6a979595fb516386df", + "value": 5 + } + }, + "a2a458c292ca4499b3498b1ce7e6a6f8": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d42f4011aa644090810a62467aeda5f0", + "placeholder": "​", + "style": "IPY_MODEL_589087f298484943a1b3ada5723d90ad", + "value": " 5/5 [00:00<00:00, 11.79it/s]" + } + }, + "f06ccfdb213d40bba42d1fc919d1ab9a": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "25989f97fa124f1da1929982ea4d081b": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "548be59310e4413696ffb48bbf57225c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "92de0b523d6e4bf5bd1bd96fc95c73e4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "f92ffdb6309d4c6a979595fb516386df": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "d42f4011aa644090810a62467aeda5f0": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "589087f298484943a1b3ada5723d90ad": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "3344220e93cd4752ab8743f99fa2465f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_7de96f0a8d3f4227b763dad8e465179b", + "IPY_MODEL_35a9b88ffc2a4f17a5816b9e72ebacde", + "IPY_MODEL_d1449e09f7044d1bae5531d6c696a78c" + ], + "layout": "IPY_MODEL_dbdd40c5a8854fb19b18fd07e6ec8ab8" + } + }, + "7de96f0a8d3f4227b763dad8e465179b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_00b98577de18459da340ec93a48704af", + "placeholder": "​", + "style": "IPY_MODEL_ad1c192b6d434e03b674976daafa93ed", + "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 0.0 MiB/1.9 GiB object_store_memory: 100%" + } + }, + "35a9b88ffc2a4f17a5816b9e72ebacde": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_fa6e2318d19d48bc9d16be031425f64e", + "max": 25, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_33e5e1df09f543d7b6a3b7565f155187", + "value": 5 + } + }, + "d1449e09f7044d1bae5531d6c696a78c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_ba3427245939424d8ecd04fe8322cf47", + "placeholder": "​", + "style": "IPY_MODEL_fc89e9814e2c40d5b32512dc83cb3549", + "value": " 5/5 [00:16<00:00, 3.82s/it]" + } + }, + "dbdd40c5a8854fb19b18fd07e6ec8ab8": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "00b98577de18459da340ec93a48704af": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ad1c192b6d434e03b674976daafa93ed": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "fa6e2318d19d48bc9d16be031425f64e": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "33e5e1df09f543d7b6a3b7565f155187": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "ba3427245939424d8ecd04fe8322cf47": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "fc89e9814e2c40d5b32512dc83cb3549": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "4a7e258c7edc43968785d2f25336ec63": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_1ddd6cf2ca8e4cc5abe6febedfafe95b", + "IPY_MODEL_c2a3b04b6c67481681f641d36f340b59", + "IPY_MODEL_ae41f0fb8a014440a7950bd057c829fb" + ], + "layout": "IPY_MODEL_6c67ebc8ece34226af33e9c5cb9e554f" + } + }, + "1ddd6cf2ca8e4cc5abe6febedfafe95b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f93898579b554030aa61e620d35d8204", + "placeholder": "​", + "style": "IPY_MODEL_d629a9f72dad44cfb27ce741f4785488", + "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 0.0 MiB/1.9 GiB object_store_memory: 100%" + } + }, + "c2a3b04b6c67481681f641d36f340b59": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_46376820119f430aa647cbc1bf253a47", + "max": 25, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_ae4bd1ce767742698d4f593e260c251b", + "value": 5 + } + }, + "ae41f0fb8a014440a7950bd057c829fb": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_08669172df55499fa14b3c825afa6951", + "placeholder": "​", + "style": "IPY_MODEL_0d3e9467f77d4c7aafffaa1fad4c7e86", + "value": " 5/5 [00:07<00:00, 1.50s/it]" + } + }, + "6c67ebc8ece34226af33e9c5cb9e554f": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "f93898579b554030aa61e620d35d8204": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d629a9f72dad44cfb27ce741f4785488": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "46376820119f430aa647cbc1bf253a47": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ae4bd1ce767742698d4f593e260c251b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "08669172df55499fa14b3c825afa6951": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0d3e9467f77d4c7aafffaa1fad4c7e86": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "1512d99e5f5c4c59b4aa69eac84d55e1": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_47b618795e694bc3a116ea649b691ddf", + "IPY_MODEL_a83989f9c7844ef487194fedfdb7605d", + "IPY_MODEL_bef8a3954fc1456bb9118321a941ed18" + ], + "layout": "IPY_MODEL_108d4af4018e4046ad46f83fb8f5a5b7" + } + }, + "47b618795e694bc3a116ea649b691ddf": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f260dd3f20bc4bd18f339f0f8f5c1465", + "placeholder": "​", + "style": "IPY_MODEL_b9768e09d22344778c34197bb3b7fee5", + "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 0.0 MiB/1.9 GiB object_store_memory: 100%" + } + }, + "a83989f9c7844ef487194fedfdb7605d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_81fb1fd186e54da1ba09a8941d026288", + "max": 25, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_8243867fce014a74b079936b1eaadf6d", + "value": 5 + } + }, + "bef8a3954fc1456bb9118321a941ed18": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_d3ac30e5245c46c5b6e3b6059899b59c", + "placeholder": "​", + "style": "IPY_MODEL_cfd60973d8554ffd90512c264e122fdd", + "value": " 5/5 [00:21<00:00, 3.86s/it]" + } + }, + "108d4af4018e4046ad46f83fb8f5a5b7": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "f260dd3f20bc4bd18f339f0f8f5c1465": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b9768e09d22344778c34197bb3b7fee5": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "81fb1fd186e54da1ba09a8941d026288": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "8243867fce014a74b079936b1eaadf6d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "d3ac30e5245c46c5b6e3b6059899b59c": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "cfd60973d8554ffd90512c264e122fdd": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + } + } } - ], - "source": [ - "text_fixer(data_dir, in_type, out_dir,text_types)" - ] - } - ], - "metadata": { - "colab": { - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file From 049f2d2cc85460d6b7b22d41f9dce69b0a3135f3 Mon Sep 17 00:00:00 2001 From: Yao Qing Date: Thu, 12 Oct 2023 23:24:48 +0800 Subject: [PATCH 09/47] Refactor filters operation support users can build their own filter easily. (#383) . --- RecDP/pyrecdp/primitives/llmutils/filter.py | 3 - .../pyrecdp/primitives/operations/__init__.py | 2 +- .../primitives/operations/filter/__init__.py | 5 + .../operations/filter/badwords_filter.py | 38 +++ .../primitives/operations/filter/base.py | 36 +++ .../operations/filter/length_filter.py | 21 ++ .../operations/filter/profanity_filter.py | 13 + .../operations/filter/url_filter.py | 101 ++++++++ .../primitives/operations/text_filter.py | 243 ------------------ 9 files changed, 215 insertions(+), 247 deletions(-) create mode 100644 RecDP/pyrecdp/primitives/operations/filter/__init__.py create mode 100644 RecDP/pyrecdp/primitives/operations/filter/badwords_filter.py create mode 100644 RecDP/pyrecdp/primitives/operations/filter/base.py create mode 100644 RecDP/pyrecdp/primitives/operations/filter/length_filter.py create mode 100644 RecDP/pyrecdp/primitives/operations/filter/profanity_filter.py create mode 100644 RecDP/pyrecdp/primitives/operations/filter/url_filter.py delete mode 100644 RecDP/pyrecdp/primitives/operations/text_filter.py diff --git a/RecDP/pyrecdp/primitives/llmutils/filter.py b/RecDP/pyrecdp/primitives/llmutils/filter.py index d3fd795d8..bb8fc5b7a 100644 --- a/RecDP/pyrecdp/primitives/llmutils/filter.py +++ b/RecDP/pyrecdp/primitives/llmutils/filter.py @@ -12,7 +12,6 @@ def filter_by_blocklist_spark(spark_df): def filter_by_blocklist(data_dir, out_dir, data_file_type="jsonl"): - from pyrecdp.LLM import ResumableTextPipeline from pyrecdp.primitives.operations import URLFilter from pyrecdp.LLM import ResumableTextPipeline @@ -41,7 +40,6 @@ def filter_by_bad_words_spark(spark_df, language="en"): def filter_by_bad_words(data_dir, out_dir, data_file_type="jsonl", language="en"): - from pyrecdp.LLM import ResumableTextPipeline from pyrecdp.primitives.operations import BadwordsFilter from pyrecdp.LLM import ResumableTextPipeline @@ -70,7 +68,6 @@ def filter_by_length_spark(spark_df, minimum_length=100, maximum_length=-1): def filter_by_length(data_dir, out_dir, data_file_type="jsonl", minimum_length=100, maximum_length=-1): - from pyrecdp.LLM import ResumableTextPipeline from pyrecdp.primitives.operations import LengthFilter from pyrecdp.LLM import ResumableTextPipeline diff --git a/RecDP/pyrecdp/primitives/operations/__init__.py b/RecDP/pyrecdp/primitives/operations/__init__.py index 18a5fa5d9..55600f917 100644 --- a/RecDP/pyrecdp/primitives/operations/__init__.py +++ b/RecDP/pyrecdp/primitives/operations/__init__.py @@ -6,7 +6,7 @@ from .text_writer import PerfileParquetWriter, ParquetWriter, JsonlWriter, ClassifyJsonlWriter, ClassifyParquetWriter from .text_normalize import TextNormalize from .text_bytesize import TextBytesize -from .text_filter import LengthFilter, BadwordsFilter, ProfanityFilter, URLFilter +from .filter import * from .text_fixer import TextFix from .text_language_identify import LanguageIdentify from .text_split import DocumentSplit diff --git a/RecDP/pyrecdp/primitives/operations/filter/__init__.py b/RecDP/pyrecdp/primitives/operations/filter/__init__.py new file mode 100644 index 000000000..1c2819406 --- /dev/null +++ b/RecDP/pyrecdp/primitives/operations/filter/__init__.py @@ -0,0 +1,5 @@ +from .base import BaseFilter +from .profanity_filter import ProfanityFilter +from .badwords_filter import BadwordsFilter +from .length_filter import LengthFilter +from .url_filter import URLFilter diff --git a/RecDP/pyrecdp/primitives/operations/filter/badwords_filter.py b/RecDP/pyrecdp/primitives/operations/filter/badwords_filter.py new file mode 100644 index 000000000..027261ce4 --- /dev/null +++ b/RecDP/pyrecdp/primitives/operations/filter/badwords_filter.py @@ -0,0 +1,38 @@ +from pyrecdp.primitives.operations.base import LLMOPERATORS +from pyrecdp.primitives.operations.filter.base import BaseFilter + +import os + + +def prepare_func_filter_by_badwords(language="en"): + from pyrecdp.primitives.llmutils.utils import get_llmutils_home + import re + llmutils_path = get_llmutils_home() + bad_words_lists_path = os.path.join(llmutils_path, "bad_words_lists", language) + with open(bad_words_lists_path, "r") as f: + lines = f.readlines() + bad_words_list = [s.replace('\n', '') for s in lines] + bad_words_pattern = " | ".join(bad_words_list) + + def check_badwords(text): + found = re.search(bad_words_pattern, text) + if found: + return False + else: + return True + + return check_badwords + + +class BadwordsFilter(BaseFilter): + def __init__(self, language='en'): + settings = {'language': language} + super().__init__(args_dict=settings) + self.language = language + + def compute(self, text) -> bool: + func = prepare_func_filter_by_badwords(self.language) + func(text) + + +LLMOPERATORS.register(BadwordsFilter) diff --git a/RecDP/pyrecdp/primitives/operations/filter/base.py b/RecDP/pyrecdp/primitives/operations/filter/base.py new file mode 100644 index 000000000..686d3b7c6 --- /dev/null +++ b/RecDP/pyrecdp/primitives/operations/filter/base.py @@ -0,0 +1,36 @@ +from pyspark.sql import DataFrame +from ray.data import Dataset + +from pyrecdp.primitives.operations.base import BaseLLMOperation, statistics_decorator +import pyspark.sql.functions as F + + +class BaseFilter(BaseLLMOperation): + def __init__(self, args_dict={}): + super().__init__(args_dict=args_dict) + self.text_key = 'text' + self.inplace = True + self.support_ray = True + self.support_spark = True + + @statistics_decorator + def process_rayds(self, ds: Dataset) -> Dataset: + if self.inplace: + # remove unwanted text row inplace + filtered_ds = ds.filter(lambda x: self.compute(x[self.text_key])) + return filtered_ds + else: + raise NotImplementedError(f"We only support inplace modification for {self.__class__.__name__}.") + + @statistics_decorator + def process_spark(self, spark, spark_df: DataFrame) -> DataFrame: + if self.inplace: + + import pyspark.sql.types as T + compute_udf = F.udf(self.compute, T.BooleanType()) + return spark_df.filter(compute_udf(F.col(self.text_key))) + else: + raise NotImplementedError(f"We only support inplace modification for {self.__class__.__name__}.") + + def compute(self, *args, **kwargs) -> bool: + return True \ No newline at end of file diff --git a/RecDP/pyrecdp/primitives/operations/filter/length_filter.py b/RecDP/pyrecdp/primitives/operations/filter/length_filter.py new file mode 100644 index 000000000..265067718 --- /dev/null +++ b/RecDP/pyrecdp/primitives/operations/filter/length_filter.py @@ -0,0 +1,21 @@ +from pyrecdp.primitives.operations.base import LLMOPERATORS +from pyrecdp.primitives.operations.filter.base import BaseFilter + + +class LengthFilter(BaseFilter): + def __init__(self, minimum_length=100, maximum_length=-1): + settings = {'minimum_length': minimum_length, "maximum_length": maximum_length} + super().__init__(args_dict=settings) + self.minimum_length = minimum_length + self.maximum_length = maximum_length + + def compute(self, text) -> bool: + if len(text) < self.minimum_length or (self.maximum_length != -1 and len(text) > self.maximum_length): + return False + else: + return True + + +LLMOPERATORS.register(LengthFilter) + + diff --git a/RecDP/pyrecdp/primitives/operations/filter/profanity_filter.py b/RecDP/pyrecdp/primitives/operations/filter/profanity_filter.py new file mode 100644 index 000000000..9e31e3d2f --- /dev/null +++ b/RecDP/pyrecdp/primitives/operations/filter/profanity_filter.py @@ -0,0 +1,13 @@ +from pyrecdp.primitives.operations.base import LLMOPERATORS +from pyrecdp.primitives.operations.filter.base import BaseFilter +from profanity_check import predict + + +class ProfanityFilter(BaseFilter): + def compute(self, text) -> bool: + scores = predict([text]) + ret = not bool(scores[0]) + return ret + + +LLMOPERATORS.register(ProfanityFilter) diff --git a/RecDP/pyrecdp/primitives/operations/filter/url_filter.py b/RecDP/pyrecdp/primitives/operations/filter/url_filter.py new file mode 100644 index 000000000..5592c40c5 --- /dev/null +++ b/RecDP/pyrecdp/primitives/operations/filter/url_filter.py @@ -0,0 +1,101 @@ +from functools import lru_cache + +from pyrecdp.primitives.operations.filter.base import BaseFilter +from pyrecdp.primitives.operations.base import LLMOPERATORS, statistics_decorator +from pyspark.sql import DataFrame +import os +import pyspark.sql.functions as F + +BLACKLIST_URL = "https://dsi.ut-capitole.fr/blacklists/download/blacklists.tar.gz" +BLACKLIST_CATEGORIES = ["adult", "phishing", "dating", "gambling", "filehosting", "ddos", "agressif", "chat", + "mixed_adult","arjel"] + + +def prepare_blacklist(): + from pyrecdp.datasets.download import download + BLACKLIST_URL = "https://dsi.ut-capitole.fr/blacklists/download/blacklists.tar.gz" + + blacklist_tar_path = "blacklists" + downloader = download(name=blacklist_tar_path, url=BLACKLIST_URL, unzip=True) + return downloader.saved_path + +@lru_cache +def load_blacklist_spark_df(spark): + saved_path = prepare_blacklist() + from pyspark.sql.types import StructType, StructField, StringType + data_schema = StructType([ + StructField('domain', StringType()), + ]) + blacklist_df: DataFrame = spark.createDataFrame(spark.sparkContext.emptyRDD(), schema=data_schema) + for category in BLACKLIST_CATEGORIES: + domain_file = os.path.join(saved_path, category, "domains") + df = spark.read.text(domain_file) + df = df.withColumnRenamed("value", "domain") + blacklist_df = blacklist_df.union(df) + return blacklist_df + +@lru_cache +def load_blacklist_set(): + saved_path = prepare_blacklist() + print("*********************_______________________________________") + blacklist = [] + for category in BLACKLIST_CATEGORIES: + domain_file = os.path.join(saved_path, category, "domains") + with open(domain_file, "r") as f: + lines = f.readlines() + blacklist.extend(lines) + return set(blacklist) + + +def get_url_from_meta(x): + import json + try: + meta_obj = json.loads(x) + if 'url' in meta_obj: + return meta_obj['url'] + else: + return "Not Provided" + except: + return "Not Provided" + + +def get_domain(x): + from urllib.parse import urlparse + domain = urlparse(x).hostname + if not domain: + domain = "Not Provided" + return domain + + +class URLFilter(BaseFilter): + def __init__(self): + super().__init__() + self.text_key = "meta" + self.blacklist = load_blacklist_set() + + @statistics_decorator + def process_spark(self, spark, spark_df: DataFrame) -> DataFrame: + get_url_from_meta_udf = F.udf(get_url_from_meta) + get_domain_udf = F.udf(get_domain) + if self.inplace: + # remove unwanted text row inplace + blacklist_df = load_blacklist_spark_df(spark) + source_df = spark_df + with_domain_df = source_df.withColumn('domain', get_domain_udf(get_url_from_meta_udf('meta'))) + left_anti_df = with_domain_df.join(blacklist_df, on='domain', how='left_anti') + return left_anti_df + else: + raise NotImplementedError("We only support inplace modification for URLFilter.") + + def compute(self, sample) -> bool: + url = get_url_from_meta(sample) + domain = get_domain(url) + if domain in self.blacklist: + return False + else: + return True + + +LLMOPERATORS.register(URLFilter) + + diff --git a/RecDP/pyrecdp/primitives/operations/text_filter.py b/RecDP/pyrecdp/primitives/operations/text_filter.py deleted file mode 100644 index 13b6e3254..000000000 --- a/RecDP/pyrecdp/primitives/operations/text_filter.py +++ /dev/null @@ -1,243 +0,0 @@ -from .base import BaseLLMOperation, LLMOPERATORS, statistics_decorator -from ray.data import Dataset -from pyspark.sql import DataFrame -import os -import pyspark.sql.functions as F - - -def prepare_func_filter_by_length(minimum_length=100, maximum_length=10000): - def check_length(text): - if len(text) < minimum_length or (maximum_length != -1 and len(text) > maximum_length): - return False - else: - return True - - return check_length - - -def prepare_func_filter_by_badwords(language): - from pyrecdp.primitives.llmutils.utils import get_llmutils_home - import re - llmutils_path = get_llmutils_home() - bad_words_lists_path = os.path.join(llmutils_path, "bad_words_lists", language) - with open(bad_words_lists_path, "r") as f: - lines = f.readlines() - bad_words_list = [s.replace('\n', '') for s in lines] - bad_words_pattern = " | ".join(bad_words_list) - - def check_badwords(text): - found = re.search(bad_words_pattern, text) - if found: - return False - else: - return True - - return check_badwords - - -def prepare_func_filter_by_profanity(): - from profanity_check import predict - def check_profanity(text): - scores = predict([text]) - ret = not bool(scores[0]) - return ret - - return check_profanity - - -class LengthFilter(BaseLLMOperation): - def __init__(self, text_key='text', minimum_length=100, maximum_length=-1): - settings = {'text_key': text_key, 'minimum_length': minimum_length, 'maximum_length': maximum_length} - super().__init__(settings) - self.text_key = text_key - self.inplace = True - self.minimum_length = minimum_length - self.maximum_length = maximum_length - self.check_length = None - self.support_ray = True - self.support_spark = True - - @statistics_decorator - def process_rayds(self, ds: Dataset) -> Dataset: - if self.check_length is None: - self.check_length = prepare_func_filter_by_length(self.minimum_length, self.maximum_length) - if self.inplace: - # remove unwanted text row inplace - filtered_ds = ds.filter(lambda x: self.check_length(x[self.text_key])) - return filtered_ds - else: - raise NotImplementedError("We only support inplace modification for LengthFilter.") - - @statistics_decorator - def process_spark(self, spark, spark_df: DataFrame) -> DataFrame: - import pyspark.sql.types as T - check_length_udf = F.udf(prepare_func_filter_by_length(self.minimum_length, self.maximum_length), - T.BooleanType()) - return spark_df.filter(check_length_udf(F.col(self.text_key))) - - -LLMOPERATORS.register(LengthFilter) - - -class BadwordsFilter(BaseLLMOperation): - def __init__(self, text_key='text', language='en'): - settings = {'text_key': text_key, 'language': language} - super().__init__(settings) - self.text_key = text_key - self.inplace = True - self.language = language - self.check_badwords = None - self.support_ray = True - self.support_spark = True - - @statistics_decorator - def process_rayds(self, ds: Dataset) -> Dataset: - if self.check_badwords is None: - self.check_badwords = prepare_func_filter_by_badwords(self.language) - if self.inplace: - # remove unwanted text row inplace - filtered_ds = ds.filter(lambda x: self.check_badwords(x[self.text_key])) - return filtered_ds - else: - raise NotImplementedError("We only support inplace modification for BadwordsFilter.") - - @statistics_decorator - def process_spark(self, spark, spark_df: DataFrame) -> DataFrame: - import pyspark.sql.types as T - check_badwords_udf = F.udf(prepare_func_filter_by_badwords(self.language), T.BooleanType()) - return spark_df.filter(check_badwords_udf(F.col(self.text_key))) - - -LLMOPERATORS.register(BadwordsFilter) - - -class ProfanityFilter(BaseLLMOperation): - def __init__(self, text_key='text', inplace=True): - settings = {'text_key': text_key} - super().__init__(settings) - self.text_key = text_key - self.inplace = inplace - self.check_profanity = None - self.support_ray = True - self.support_spark = True - - @statistics_decorator - def process_rayds(self, ds: Dataset) -> Dataset: - if self.check_profanity is None: - self.check_profanity = prepare_func_filter_by_profanity() - if self.inplace: - # remove unwanted text row inplace - filtered_ds = ds.filter(lambda x: self.check_profanity(x[self.text_key])) - return filtered_ds - else: - raise NotImplementedError("We only support inplace modification for ProfanityFilter.") - - @statistics_decorator - def process_spark(self, spark, spark_df: DataFrame) -> DataFrame: - import pyspark.sql.types as T - check_profanity_udf = F.udf(prepare_func_filter_by_profanity(), T.BooleanType()) - return spark_df.filter(check_profanity_udf(F.col(self.text_key))) - - -LLMOPERATORS.register(ProfanityFilter) - - -BLACKLIST_URL = "https://dsi.ut-capitole.fr/blacklists/download/blacklists.tar.gz" -BLACKLIST_STORE_PATH = "/tmp" -BLACKLIST_CATEGORIES = ["adult", "phishing", "dating", "gambling", "filehosting", "ddos", "agressif", "chat", - "mixed_adult", - "arjel"] - - -def prepare_blacklist(): - from pyrecdp.datasets.download import download - BLACKLIST_URL = "https://dsi.ut-capitole.fr/blacklists/download/blacklists.tar.gz" - - blacklist_tar_path = "blacklists" - downloader = download(name=blacklist_tar_path, url=BLACKLIST_URL, unzip=True) - return downloader.saved_path - - -def load_blacklist_spark_df(spark): - saved_path = prepare_blacklist() - from pyspark.sql.types import StructType, StructField, StringType - data_schema = StructType([ - StructField('domain', StringType()), - ]) - blacklist_df: DataFrame = spark.createDataFrame(spark.sparkContext.emptyRDD(), schema=data_schema) - for category in BLACKLIST_CATEGORIES: - domain_file = os.path.join(saved_path, category, "domains") - df = spark.read.text(domain_file) - df = df.withColumnRenamed("value", "domain") - blacklist_df = blacklist_df.union(df) - return blacklist_df - - -def load_blacklist_set(): - saved_path = prepare_blacklist() - blacklist = [] - for category in BLACKLIST_CATEGORIES: - domain_file = os.path.join(saved_path, category, "domains") - with open(domain_file, "r") as f: - lines = f.readlines() - blacklist.extend(lines) - return set(blacklist) - - -def get_url_from_meta(x): - import json - try: - meta_obj = json.loads(x) - if 'url' in meta_obj: - return meta_obj['url'] - else: - return "Not Provided" - except: - return "Not Provided" - - -def get_domain(x): - from urllib.parse import urlparse - domain = urlparse(x).hostname - if not domain: - domain = "Not Provided" - return domain - - -class URLFilter(BaseLLMOperation): - def __init__(self, text_key='text'): - settings = {'text_key': text_key} - super().__init__(settings) - self.text_key = text_key - self.inplace = True - self.support_spark = True - self.support_ray = True - - @statistics_decorator - def process_rayds(self, ds: Dataset) -> Dataset: - blacklist = load_blacklist_set() - if self.inplace: - # remove unwanted text row inplace - filtered_ds = ds.filter(lambda x: get_url_from_meta(x) not in blacklist) - return filtered_ds - else: - raise NotImplementedError("We only support inplace modification for URLFilter.") - - @statistics_decorator - def process_spark(self, spark, spark_df: DataFrame) -> DataFrame: - get_url_from_meta_udf = F.udf(get_url_from_meta) - get_domain_udf = F.udf(get_domain) - - if self.inplace: - # remove unwanted text row inplace - blacklist_df = load_blacklist_spark_df(spark) - source_df = spark_df - with_domain_df = source_df.withColumn('domain', get_domain_udf(get_url_from_meta_udf('meta'))) - left_anti_df = with_domain_df.join(blacklist_df, on='domain', how='left_anti') - return left_anti_df - - else: - raise NotImplementedError("We only support inplace modification for URLFilter.") - - -LLMOPERATORS.register(URLFilter) From 9f8794f747cd33ce9b1ec2aaeb93995395bb16e2 Mon Sep 17 00:00:00 2001 From: Yao Qing Date: Thu, 12 Oct 2023 23:28:14 +0800 Subject: [PATCH 10/47] Add statistics_flag for user to choose in TextPipeline. (#382) --- RecDP/pyrecdp/LLM/TextPipeline.py | 12 ++++++-- RecDP/pyrecdp/primitives/operations/base.py | 32 ++++++++++++--------- 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/RecDP/pyrecdp/LLM/TextPipeline.py b/RecDP/pyrecdp/LLM/TextPipeline.py index 353d40f28..62e28c8bc 100644 --- a/RecDP/pyrecdp/LLM/TextPipeline.py +++ b/RecDP/pyrecdp/LLM/TextPipeline.py @@ -181,6 +181,12 @@ class ResumableTextPipeline(TextPipeline): # Provide a pipeline for large dir. We will handle files one by one and resume when pipeline broken. def __init__(self, pipeline_file=None): super().__init__(pipeline_file) + # Enabling this option will result in a decrease in execution speed + self.statistics_flag = False + + def enable_statistics(self): + logger.warning("Enabling this option will result in a decrease in execution speed") + self.statistics_flag = True def execute(self): # Fix pipeline @@ -251,6 +257,7 @@ def execute(self): pbar.set_description(f"ResumableTextPipeline, current on {source_id}") start = time.time() for idx, op in enumerate(op_chain): + op.statistics_flag = self.statistics_flag if idx == 0: op.execute_ray(executable_pipeline, ds_reader) elif isinstance(op, PerfileParquetWriter): @@ -262,8 +269,9 @@ def execute(self): status_tracker.flush() done_files.append(status_tracker) del ds_reader - for op in op_chain: - logger.info(f"{op.__class__.__name__}: {op.summarize()}") + if self.statistics_flag: + for op in op_chain: + logger.info(f"{op.__class__.__name__}: {op.summarize()}") logger.info( f"Completed! ResumableTextPipeline will not return dataset, please check {output_dir} for verification.") diff --git a/RecDP/pyrecdp/primitives/operations/base.py b/RecDP/pyrecdp/primitives/operations/base.py index 67bd9738b..d9379428c 100644 --- a/RecDP/pyrecdp/primitives/operations/base.py +++ b/RecDP/pyrecdp/primitives/operations/base.py @@ -184,6 +184,7 @@ def __init__(self, args_dict={}): self.support_spark = False self.support_ray = True self.statistics = OperationStatistics(0, 0, 0, 0) + self.statistics_flag = False @classmethod def instantiate(cls, op_obj, config): @@ -262,22 +263,25 @@ class OperationStatistics: def statistics_decorator(func): def wrapper(self, *args, **kwargs): - if isinstance(args[0], Dataset): - ds = args[0] - self.statistics.total_in += ds.count() - start = time.time() - result = func(self, *args, **kwargs) - self.statistics.total_out += result.count() - elapse = time.time() - start - self.statistics.used_time += elapse + if self.statistics_flag: + if isinstance(args[0], Dataset): + ds = args[0] + self.statistics.total_in += ds.count() + start = time.time() + result = func(self, *args, **kwargs) + self.statistics.total_out += result.count() + elapse = time.time() - start + self.statistics.used_time += elapse + else: + df = args[1] + self.statistics.total_in += df.count() + start = time.time() + result = func(self, *args, **kwargs) + self.statistics.total_out += result.count() + elapse = time.time() - start + self.statistics.used_time += elapse else: - df = args[1] - self.statistics.total_in += df.count() - start = time.time() result = func(self, *args, **kwargs) - self.statistics.total_out += result.count() - elapse = time.time() - start - self.statistics.used_time += elapse return result return wrapper From 5c9418d7067e783fbe5d46eaa352f43f097ea637 Mon Sep 17 00:00:00 2001 From: haojinIntel Date: Fri, 13 Oct 2023 00:39:20 +0800 Subject: [PATCH 11/47] [v1.2][ISSUE-306]Support threshold filter for language identify operator. (#381) * Add threshold for language identify * Update text_language_identify.py --------- Co-authored-by: Chendi.Xue --- .../operations/text_language_identify.py | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/RecDP/pyrecdp/primitives/operations/text_language_identify.py b/RecDP/pyrecdp/primitives/operations/text_language_identify.py index c2e1da67a..0ee00f9f9 100644 --- a/RecDP/pyrecdp/primitives/operations/text_language_identify.py +++ b/RecDP/pyrecdp/primitives/operations/text_language_identify.py @@ -172,17 +172,17 @@ def predict(model, text: str, k: int = 1): labels = [l.replace("__label__", "") for l in labels] return labels, scores -def construct_classifier(fasttext_model_dir, language_identify_field, language_identify_output_field): +def construct_classifier(fasttext_model_dir, language_identify_field, language_identify_output_field, threshold): print(fasttext_model_dir) if os.path.isfile(fasttext_model_dir): model_path = fasttext_model_dir else: model_path = hf_hub_download(repo_id="facebook/fasttext-language-identification", filename="model.bin") model = Path(model_path) - return Classifier(model, language_identify_field, language_identify_output_field) + return Classifier(model, language_identify_field, language_identify_output_field, threshold=threshold) -def prepare_func_language_id(fasttext_model_dir, language_identify_field, language_identify_output_field): - classifier = construct_classifier(fasttext_model_dir, language_identify_field, language_identify_output_field) +def prepare_func_language_id(fasttext_model_dir, language_identify_field, language_identify_output_field, threshold): + classifier = construct_classifier(fasttext_model_dir, language_identify_field, language_identify_output_field, threshold) def generate_lang_label(content): # 0. apply normalization to content content = {classifier.field: content} @@ -191,12 +191,13 @@ def generate_lang_label(content): return generate_lang_label class LanguageIdentify(BaseLLMOperation): - def __init__(self, text_key = 'text', inplace = False, fasttext_model_dir = ""): - settings = {'text_key': text_key, 'inplace': inplace, 'fasttext_model_dir': fasttext_model_dir} + def __init__(self, text_key = 'text', inplace = False, fasttext_model_dir = "", threshold = 0): + settings = {'text_key': text_key, 'inplace': inplace, 'fasttext_model_dir': fasttext_model_dir, 'threshold': threshold} super().__init__(settings) self.text_key = text_key self.inplace = False self.fasttext_model_dir = fasttext_model_dir + self.threshold = threshold self.actual_func = None self.support_spark = True self.support_ray = True @@ -207,14 +208,16 @@ def process_rayds(self, ds: Dataset) -> Dataset: else: new_name = 'language' if self.actual_func is None: - self.actual_func = prepare_func_language_id(fasttext_model_dir = self.fasttext_model_dir, language_identify_field = self.text_key, language_identify_output_field = new_name) + self.actual_func = prepare_func_language_id(fasttext_model_dir = self.fasttext_model_dir, + language_identify_field = self.text_key, language_identify_output_field = new_name, threshold = self.threshold) return ds.map(lambda x: self.process_row(x, self.text_key, new_name, self.actual_func)) def process_spark(self, spark, spark_df: DataFrame) -> DataFrame: import pyspark.sql.functions as F from pyspark.sql import types as T new_name = "language" - language_id_udf = F.udf(prepare_func_language_id(fasttext_model_dir = self.fasttext_model_dir, language_identify_field = self.text_key, language_identify_output_field = new_name)) + language_id_udf = F.udf(prepare_func_language_id(fasttext_model_dir = self.fasttext_model_dir, + language_identify_field = self.text_key, language_identify_output_field = new_name, threshold = self.threshold)) return spark_df.withColumn(new_name, language_id_udf(F.col(self.text_key))) -LLMOPERATORS.register(LanguageIdentify) \ No newline at end of file +LLMOPERATORS.register(LanguageIdentify) From 99b75eb59e014267e86721c8c96d58222fedc8a9 Mon Sep 17 00:00:00 2001 From: "Chendi.Xue" Date: Thu, 12 Oct 2023 13:29:11 -0500 Subject: [PATCH 12/47] [v1.2][ISSUE-306]update pipeline to support import with json and use mode to init pipeline (#377) * update UT Signed-off-by: Xue, Chendi * update codes Signed-off-by: Xue, Chendi * update json to delete lid Signed-off-by: Xue, Chendi --------- Signed-off-by: Xue, Chendi --- .../unittest_llmutils_operations.yml | 30 +++++++++++ RecDP/pyrecdp/LLM/TextPipeline.py | 4 +- RecDP/pyrecdp/core/pipeline.py | 7 ++- .../bashrun_unittest_llmutils_operations.sh | 23 +++++++++ .../cicd/bashrun_unittest_llmutilspipeline.sh | 2 +- RecDP/tests/data/import_test_pipeline.json | 42 +++++++++++++++ RecDP/tests/test_llmutils_operations.py | 51 +------------------ RecDP/tests/test_llmutils_pipelines.py | 42 +++++++++++++++ 8 files changed, 147 insertions(+), 54 deletions(-) create mode 100644 .github/workflows/unittest_llmutils_operations.yml create mode 100644 RecDP/tests/cicd/bashrun_unittest_llmutils_operations.sh create mode 100644 RecDP/tests/data/import_test_pipeline.json create mode 100644 RecDP/tests/test_llmutils_pipelines.py diff --git a/.github/workflows/unittest_llmutils_operations.yml b/.github/workflows/unittest_llmutils_operations.yml new file mode 100644 index 000000000..bce07bdc9 --- /dev/null +++ b/.github/workflows/unittest_llmutils_operations.yml @@ -0,0 +1,30 @@ +name: Unittest LLM Operations +on: + pull_request: + branches: + - main + paths: + - 'RecDP/pyrecdp/LLM/**' + - 'RecDP/pyrecdp/primitives/operations/**' + - 'RecDP/tests/cicd/bashrun_unittest_llmutilspipeline.sh' + - 'RecDP/tests/test_llmutils_operations.py' + +jobs: + unittest: + name: Unittest LLM + runs-on: self-hosted + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Build Docker + run: | + cd RecDP && cd Dockerfile && docker build -t pyrecdp-test-env . -f DockerfileUbuntu --build-arg https_proxy=${https_proxy} && cd .. && yes | docker container prune && yes | docker image prune + + - name: RUN Unittests + run: | + cd RecDP && docker run --rm --name unittest-pyrecdp-autofe-pandas --shm-size=300g --privileged --network host --device=/dev/dri -e RECDP_MODELS_CACHE=/home/vmagent/models -v `pwd`:/home/vmagent/app/ -v `pwd`/../../models:/home/vmagent/models/ -w /home/vmagent/app/ pyrecdp-test-env /bin/bash -c "sh tests/cicd/bashrun_unittest_llmutils_operations.sh" + + - name: Clean env + run: | + docker ps --filter name=unittest-pyrecdp-autofe-pandas; while read line; do docker stop unittest-pyrecdp-autofe-pandas;done diff --git a/RecDP/pyrecdp/LLM/TextPipeline.py b/RecDP/pyrecdp/LLM/TextPipeline.py index 62e28c8bc..ecaf3dc9a 100644 --- a/RecDP/pyrecdp/LLM/TextPipeline.py +++ b/RecDP/pyrecdp/LLM/TextPipeline.py @@ -25,7 +25,9 @@ class TextPipeline(BasePipeline): def __init__(self, pipeline_file=None): super().__init__() if pipeline_file != None: - self.import_from_yaml(pipeline_file) + self.import_from_json(pipeline_file) if pipeline_file.endswith( + '.json') else self.import_from_yaml(pipeline_file) + self.plot() else: # add a data set input place holder op = DatasetReader() diff --git a/RecDP/pyrecdp/core/pipeline.py b/RecDP/pyrecdp/core/pipeline.py index 98ccaf7fb..c79b03932 100644 --- a/RecDP/pyrecdp/core/pipeline.py +++ b/RecDP/pyrecdp/core/pipeline.py @@ -95,7 +95,7 @@ def delete_operation(self, id): self.transformed_end_idx = children[0] del self.pipeline[cur_idx] - def plot(self): + def plot(self, filename=None): f = graphviz.Digraph(format='svg') edges = [] nodes = [] @@ -133,7 +133,10 @@ def add_break(input): for edge in edges: f.edge(*edge) try: - f.render(filename='pipeline', view = False) + if filename is None: + f.render(filename='pipeline_plot', view=False) + else: + f.render(filename=filename, view=False) except: pass return f diff --git a/RecDP/tests/cicd/bashrun_unittest_llmutils_operations.sh b/RecDP/tests/cicd/bashrun_unittest_llmutils_operations.sh new file mode 100644 index 000000000..43363dda5 --- /dev/null +++ b/RecDP/tests/cicd/bashrun_unittest_llmutils_operations.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +failed_tests="" +echo "Setup pyrecdp latest package" +python setup.py sdist && pip install dist/pyrecdp-*.*.*.tar.gz + +python -m unittest tests.test_llmutils_operations.Test_LLMUtils_Operations + +# echo "test_llmutils_pipeline.Test_LLMUtils_Pipeline.test_TextGlobalDeduplicate" +# python -m unittest tests.test_llmutils_pipeline.Test_LLMUtils_Pipeline.test_TextGlobalDeduplicate +# if [ $? != 0 ]; then +# failed_tests=${failed_tests}"tests.test_llmutils_pipeline.Test_LLMUtils_Pipeline.test_TextGlobalDeduplicate\n" +# fi + + + +# if [ -z ${failed_tests} ]; then +# echo "All tests are passed" +# else +# echo "*** Failed Tests are: ***" +# echo -e ${failed_tests} +# exit 1 +# fi diff --git a/RecDP/tests/cicd/bashrun_unittest_llmutilspipeline.sh b/RecDP/tests/cicd/bashrun_unittest_llmutilspipeline.sh index 0d61828ab..5c718bc89 100644 --- a/RecDP/tests/cicd/bashrun_unittest_llmutilspipeline.sh +++ b/RecDP/tests/cicd/bashrun_unittest_llmutilspipeline.sh @@ -4,7 +4,7 @@ failed_tests="" echo "Setup pyrecdp latest package" python setup.py sdist && pip install dist/pyrecdp-*.*.*.tar.gz -python -m unittest tests.test_llmutils_operations +python -m unittest tests.test_llmutils_pipelines.Test_LLMUtils_Pipeline # echo "test_llmutils_pipeline.Test_LLMUtils_Pipeline.test_TextGlobalDeduplicate" # python -m unittest tests.test_llmutils_pipeline.Test_LLMUtils_Pipeline.test_TextGlobalDeduplicate diff --git a/RecDP/tests/data/import_test_pipeline.json b/RecDP/tests/data/import_test_pipeline.json new file mode 100644 index 000000000..3e78a38ad --- /dev/null +++ b/RecDP/tests/data/import_test_pipeline.json @@ -0,0 +1,42 @@ +{ + "0": { + "children": null, + "op": "DatasetReader", + "config": {} + }, + "1": { + "children": [ + 0 + ], + "op": "PerfileSourcedJsonlReader", + "config": { + "input_dir": "tests/data/llm_data/" + } + }, + "2": { + "children": [ + 1 + ], + "op": "LengthFilter", + "config": { + "minimum_length": 100, + "maximum_length": -1 + } + }, + "3": { + "children": [ + 2 + ], + "op": "ProfanityFilter", + "config": {} + }, + "4": { + "children": [ + 3 + ], + "op": "PerfileParquetWriter", + "config": { + "output_dir": "ResumableTextPipeline_output_import" + } + } +} \ No newline at end of file diff --git a/RecDP/tests/test_llmutils_operations.py b/RecDP/tests/test_llmutils_operations.py index 99599bf42..bf090b093 100644 --- a/RecDP/tests/test_llmutils_operations.py +++ b/RecDP/tests/test_llmutils_operations.py @@ -210,53 +210,4 @@ def test_qualityscore_spark(self): def test_diversityindicate_spark(self): op = TextDiversityIndicate() with SparkContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: - ctx.show(op.process_spark(ctx.spark, ctx.ds)) - -class RDS: - def __init__(self, ds): - self.ds_engine = 'spark' if isinstance(ds, DataFrame) else 'ray' - self.ds = ds - def to_pandas(self): - print(self.ds_engine) - if self.ds_engine == 'ray': - return self.ds.to_pandas() - elif self.ds_engine == 'spark': - return self.ds.toPandas() - else: - pass - -class Test_LLMUtils_Pipeline(unittest.TestCase): - - def setUp(self) -> None: - print(f"\n******\nTesting Method Name: {self._testMethodName}\n******") - - def test_TextSourceId(self): - pipeline = TextPipeline() - ops = [ - SourcedJsonlReader("tests/data/llm_data/", source_prefix="") - ] - pipeline.add_operations(ops) - ret = pipeline.execute() - pd = RDS(ret).to_pandas() - display(pd) - - def test_TextPIIRemoval_resumable(self): - pipeline = ResumableTextPipeline() - ops = [ - JsonlReader("tests/data/llm_data/"), - PIIRemoval(model_root_path = os.path.join(RECDP_MODELS_CACHE, "huggingface")) - ] - pipeline.add_operations(ops) - pipeline.execute() - - def test_TextPipeline_resumable(self): - pipeline = ResumableTextPipeline() - ops = [ - JsonlReader("tests/data/llm_data/"), - LengthFilter(), - ProfanityFilter(), - LanguageIdentify(fasttext_model_dir = os.path.join(RECDP_MODELS_CACHE, "lid.bin")), - PerfileParquetWriter("ResumableTextPipeline_output_20231004205724") - ] - pipeline.add_operations(ops) - pipeline.execute() \ No newline at end of file + ctx.show(op.process_spark(ctx.spark, ctx.ds)) \ No newline at end of file diff --git a/RecDP/tests/test_llmutils_pipelines.py b/RecDP/tests/test_llmutils_pipelines.py new file mode 100644 index 000000000..e9cc7487f --- /dev/null +++ b/RecDP/tests/test_llmutils_pipelines.py @@ -0,0 +1,42 @@ +import unittest +import sys +import pandas as pd +from pathlib import Path +import os +from IPython.display import display + +pathlib = str(Path(__file__).parent.parent.resolve()) +print(pathlib) +try: + import pyrecdp +except: + print("Not detect system installed pyrecdp, using local one") + sys.path.append(pathlib) +from pyrecdp.primitives.operations import * +from pyrecdp.LLM import TextPipeline, ResumableTextPipeline +from pyrecdp.core.cache_utils import RECDP_MODELS_CACHE +from pyrecdp.core import SparkDataProcessor + + +class Test_LLMUtils_Pipeline(unittest.TestCase): + + def setUp(self) -> None: + print(f"\n******\nTesting Method Name: {self._testMethodName}\n******") + + def test_ResumableTextPipeline(self): + pipeline = ResumableTextPipeline() + ops = [ + JsonlReader("tests/data/llm_data/"), + LengthFilter(), + ProfanityFilter(), + LanguageIdentify(fasttext_model_dir = os.path.join(RECDP_MODELS_CACHE, "lid.bin")), + PerfileParquetWriter("ResumableTextPipeline_output_20231004205724") + ] + pipeline.add_operations(ops) + pipeline.execute() + del pipeline + + def test_ResumableTextPipeline_import(self): + pipeline = ResumableTextPipeline(pipeline_file = 'tests/data/import_test_pipeline.json') + pipeline.execute() + del pipeline From 3ce73379645a6c03196d63192402414e790d739a Mon Sep 17 00:00:00 2001 From: "Chendi.Xue" Date: Thu, 12 Oct 2023 17:05:19 -0500 Subject: [PATCH 13/47] [v1.2][ISSUE-306]Customer op (#384) * support customer map and filter function meanwhile, support spark in ResumableTextPipeline Signed-off-by: Xue, Chendi * update README Signed-off-by: Xue, Chendi --------- Signed-off-by: Xue, Chendi --- .../notebooks/llmutils/custom_filter.ipynb | 2233 +++++++++++++++++ .../notebooks/llmutils/custom_map.ipynb | 2233 +++++++++++++++++ .../llmutils/repetition_remove.ipynb | 2233 +++++++++++++++++ RecDP/pyrecdp/LLM/README.md | 13 +- RecDP/pyrecdp/LLM/TextPipeline.py | 135 +- RecDP/pyrecdp/core/pipeline.py | 4 +- .../pyrecdp/primitives/operations/__init__.py | 1 + RecDP/pyrecdp/primitives/operations/base.py | 13 +- .../operations/filter/badwords_filter.py | 2 +- .../primitives/operations/filter/base.py | 1 - .../primitives/operations/text_custom.py | 58 + .../operations/text_qualityscorer.py | 1 - .../primitives/operations/text_reader.py | 37 +- .../primitives/operations/text_writer.py | 57 +- RecDP/tests/data/import_test_pipeline.json | 2 +- RecDP/tests/test_llmutils_operations.py | 32 + RecDP/tests/test_llmutils_pipelines.py | 63 +- 17 files changed, 7050 insertions(+), 68 deletions(-) create mode 100644 RecDP/examples/notebooks/llmutils/custom_filter.ipynb create mode 100644 RecDP/examples/notebooks/llmutils/custom_map.ipynb create mode 100644 RecDP/examples/notebooks/llmutils/repetition_remove.ipynb create mode 100644 RecDP/pyrecdp/primitives/operations/text_custom.py diff --git a/RecDP/examples/notebooks/llmutils/custom_filter.ipynb b/RecDP/examples/notebooks/llmutils/custom_filter.ipynb new file mode 100644 index 000000000..936cb3659 --- /dev/null +++ b/RecDP/examples/notebooks/llmutils/custom_filter.ipynb @@ -0,0 +1,2233 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "NUdnJWOJLGvF", + "metadata": { + "id": "NUdnJWOJLGvF" + }, + "source": [ + "# RecDP LLM - TextBytesize\n", + "\n", + "TextBytesize is a tool to get total byte size of text in the data.\n", + "\n", + "### We support two types of input and output:\n", + "\n", + "example 1:\n", + "* Expect Input format: a folder of *.jsonl.\n", + "* Expect Output format: a folder of *.jsonl after reduction." + ] + }, + { + "cell_type": "markdown", + "id": "C1FFwhr3MwA1", + "metadata": { + "id": "C1FFwhr3MwA1" + }, + "source": [ + "# Get started" + ] + }, + { + "cell_type": "markdown", + "id": "tMaSNIKIMz3T", + "metadata": { + "id": "tMaSNIKIMz3T" + }, + "source": [ + "## Install pyrecdp and dependencies" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ro4yOk5IMvRY", + "metadata": { + "id": "ro4yOk5IMvRY" + }, + "outputs": [], + "source": [ + "! DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-8-jre\n", + "! pip install pyrecdp --pre\n", + "# ! pip install 'git+https://github.com/intel/e2eAIOK.git#egg=pyrecdp&subdirectory=RecDP'" + ] + }, + { + "cell_type": "markdown", + "id": "pnHK2VTvM5rg", + "metadata": { + "id": "pnHK2VTvM5rg" + }, + "source": [ + "## 2. prepare your own data" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a", + "metadata": { + "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "d326b334-d005-42e1-ee4e-619d9c0b388b" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "/content/test_data\n", + "--2023-10-11 18:10:37-- https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/PILE/NIH_sample.jsonl\n", + "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...\n", + "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 21626664 (21M) [text/plain]\n", + "Saving to: ‘/content/test_data/NIH_sample.jsonl’\n", + "\n", + "NIH_sample.jsonl 100%[===================>] 20.62M 114MB/s in 0.2s \n", + "\n", + "2023-10-11 18:10:38 (114 MB/s) - ‘/content/test_data/NIH_sample.jsonl’ saved [21626664/21626664]\n", + "\n" + ] + } + ], + "source": [ + "%mkdir -p /content/test_data\n", + "%cd /content/test_data\n", + "file_names = ['NIH_sample.jsonl']\n", + "file_list = [f\"https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/PILE/{i}\" for i in file_names]\n", + "!wget -P /content/test_data {\" \".join(file_list)}" + ] + }, + { + "cell_type": "markdown", + "id": "J-125gFtNyOg", + "metadata": { + "id": "J-125gFtNyOg" + }, + "source": [ + "## 3. get bytesize" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "vkGRn9uJN4B0", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vkGRn9uJN4B0", + "outputId": "fb931ee0-a81c-414e-aa6c-60b3db1ab4cd" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "NIH_sample.jsonl\n" + ] + } + ], + "source": [ + "! ls /content/test_data" + ] + }, + { + "cell_type": "markdown", + "source": [ + "### 3.1 PIPELINE based API" + ], + "metadata": { + "id": "HZIPEzB477Bm" + }, + "id": "HZIPEzB477Bm" + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "SMK9KcV4N7al", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 704, + "referenced_widgets": [ + "2f6ad7bbc0964d7696c7dec5d0e66f44", + "60dd954b33414adfabf772f49ea2f3a2", + "93697baecfd442fa8d8db709cfc82eee", + "77548643af8d430db70bfb0af3707f91", + "92f4fcc6115c4f809c15b942ca0d11d4", + "90a32f5a48a74578bad33421c0e1599c", + "ec2613a4e1c04b2789a4ca8a257bda53", + "f955ca8d9b9e451791a5aa53bb984a71", + "0d52219723f944eb8b34e5aee50298be", + "58951323a0804ad8ad9d68dd4292f35f", + "c9d153b598854d0686849b48f84aa01e" + ] + }, + "id": "SMK9KcV4N7al", + "outputId": "17b2f0cc-92f7-4ff5-bdb0-7d3fb338c305" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "JAVA_HOME is not set, use default value of /usr/lib/jvm/java-8-openjdk-amd64/\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.10/dist-packages/pyspark/pandas/__init__.py:50: UserWarning: 'PYARROW_IGNORE_TIMEZONE' environment variable was not set. It is required to set this environment variable to '1' in both driver and executor sides if you use pyarrow>=2.0.0. pandas-on-Spark will set it for you but it does not work if there is a Spark context already launched.\n", + " warnings.warn(\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "\t\t\t\n", + "\t\t" + ] + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "init ray\n", + "init ray with total mem of 8167961395, total core of 1\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2023-10-11 18:11:28,068\tWARNING services.py:1889 -- WARNING: The object store is using /tmp instead of /dev/shm because /dev/shm has only 6133121024 bytes available. This will harm performance! You may be able to free up space by deleting files in /dev/shm. If you are inside a Docker container, you can increase /dev/shm size by passing '--shm-size=8.37gb' to 'docker run' (or add it to the run_options list in a Ray cluster config). Make sure to set this to more than 30% of available RAM.\n", + "2023-10-11 18:11:29,354\tINFO worker.py:1642 -- Started a local Ray instance.\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "execute with ray started ...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2023-10-11 18:11:34,510\tINFO read_api.py:406 -- To satisfy the requested parallelism of 20, each read task output is split into 20 smaller blocks.\n", + "2023-10-11 18:11:34,568\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[ReadText->SplitBlocks(20)] -> TaskPoolMapOperator[Map(convert_json)->Map()]\n", + "2023-10-11 18:11:34,576\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-10-11 18:11:34,582\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running 0: 0%| | 0/400 [00:00Map() pid=1685)\u001b[0m 2023-10-11 18:11:46.345224: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n", + "2023-10-11 18:11:50,723\tWARNING plan.py:567 -- Warning: The Ray cluster currently does not have any available CPUs. The Dataset job will hang unless more CPUs are freed up. A common reason is that cluster resources are used by Actors or Tune trials; see the following link for more details: https://docs.ray.io/en/master/data/dataset-internals.html#datasets-and-tune\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "execute with ray took 17.940069602999984 sec\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " meta \\\n", + "0 {'APPLICATION_ID': 100065} \n", + "1 {'APPLICATION_ID': 100066} \n", + "2 {'APPLICATION_ID': 100067} \n", + "3 {'APPLICATION_ID': 100068} \n", + "4 {'APPLICATION_ID': 100069} \n", + "... ... \n", + "9995 {'APPLICATION_ID': 2120612} \n", + "9996 {'APPLICATION_ID': 2120613} \n", + "9997 {'APPLICATION_ID': 2120616} \n", + "9998 {'APPLICATION_ID': 2120620} \n", + "9999 {'APPLICATION_ID': 2120624} \n", + "\n", + " text bytesize \n", + "0 The National Domestic Violence Hotline (NDVH) ... 1460 \n", + "1 The Office of Planning, Research and Evaluatio... 3181 \n", + "2 Improving outcomes for low-income fathers and ... 1777 \n", + "3 This project is implementing 36-month follow-u... 1760 \n", + "4 The CCDF Policies Database is a source of info... 2157 \n", + "... ... ... \n", + "9995 Project: Research and produce a videotape that... 1241 \n", + "9996 While relapse prevention has been studied and ... 1281 \n", + "9997 The proposed study on recruitment, adherence a... 2867 \n", + "9998 Recent studies suggest that HIV epidemics are ... 2424 \n", + "9999 The overall goal of this study is to develop a... 1463 \n", + "\n", + "[10000 rows x 3 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
metatextbytesize
0{'APPLICATION_ID': 100065}The National Domestic Violence Hotline (NDVH) ...1460
1{'APPLICATION_ID': 100066}The Office of Planning, Research and Evaluatio...3181
2{'APPLICATION_ID': 100067}Improving outcomes for low-income fathers and ...1777
3{'APPLICATION_ID': 100068}This project is implementing 36-month follow-u...1760
4{'APPLICATION_ID': 100069}The CCDF Policies Database is a source of info...2157
............
9995{'APPLICATION_ID': 2120612}Project: Research and produce a videotape that...1241
9996{'APPLICATION_ID': 2120613}While relapse prevention has been studied and ...1281
9997{'APPLICATION_ID': 2120616}The proposed study on recruitment, adherence a...2867
9998{'APPLICATION_ID': 2120620}Recent studies suggest that HIV epidemics are ...2424
9999{'APPLICATION_ID': 2120624}The overall goal of this study is to develop a...1463
\n", + "

10000 rows × 3 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 5 + } + ], + "source": [ + "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", + "from pyrecdp.primitives.operations import *\n", + "\n", + "pipeline = TextPipeline()\n", + "ops = [\n", + " JsonlReader(\"/content/test_data/\"),\n", + " TextBytesize(text_key = 'text'),\n", + "]\n", + "pipeline.add_operations(ops)\n", + "ret = pipeline.execute()\n", + "ret.to_pandas()" + ] + }, + { + "cell_type": "markdown", + "source": [ + "### 3.2 Operation-based API" + ], + "metadata": { + "id": "WJJXs5Co8EsB" + }, + "id": "WJJXs5Co8EsB" + }, + { + "cell_type": "markdown", + "source": [ + "#### prepare Ray and Spark context" + ], + "metadata": { + "id": "K49OFih-8aUc" + }, + "id": "K49OFih-8aUc" + }, + { + "cell_type": "code", + "source": [ + "import psutil\n", + "import ray\n", + "from pyrecdp.core import SparkDataProcessor\n", + "from pyspark.sql import DataFrame\n", + "from pyrecdp.core.cache_utils import RECDP_MODELS_CACHE\n", + "\n", + "total_mem = int(psutil.virtual_memory().total * 0.5)\n", + "total_cores = psutil.cpu_count(logical=False)\n", + "\n", + "class RayContext:\n", + " def __init__(self, dataset_path):\n", + " self.dataset_path = dataset_path\n", + "\n", + " def __enter__(self):\n", + " if not ray.is_initialized():\n", + " try:\n", + " ray.init(object_store_memory=total_mem, num_cpus=total_cores)\n", + " except:\n", + " ray.init()\n", + "\n", + " reader = JsonlReader(self.dataset_path)\n", + " self.ds = reader.process_rayds(None)\n", + " return self\n", + "\n", + " def __exit__(self, exc_type, exc_value, exc_traceback):\n", + " if ray.is_initialized():\n", + " ray.shutdown()\n", + "\n", + " def show(self, ds):\n", + " pd = ds.to_pandas()\n", + " display(pd)\n", + "\n", + "class SparkContext:\n", + " def __init__(self, dataset_path):\n", + " self.dataset_path = dataset_path\n", + " self.rdp = SparkDataProcessor()\n", + "\n", + " def __enter__(self):\n", + " self.spark = self.rdp.spark\n", + " reader = JsonlReader(self.dataset_path)\n", + " self.ds = reader.process_spark(self.spark)\n", + " return self\n", + "\n", + " def __exit__(self, exc_type, exc_value, exc_traceback):\n", + " pass\n", + "\n", + " def show(self, ds):\n", + " pd = ds.toPandas()\n", + " display(pd)" + ], + "metadata": { + "id": "-F2f_JCo8I0R" + }, + "id": "-F2f_JCo8I0R", + "execution_count": 6, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "# Ray mode\n", + "\n", + "from pyrecdp.primitives.operations import *\n", + "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", + "\n", + "op = TextBytesize()\n", + "with RayContext(\"/content/test_data/\") as ctx:\n", + " ctx.show(op.process_rayds(ctx.ds))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 513, + "referenced_widgets": [ + "41fbe06aba494f75ba11aeaf3fd6fa94", + "2784ff8eb12c471eac0c335cc3169c5c", + "de524508eb0947749b3f13c6710f1dbb", + "dbe163714118476e98ec10efc2e6f1e1", + "1dc281fa098a40f6a07af047f0edd1a9", + "789f99f9724442d59f05be15b3231888", + "bc776eb0348c49348497687be7316166", + "05302bd682724596bf8a61dbca5ae2e4", + "81f6b801a20c4f5c9ab21fc0dbccbd5d", + "c96dd696d0a84e8485b705750be517d7", + "61d3c42680814b0a95ccfac427d5c553" + ] + }, + "id": "zjFGFuWm8uLW", + "outputId": "750ead08-4002-4102-a6c7-c90f1694a0d7" + }, + "id": "zjFGFuWm8uLW", + "execution_count": 7, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2023-10-11 18:16:49,727\tINFO read_api.py:406 -- To satisfy the requested parallelism of 20, each read task output is split into 20 smaller blocks.\n", + "2023-10-11 18:16:49,743\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[ReadText->SplitBlocks(20)] -> TaskPoolMapOperator[Map(convert_json)->Map()]\n", + "2023-10-11 18:16:49,748\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-10-11 18:16:49,752\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running 0: 0%| | 0/400 [00:00\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
metatextbytesize
0{'APPLICATION_ID': 100065}The National Domestic Violence Hotline (NDVH) ...1460
1{'APPLICATION_ID': 100066}The Office of Planning, Research and Evaluatio...3181
2{'APPLICATION_ID': 100067}Improving outcomes for low-income fathers and ...1777
3{'APPLICATION_ID': 100068}This project is implementing 36-month follow-u...1760
4{'APPLICATION_ID': 100069}The CCDF Policies Database is a source of info...2157
............
9995{'APPLICATION_ID': 2120612}Project: Research and produce a videotape that...1241
9996{'APPLICATION_ID': 2120613}While relapse prevention has been studied and ...1281
9997{'APPLICATION_ID': 2120616}The proposed study on recruitment, adherence a...2867
9998{'APPLICATION_ID': 2120620}Recent studies suggest that HIV epidemics are ...2424
9999{'APPLICATION_ID': 2120624}The overall goal of this study is to develop a...1463
\n", + "

10000 rows × 3 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + " \n" + ] + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "81NiajWFTy2n", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 458 + }, + "id": "81NiajWFTy2n", + "outputId": "db70e3fb-8033-4c08-b58b-b24c4e87aa42" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Will assign 1 cores and 10386 M memory for spark\n", + "per core memory size is 10.143 GB and shuffle_disk maximum capacity is 8589934592.000 GB\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " text \\\n", + "0 The National Domestic Violence Hotline (NDVH) ... \n", + "1 The Office of Planning, Research and Evaluatio... \n", + "2 Improving outcomes for low-income fathers and ... \n", + "3 This project is implementing 36-month follow-u... \n", + "4 The CCDF Policies Database is a source of info... \n", + "... ... \n", + "9995 Project: Research and produce a videotape that... \n", + "9996 While relapse prevention has been studied and ... \n", + "9997 The proposed study on recruitment, adherence a... \n", + "9998 Recent studies suggest that HIV epidemics are ... \n", + "9999 The overall goal of this study is to develop a... \n", + "\n", + " meta bytesize \n", + "0 {\"APPLICATION_ID\":100065} 1460 \n", + "1 {\"APPLICATION_ID\":100066} 3181 \n", + "2 {\"APPLICATION_ID\":100067} 1777 \n", + "3 {\"APPLICATION_ID\":100068} 1760 \n", + "4 {\"APPLICATION_ID\":100069} 2157 \n", + "... ... ... \n", + "9995 {\"APPLICATION_ID\":2120612} 1241 \n", + "9996 {\"APPLICATION_ID\":2120613} 1281 \n", + "9997 {\"APPLICATION_ID\":2120616} 2867 \n", + "9998 {\"APPLICATION_ID\":2120620} 2424 \n", + "9999 {\"APPLICATION_ID\":2120624} 1463 \n", + "\n", + "[10000 rows x 3 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
textmetabytesize
0The National Domestic Violence Hotline (NDVH) ...{\"APPLICATION_ID\":100065}1460
1The Office of Planning, Research and Evaluatio...{\"APPLICATION_ID\":100066}3181
2Improving outcomes for low-income fathers and ...{\"APPLICATION_ID\":100067}1777
3This project is implementing 36-month follow-u...{\"APPLICATION_ID\":100068}1760
4The CCDF Policies Database is a source of info...{\"APPLICATION_ID\":100069}2157
............
9995Project: Research and produce a videotape that...{\"APPLICATION_ID\":2120612}1241
9996While relapse prevention has been studied and ...{\"APPLICATION_ID\":2120613}1281
9997The proposed study on recruitment, adherence a...{\"APPLICATION_ID\":2120616}2867
9998Recent studies suggest that HIV epidemics are ...{\"APPLICATION_ID\":2120620}2424
9999The overall goal of this study is to develop a...{\"APPLICATION_ID\":2120624}1463
\n", + "

10000 rows × 3 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {} + } + ], + "source": [ + "# Spark mode\n", + "\n", + "from pyrecdp.primitives.operations import *\n", + "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", + "\n", + "op = TextBytesize()\n", + "with SparkContext(\"/content/test_data/\") as ctx:\n", + " ctx.show(op.process_spark(ctx.spark, ctx.ds))" + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "2f6ad7bbc0964d7696c7dec5d0e66f44": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_60dd954b33414adfabf772f49ea2f3a2", + "IPY_MODEL_93697baecfd442fa8d8db709cfc82eee", + "IPY_MODEL_77548643af8d430db70bfb0af3707f91" + ], + "layout": "IPY_MODEL_92f4fcc6115c4f809c15b942ca0d11d4" + } + }, + "60dd954b33414adfabf772f49ea2f3a2": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_90a32f5a48a74578bad33421c0e1599c", + "placeholder": "​", + "style": "IPY_MODEL_ec2613a4e1c04b2789a4ca8a257bda53", + "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 0.0 MiB/1.9 GiB object_store_memory: 100%" + } + }, + "93697baecfd442fa8d8db709cfc82eee": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f955ca8d9b9e451791a5aa53bb984a71", + "max": 400, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_0d52219723f944eb8b34e5aee50298be", + "value": 20 + } + }, + "77548643af8d430db70bfb0af3707f91": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_58951323a0804ad8ad9d68dd4292f35f", + "placeholder": "​", + "style": "IPY_MODEL_c9d153b598854d0686849b48f84aa01e", + "value": " 20/20 [00:16<00:00, 5.89it/s]" + } + }, + "92f4fcc6115c4f809c15b942ca0d11d4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "90a32f5a48a74578bad33421c0e1599c": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ec2613a4e1c04b2789a4ca8a257bda53": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f955ca8d9b9e451791a5aa53bb984a71": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0d52219723f944eb8b34e5aee50298be": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "58951323a0804ad8ad9d68dd4292f35f": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c9d153b598854d0686849b48f84aa01e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "41fbe06aba494f75ba11aeaf3fd6fa94": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_2784ff8eb12c471eac0c335cc3169c5c", + "IPY_MODEL_de524508eb0947749b3f13c6710f1dbb", + "IPY_MODEL_dbe163714118476e98ec10efc2e6f1e1" + ], + "layout": "IPY_MODEL_1dc281fa098a40f6a07af047f0edd1a9" + } + }, + "2784ff8eb12c471eac0c335cc3169c5c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_789f99f9724442d59f05be15b3231888", + "placeholder": "​", + "style": "IPY_MODEL_bc776eb0348c49348497687be7316166", + "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 1.08 MiB/1.9 GiB object_store_memory: 100%" + } + }, + "de524508eb0947749b3f13c6710f1dbb": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_05302bd682724596bf8a61dbca5ae2e4", + "max": 400, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_81f6b801a20c4f5c9ab21fc0dbccbd5d", + "value": 20 + } + }, + "dbe163714118476e98ec10efc2e6f1e1": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c96dd696d0a84e8485b705750be517d7", + "placeholder": "​", + "style": "IPY_MODEL_61d3c42680814b0a95ccfac427d5c553", + "value": " 20/20 [00:04<00:00, 7.92it/s]" + } + }, + "1dc281fa098a40f6a07af047f0edd1a9": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "789f99f9724442d59f05be15b3231888": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bc776eb0348c49348497687be7316166": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "05302bd682724596bf8a61dbca5ae2e4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "81f6b801a20c4f5c9ab21fc0dbccbd5d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "c96dd696d0a84e8485b705750be517d7": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "61d3c42680814b0a95ccfac427d5c553": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/RecDP/examples/notebooks/llmutils/custom_map.ipynb b/RecDP/examples/notebooks/llmutils/custom_map.ipynb new file mode 100644 index 000000000..936cb3659 --- /dev/null +++ b/RecDP/examples/notebooks/llmutils/custom_map.ipynb @@ -0,0 +1,2233 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "NUdnJWOJLGvF", + "metadata": { + "id": "NUdnJWOJLGvF" + }, + "source": [ + "# RecDP LLM - TextBytesize\n", + "\n", + "TextBytesize is a tool to get total byte size of text in the data.\n", + "\n", + "### We support two types of input and output:\n", + "\n", + "example 1:\n", + "* Expect Input format: a folder of *.jsonl.\n", + "* Expect Output format: a folder of *.jsonl after reduction." + ] + }, + { + "cell_type": "markdown", + "id": "C1FFwhr3MwA1", + "metadata": { + "id": "C1FFwhr3MwA1" + }, + "source": [ + "# Get started" + ] + }, + { + "cell_type": "markdown", + "id": "tMaSNIKIMz3T", + "metadata": { + "id": "tMaSNIKIMz3T" + }, + "source": [ + "## Install pyrecdp and dependencies" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ro4yOk5IMvRY", + "metadata": { + "id": "ro4yOk5IMvRY" + }, + "outputs": [], + "source": [ + "! DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-8-jre\n", + "! pip install pyrecdp --pre\n", + "# ! pip install 'git+https://github.com/intel/e2eAIOK.git#egg=pyrecdp&subdirectory=RecDP'" + ] + }, + { + "cell_type": "markdown", + "id": "pnHK2VTvM5rg", + "metadata": { + "id": "pnHK2VTvM5rg" + }, + "source": [ + "## 2. prepare your own data" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a", + "metadata": { + "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "d326b334-d005-42e1-ee4e-619d9c0b388b" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "/content/test_data\n", + "--2023-10-11 18:10:37-- https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/PILE/NIH_sample.jsonl\n", + "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...\n", + "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 21626664 (21M) [text/plain]\n", + "Saving to: ‘/content/test_data/NIH_sample.jsonl’\n", + "\n", + "NIH_sample.jsonl 100%[===================>] 20.62M 114MB/s in 0.2s \n", + "\n", + "2023-10-11 18:10:38 (114 MB/s) - ‘/content/test_data/NIH_sample.jsonl’ saved [21626664/21626664]\n", + "\n" + ] + } + ], + "source": [ + "%mkdir -p /content/test_data\n", + "%cd /content/test_data\n", + "file_names = ['NIH_sample.jsonl']\n", + "file_list = [f\"https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/PILE/{i}\" for i in file_names]\n", + "!wget -P /content/test_data {\" \".join(file_list)}" + ] + }, + { + "cell_type": "markdown", + "id": "J-125gFtNyOg", + "metadata": { + "id": "J-125gFtNyOg" + }, + "source": [ + "## 3. get bytesize" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "vkGRn9uJN4B0", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vkGRn9uJN4B0", + "outputId": "fb931ee0-a81c-414e-aa6c-60b3db1ab4cd" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "NIH_sample.jsonl\n" + ] + } + ], + "source": [ + "! ls /content/test_data" + ] + }, + { + "cell_type": "markdown", + "source": [ + "### 3.1 PIPELINE based API" + ], + "metadata": { + "id": "HZIPEzB477Bm" + }, + "id": "HZIPEzB477Bm" + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "SMK9KcV4N7al", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 704, + "referenced_widgets": [ + "2f6ad7bbc0964d7696c7dec5d0e66f44", + "60dd954b33414adfabf772f49ea2f3a2", + "93697baecfd442fa8d8db709cfc82eee", + "77548643af8d430db70bfb0af3707f91", + "92f4fcc6115c4f809c15b942ca0d11d4", + "90a32f5a48a74578bad33421c0e1599c", + "ec2613a4e1c04b2789a4ca8a257bda53", + "f955ca8d9b9e451791a5aa53bb984a71", + "0d52219723f944eb8b34e5aee50298be", + "58951323a0804ad8ad9d68dd4292f35f", + "c9d153b598854d0686849b48f84aa01e" + ] + }, + "id": "SMK9KcV4N7al", + "outputId": "17b2f0cc-92f7-4ff5-bdb0-7d3fb338c305" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "JAVA_HOME is not set, use default value of /usr/lib/jvm/java-8-openjdk-amd64/\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.10/dist-packages/pyspark/pandas/__init__.py:50: UserWarning: 'PYARROW_IGNORE_TIMEZONE' environment variable was not set. It is required to set this environment variable to '1' in both driver and executor sides if you use pyarrow>=2.0.0. pandas-on-Spark will set it for you but it does not work if there is a Spark context already launched.\n", + " warnings.warn(\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "\t\t\t\n", + "\t\t" + ] + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "init ray\n", + "init ray with total mem of 8167961395, total core of 1\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2023-10-11 18:11:28,068\tWARNING services.py:1889 -- WARNING: The object store is using /tmp instead of /dev/shm because /dev/shm has only 6133121024 bytes available. This will harm performance! You may be able to free up space by deleting files in /dev/shm. If you are inside a Docker container, you can increase /dev/shm size by passing '--shm-size=8.37gb' to 'docker run' (or add it to the run_options list in a Ray cluster config). Make sure to set this to more than 30% of available RAM.\n", + "2023-10-11 18:11:29,354\tINFO worker.py:1642 -- Started a local Ray instance.\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "execute with ray started ...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2023-10-11 18:11:34,510\tINFO read_api.py:406 -- To satisfy the requested parallelism of 20, each read task output is split into 20 smaller blocks.\n", + "2023-10-11 18:11:34,568\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[ReadText->SplitBlocks(20)] -> TaskPoolMapOperator[Map(convert_json)->Map()]\n", + "2023-10-11 18:11:34,576\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-10-11 18:11:34,582\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running 0: 0%| | 0/400 [00:00Map() pid=1685)\u001b[0m 2023-10-11 18:11:46.345224: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n", + "2023-10-11 18:11:50,723\tWARNING plan.py:567 -- Warning: The Ray cluster currently does not have any available CPUs. The Dataset job will hang unless more CPUs are freed up. A common reason is that cluster resources are used by Actors or Tune trials; see the following link for more details: https://docs.ray.io/en/master/data/dataset-internals.html#datasets-and-tune\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "execute with ray took 17.940069602999984 sec\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " meta \\\n", + "0 {'APPLICATION_ID': 100065} \n", + "1 {'APPLICATION_ID': 100066} \n", + "2 {'APPLICATION_ID': 100067} \n", + "3 {'APPLICATION_ID': 100068} \n", + "4 {'APPLICATION_ID': 100069} \n", + "... ... \n", + "9995 {'APPLICATION_ID': 2120612} \n", + "9996 {'APPLICATION_ID': 2120613} \n", + "9997 {'APPLICATION_ID': 2120616} \n", + "9998 {'APPLICATION_ID': 2120620} \n", + "9999 {'APPLICATION_ID': 2120624} \n", + "\n", + " text bytesize \n", + "0 The National Domestic Violence Hotline (NDVH) ... 1460 \n", + "1 The Office of Planning, Research and Evaluatio... 3181 \n", + "2 Improving outcomes for low-income fathers and ... 1777 \n", + "3 This project is implementing 36-month follow-u... 1760 \n", + "4 The CCDF Policies Database is a source of info... 2157 \n", + "... ... ... \n", + "9995 Project: Research and produce a videotape that... 1241 \n", + "9996 While relapse prevention has been studied and ... 1281 \n", + "9997 The proposed study on recruitment, adherence a... 2867 \n", + "9998 Recent studies suggest that HIV epidemics are ... 2424 \n", + "9999 The overall goal of this study is to develop a... 1463 \n", + "\n", + "[10000 rows x 3 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
metatextbytesize
0{'APPLICATION_ID': 100065}The National Domestic Violence Hotline (NDVH) ...1460
1{'APPLICATION_ID': 100066}The Office of Planning, Research and Evaluatio...3181
2{'APPLICATION_ID': 100067}Improving outcomes for low-income fathers and ...1777
3{'APPLICATION_ID': 100068}This project is implementing 36-month follow-u...1760
4{'APPLICATION_ID': 100069}The CCDF Policies Database is a source of info...2157
............
9995{'APPLICATION_ID': 2120612}Project: Research and produce a videotape that...1241
9996{'APPLICATION_ID': 2120613}While relapse prevention has been studied and ...1281
9997{'APPLICATION_ID': 2120616}The proposed study on recruitment, adherence a...2867
9998{'APPLICATION_ID': 2120620}Recent studies suggest that HIV epidemics are ...2424
9999{'APPLICATION_ID': 2120624}The overall goal of this study is to develop a...1463
\n", + "

10000 rows × 3 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 5 + } + ], + "source": [ + "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", + "from pyrecdp.primitives.operations import *\n", + "\n", + "pipeline = TextPipeline()\n", + "ops = [\n", + " JsonlReader(\"/content/test_data/\"),\n", + " TextBytesize(text_key = 'text'),\n", + "]\n", + "pipeline.add_operations(ops)\n", + "ret = pipeline.execute()\n", + "ret.to_pandas()" + ] + }, + { + "cell_type": "markdown", + "source": [ + "### 3.2 Operation-based API" + ], + "metadata": { + "id": "WJJXs5Co8EsB" + }, + "id": "WJJXs5Co8EsB" + }, + { + "cell_type": "markdown", + "source": [ + "#### prepare Ray and Spark context" + ], + "metadata": { + "id": "K49OFih-8aUc" + }, + "id": "K49OFih-8aUc" + }, + { + "cell_type": "code", + "source": [ + "import psutil\n", + "import ray\n", + "from pyrecdp.core import SparkDataProcessor\n", + "from pyspark.sql import DataFrame\n", + "from pyrecdp.core.cache_utils import RECDP_MODELS_CACHE\n", + "\n", + "total_mem = int(psutil.virtual_memory().total * 0.5)\n", + "total_cores = psutil.cpu_count(logical=False)\n", + "\n", + "class RayContext:\n", + " def __init__(self, dataset_path):\n", + " self.dataset_path = dataset_path\n", + "\n", + " def __enter__(self):\n", + " if not ray.is_initialized():\n", + " try:\n", + " ray.init(object_store_memory=total_mem, num_cpus=total_cores)\n", + " except:\n", + " ray.init()\n", + "\n", + " reader = JsonlReader(self.dataset_path)\n", + " self.ds = reader.process_rayds(None)\n", + " return self\n", + "\n", + " def __exit__(self, exc_type, exc_value, exc_traceback):\n", + " if ray.is_initialized():\n", + " ray.shutdown()\n", + "\n", + " def show(self, ds):\n", + " pd = ds.to_pandas()\n", + " display(pd)\n", + "\n", + "class SparkContext:\n", + " def __init__(self, dataset_path):\n", + " self.dataset_path = dataset_path\n", + " self.rdp = SparkDataProcessor()\n", + "\n", + " def __enter__(self):\n", + " self.spark = self.rdp.spark\n", + " reader = JsonlReader(self.dataset_path)\n", + " self.ds = reader.process_spark(self.spark)\n", + " return self\n", + "\n", + " def __exit__(self, exc_type, exc_value, exc_traceback):\n", + " pass\n", + "\n", + " def show(self, ds):\n", + " pd = ds.toPandas()\n", + " display(pd)" + ], + "metadata": { + "id": "-F2f_JCo8I0R" + }, + "id": "-F2f_JCo8I0R", + "execution_count": 6, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "# Ray mode\n", + "\n", + "from pyrecdp.primitives.operations import *\n", + "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", + "\n", + "op = TextBytesize()\n", + "with RayContext(\"/content/test_data/\") as ctx:\n", + " ctx.show(op.process_rayds(ctx.ds))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 513, + "referenced_widgets": [ + "41fbe06aba494f75ba11aeaf3fd6fa94", + "2784ff8eb12c471eac0c335cc3169c5c", + "de524508eb0947749b3f13c6710f1dbb", + "dbe163714118476e98ec10efc2e6f1e1", + "1dc281fa098a40f6a07af047f0edd1a9", + "789f99f9724442d59f05be15b3231888", + "bc776eb0348c49348497687be7316166", + "05302bd682724596bf8a61dbca5ae2e4", + "81f6b801a20c4f5c9ab21fc0dbccbd5d", + "c96dd696d0a84e8485b705750be517d7", + "61d3c42680814b0a95ccfac427d5c553" + ] + }, + "id": "zjFGFuWm8uLW", + "outputId": "750ead08-4002-4102-a6c7-c90f1694a0d7" + }, + "id": "zjFGFuWm8uLW", + "execution_count": 7, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2023-10-11 18:16:49,727\tINFO read_api.py:406 -- To satisfy the requested parallelism of 20, each read task output is split into 20 smaller blocks.\n", + "2023-10-11 18:16:49,743\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[ReadText->SplitBlocks(20)] -> TaskPoolMapOperator[Map(convert_json)->Map()]\n", + "2023-10-11 18:16:49,748\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-10-11 18:16:49,752\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running 0: 0%| | 0/400 [00:00\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
metatextbytesize
0{'APPLICATION_ID': 100065}The National Domestic Violence Hotline (NDVH) ...1460
1{'APPLICATION_ID': 100066}The Office of Planning, Research and Evaluatio...3181
2{'APPLICATION_ID': 100067}Improving outcomes for low-income fathers and ...1777
3{'APPLICATION_ID': 100068}This project is implementing 36-month follow-u...1760
4{'APPLICATION_ID': 100069}The CCDF Policies Database is a source of info...2157
............
9995{'APPLICATION_ID': 2120612}Project: Research and produce a videotape that...1241
9996{'APPLICATION_ID': 2120613}While relapse prevention has been studied and ...1281
9997{'APPLICATION_ID': 2120616}The proposed study on recruitment, adherence a...2867
9998{'APPLICATION_ID': 2120620}Recent studies suggest that HIV epidemics are ...2424
9999{'APPLICATION_ID': 2120624}The overall goal of this study is to develop a...1463
\n", + "

10000 rows × 3 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + " \n" + ] + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "81NiajWFTy2n", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 458 + }, + "id": "81NiajWFTy2n", + "outputId": "db70e3fb-8033-4c08-b58b-b24c4e87aa42" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Will assign 1 cores and 10386 M memory for spark\n", + "per core memory size is 10.143 GB and shuffle_disk maximum capacity is 8589934592.000 GB\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " text \\\n", + "0 The National Domestic Violence Hotline (NDVH) ... \n", + "1 The Office of Planning, Research and Evaluatio... \n", + "2 Improving outcomes for low-income fathers and ... \n", + "3 This project is implementing 36-month follow-u... \n", + "4 The CCDF Policies Database is a source of info... \n", + "... ... \n", + "9995 Project: Research and produce a videotape that... \n", + "9996 While relapse prevention has been studied and ... \n", + "9997 The proposed study on recruitment, adherence a... \n", + "9998 Recent studies suggest that HIV epidemics are ... \n", + "9999 The overall goal of this study is to develop a... \n", + "\n", + " meta bytesize \n", + "0 {\"APPLICATION_ID\":100065} 1460 \n", + "1 {\"APPLICATION_ID\":100066} 3181 \n", + "2 {\"APPLICATION_ID\":100067} 1777 \n", + "3 {\"APPLICATION_ID\":100068} 1760 \n", + "4 {\"APPLICATION_ID\":100069} 2157 \n", + "... ... ... \n", + "9995 {\"APPLICATION_ID\":2120612} 1241 \n", + "9996 {\"APPLICATION_ID\":2120613} 1281 \n", + "9997 {\"APPLICATION_ID\":2120616} 2867 \n", + "9998 {\"APPLICATION_ID\":2120620} 2424 \n", + "9999 {\"APPLICATION_ID\":2120624} 1463 \n", + "\n", + "[10000 rows x 3 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
textmetabytesize
0The National Domestic Violence Hotline (NDVH) ...{\"APPLICATION_ID\":100065}1460
1The Office of Planning, Research and Evaluatio...{\"APPLICATION_ID\":100066}3181
2Improving outcomes for low-income fathers and ...{\"APPLICATION_ID\":100067}1777
3This project is implementing 36-month follow-u...{\"APPLICATION_ID\":100068}1760
4The CCDF Policies Database is a source of info...{\"APPLICATION_ID\":100069}2157
............
9995Project: Research and produce a videotape that...{\"APPLICATION_ID\":2120612}1241
9996While relapse prevention has been studied and ...{\"APPLICATION_ID\":2120613}1281
9997The proposed study on recruitment, adherence a...{\"APPLICATION_ID\":2120616}2867
9998Recent studies suggest that HIV epidemics are ...{\"APPLICATION_ID\":2120620}2424
9999The overall goal of this study is to develop a...{\"APPLICATION_ID\":2120624}1463
\n", + "

10000 rows × 3 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {} + } + ], + "source": [ + "# Spark mode\n", + "\n", + "from pyrecdp.primitives.operations import *\n", + "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", + "\n", + "op = TextBytesize()\n", + "with SparkContext(\"/content/test_data/\") as ctx:\n", + " ctx.show(op.process_spark(ctx.spark, ctx.ds))" + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "2f6ad7bbc0964d7696c7dec5d0e66f44": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_60dd954b33414adfabf772f49ea2f3a2", + "IPY_MODEL_93697baecfd442fa8d8db709cfc82eee", + "IPY_MODEL_77548643af8d430db70bfb0af3707f91" + ], + "layout": "IPY_MODEL_92f4fcc6115c4f809c15b942ca0d11d4" + } + }, + "60dd954b33414adfabf772f49ea2f3a2": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_90a32f5a48a74578bad33421c0e1599c", + "placeholder": "​", + "style": "IPY_MODEL_ec2613a4e1c04b2789a4ca8a257bda53", + "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 0.0 MiB/1.9 GiB object_store_memory: 100%" + } + }, + "93697baecfd442fa8d8db709cfc82eee": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f955ca8d9b9e451791a5aa53bb984a71", + "max": 400, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_0d52219723f944eb8b34e5aee50298be", + "value": 20 + } + }, + "77548643af8d430db70bfb0af3707f91": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_58951323a0804ad8ad9d68dd4292f35f", + "placeholder": "​", + "style": "IPY_MODEL_c9d153b598854d0686849b48f84aa01e", + "value": " 20/20 [00:16<00:00, 5.89it/s]" + } + }, + "92f4fcc6115c4f809c15b942ca0d11d4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "90a32f5a48a74578bad33421c0e1599c": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ec2613a4e1c04b2789a4ca8a257bda53": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f955ca8d9b9e451791a5aa53bb984a71": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0d52219723f944eb8b34e5aee50298be": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "58951323a0804ad8ad9d68dd4292f35f": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c9d153b598854d0686849b48f84aa01e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "41fbe06aba494f75ba11aeaf3fd6fa94": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_2784ff8eb12c471eac0c335cc3169c5c", + "IPY_MODEL_de524508eb0947749b3f13c6710f1dbb", + "IPY_MODEL_dbe163714118476e98ec10efc2e6f1e1" + ], + "layout": "IPY_MODEL_1dc281fa098a40f6a07af047f0edd1a9" + } + }, + "2784ff8eb12c471eac0c335cc3169c5c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_789f99f9724442d59f05be15b3231888", + "placeholder": "​", + "style": "IPY_MODEL_bc776eb0348c49348497687be7316166", + "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 1.08 MiB/1.9 GiB object_store_memory: 100%" + } + }, + "de524508eb0947749b3f13c6710f1dbb": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_05302bd682724596bf8a61dbca5ae2e4", + "max": 400, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_81f6b801a20c4f5c9ab21fc0dbccbd5d", + "value": 20 + } + }, + "dbe163714118476e98ec10efc2e6f1e1": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c96dd696d0a84e8485b705750be517d7", + "placeholder": "​", + "style": "IPY_MODEL_61d3c42680814b0a95ccfac427d5c553", + "value": " 20/20 [00:04<00:00, 7.92it/s]" + } + }, + "1dc281fa098a40f6a07af047f0edd1a9": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "789f99f9724442d59f05be15b3231888": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bc776eb0348c49348497687be7316166": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "05302bd682724596bf8a61dbca5ae2e4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "81f6b801a20c4f5c9ab21fc0dbccbd5d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "c96dd696d0a84e8485b705750be517d7": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "61d3c42680814b0a95ccfac427d5c553": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/RecDP/examples/notebooks/llmutils/repetition_remove.ipynb b/RecDP/examples/notebooks/llmutils/repetition_remove.ipynb new file mode 100644 index 000000000..936cb3659 --- /dev/null +++ b/RecDP/examples/notebooks/llmutils/repetition_remove.ipynb @@ -0,0 +1,2233 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "NUdnJWOJLGvF", + "metadata": { + "id": "NUdnJWOJLGvF" + }, + "source": [ + "# RecDP LLM - TextBytesize\n", + "\n", + "TextBytesize is a tool to get total byte size of text in the data.\n", + "\n", + "### We support two types of input and output:\n", + "\n", + "example 1:\n", + "* Expect Input format: a folder of *.jsonl.\n", + "* Expect Output format: a folder of *.jsonl after reduction." + ] + }, + { + "cell_type": "markdown", + "id": "C1FFwhr3MwA1", + "metadata": { + "id": "C1FFwhr3MwA1" + }, + "source": [ + "# Get started" + ] + }, + { + "cell_type": "markdown", + "id": "tMaSNIKIMz3T", + "metadata": { + "id": "tMaSNIKIMz3T" + }, + "source": [ + "## Install pyrecdp and dependencies" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ro4yOk5IMvRY", + "metadata": { + "id": "ro4yOk5IMvRY" + }, + "outputs": [], + "source": [ + "! DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-8-jre\n", + "! pip install pyrecdp --pre\n", + "# ! pip install 'git+https://github.com/intel/e2eAIOK.git#egg=pyrecdp&subdirectory=RecDP'" + ] + }, + { + "cell_type": "markdown", + "id": "pnHK2VTvM5rg", + "metadata": { + "id": "pnHK2VTvM5rg" + }, + "source": [ + "## 2. prepare your own data" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a", + "metadata": { + "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "d326b334-d005-42e1-ee4e-619d9c0b388b" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "/content/test_data\n", + "--2023-10-11 18:10:37-- https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/PILE/NIH_sample.jsonl\n", + "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...\n", + "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n", + "HTTP request sent, awaiting response... 200 OK\n", + "Length: 21626664 (21M) [text/plain]\n", + "Saving to: ‘/content/test_data/NIH_sample.jsonl’\n", + "\n", + "NIH_sample.jsonl 100%[===================>] 20.62M 114MB/s in 0.2s \n", + "\n", + "2023-10-11 18:10:38 (114 MB/s) - ‘/content/test_data/NIH_sample.jsonl’ saved [21626664/21626664]\n", + "\n" + ] + } + ], + "source": [ + "%mkdir -p /content/test_data\n", + "%cd /content/test_data\n", + "file_names = ['NIH_sample.jsonl']\n", + "file_list = [f\"https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/PILE/{i}\" for i in file_names]\n", + "!wget -P /content/test_data {\" \".join(file_list)}" + ] + }, + { + "cell_type": "markdown", + "id": "J-125gFtNyOg", + "metadata": { + "id": "J-125gFtNyOg" + }, + "source": [ + "## 3. get bytesize" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "vkGRn9uJN4B0", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vkGRn9uJN4B0", + "outputId": "fb931ee0-a81c-414e-aa6c-60b3db1ab4cd" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "NIH_sample.jsonl\n" + ] + } + ], + "source": [ + "! ls /content/test_data" + ] + }, + { + "cell_type": "markdown", + "source": [ + "### 3.1 PIPELINE based API" + ], + "metadata": { + "id": "HZIPEzB477Bm" + }, + "id": "HZIPEzB477Bm" + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "SMK9KcV4N7al", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 704, + "referenced_widgets": [ + "2f6ad7bbc0964d7696c7dec5d0e66f44", + "60dd954b33414adfabf772f49ea2f3a2", + "93697baecfd442fa8d8db709cfc82eee", + "77548643af8d430db70bfb0af3707f91", + "92f4fcc6115c4f809c15b942ca0d11d4", + "90a32f5a48a74578bad33421c0e1599c", + "ec2613a4e1c04b2789a4ca8a257bda53", + "f955ca8d9b9e451791a5aa53bb984a71", + "0d52219723f944eb8b34e5aee50298be", + "58951323a0804ad8ad9d68dd4292f35f", + "c9d153b598854d0686849b48f84aa01e" + ] + }, + "id": "SMK9KcV4N7al", + "outputId": "17b2f0cc-92f7-4ff5-bdb0-7d3fb338c305" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "JAVA_HOME is not set, use default value of /usr/lib/jvm/java-8-openjdk-amd64/\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.10/dist-packages/pyspark/pandas/__init__.py:50: UserWarning: 'PYARROW_IGNORE_TIMEZONE' environment variable was not set. It is required to set this environment variable to '1' in both driver and executor sides if you use pyarrow>=2.0.0. pandas-on-Spark will set it for you but it does not work if there is a Spark context already launched.\n", + " warnings.warn(\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "\t\t\t\n", + "\t\t" + ] + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "init ray\n", + "init ray with total mem of 8167961395, total core of 1\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2023-10-11 18:11:28,068\tWARNING services.py:1889 -- WARNING: The object store is using /tmp instead of /dev/shm because /dev/shm has only 6133121024 bytes available. This will harm performance! You may be able to free up space by deleting files in /dev/shm. If you are inside a Docker container, you can increase /dev/shm size by passing '--shm-size=8.37gb' to 'docker run' (or add it to the run_options list in a Ray cluster config). Make sure to set this to more than 30% of available RAM.\n", + "2023-10-11 18:11:29,354\tINFO worker.py:1642 -- Started a local Ray instance.\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "execute with ray started ...\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2023-10-11 18:11:34,510\tINFO read_api.py:406 -- To satisfy the requested parallelism of 20, each read task output is split into 20 smaller blocks.\n", + "2023-10-11 18:11:34,568\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[ReadText->SplitBlocks(20)] -> TaskPoolMapOperator[Map(convert_json)->Map()]\n", + "2023-10-11 18:11:34,576\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-10-11 18:11:34,582\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running 0: 0%| | 0/400 [00:00Map() pid=1685)\u001b[0m 2023-10-11 18:11:46.345224: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n", + "2023-10-11 18:11:50,723\tWARNING plan.py:567 -- Warning: The Ray cluster currently does not have any available CPUs. The Dataset job will hang unless more CPUs are freed up. A common reason is that cluster resources are used by Actors or Tune trials; see the following link for more details: https://docs.ray.io/en/master/data/dataset-internals.html#datasets-and-tune\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "execute with ray took 17.940069602999984 sec\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " meta \\\n", + "0 {'APPLICATION_ID': 100065} \n", + "1 {'APPLICATION_ID': 100066} \n", + "2 {'APPLICATION_ID': 100067} \n", + "3 {'APPLICATION_ID': 100068} \n", + "4 {'APPLICATION_ID': 100069} \n", + "... ... \n", + "9995 {'APPLICATION_ID': 2120612} \n", + "9996 {'APPLICATION_ID': 2120613} \n", + "9997 {'APPLICATION_ID': 2120616} \n", + "9998 {'APPLICATION_ID': 2120620} \n", + "9999 {'APPLICATION_ID': 2120624} \n", + "\n", + " text bytesize \n", + "0 The National Domestic Violence Hotline (NDVH) ... 1460 \n", + "1 The Office of Planning, Research and Evaluatio... 3181 \n", + "2 Improving outcomes for low-income fathers and ... 1777 \n", + "3 This project is implementing 36-month follow-u... 1760 \n", + "4 The CCDF Policies Database is a source of info... 2157 \n", + "... ... ... \n", + "9995 Project: Research and produce a videotape that... 1241 \n", + "9996 While relapse prevention has been studied and ... 1281 \n", + "9997 The proposed study on recruitment, adherence a... 2867 \n", + "9998 Recent studies suggest that HIV epidemics are ... 2424 \n", + "9999 The overall goal of this study is to develop a... 1463 \n", + "\n", + "[10000 rows x 3 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
metatextbytesize
0{'APPLICATION_ID': 100065}The National Domestic Violence Hotline (NDVH) ...1460
1{'APPLICATION_ID': 100066}The Office of Planning, Research and Evaluatio...3181
2{'APPLICATION_ID': 100067}Improving outcomes for low-income fathers and ...1777
3{'APPLICATION_ID': 100068}This project is implementing 36-month follow-u...1760
4{'APPLICATION_ID': 100069}The CCDF Policies Database is a source of info...2157
............
9995{'APPLICATION_ID': 2120612}Project: Research and produce a videotape that...1241
9996{'APPLICATION_ID': 2120613}While relapse prevention has been studied and ...1281
9997{'APPLICATION_ID': 2120616}The proposed study on recruitment, adherence a...2867
9998{'APPLICATION_ID': 2120620}Recent studies suggest that HIV epidemics are ...2424
9999{'APPLICATION_ID': 2120624}The overall goal of this study is to develop a...1463
\n", + "

10000 rows × 3 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {}, + "execution_count": 5 + } + ], + "source": [ + "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", + "from pyrecdp.primitives.operations import *\n", + "\n", + "pipeline = TextPipeline()\n", + "ops = [\n", + " JsonlReader(\"/content/test_data/\"),\n", + " TextBytesize(text_key = 'text'),\n", + "]\n", + "pipeline.add_operations(ops)\n", + "ret = pipeline.execute()\n", + "ret.to_pandas()" + ] + }, + { + "cell_type": "markdown", + "source": [ + "### 3.2 Operation-based API" + ], + "metadata": { + "id": "WJJXs5Co8EsB" + }, + "id": "WJJXs5Co8EsB" + }, + { + "cell_type": "markdown", + "source": [ + "#### prepare Ray and Spark context" + ], + "metadata": { + "id": "K49OFih-8aUc" + }, + "id": "K49OFih-8aUc" + }, + { + "cell_type": "code", + "source": [ + "import psutil\n", + "import ray\n", + "from pyrecdp.core import SparkDataProcessor\n", + "from pyspark.sql import DataFrame\n", + "from pyrecdp.core.cache_utils import RECDP_MODELS_CACHE\n", + "\n", + "total_mem = int(psutil.virtual_memory().total * 0.5)\n", + "total_cores = psutil.cpu_count(logical=False)\n", + "\n", + "class RayContext:\n", + " def __init__(self, dataset_path):\n", + " self.dataset_path = dataset_path\n", + "\n", + " def __enter__(self):\n", + " if not ray.is_initialized():\n", + " try:\n", + " ray.init(object_store_memory=total_mem, num_cpus=total_cores)\n", + " except:\n", + " ray.init()\n", + "\n", + " reader = JsonlReader(self.dataset_path)\n", + " self.ds = reader.process_rayds(None)\n", + " return self\n", + "\n", + " def __exit__(self, exc_type, exc_value, exc_traceback):\n", + " if ray.is_initialized():\n", + " ray.shutdown()\n", + "\n", + " def show(self, ds):\n", + " pd = ds.to_pandas()\n", + " display(pd)\n", + "\n", + "class SparkContext:\n", + " def __init__(self, dataset_path):\n", + " self.dataset_path = dataset_path\n", + " self.rdp = SparkDataProcessor()\n", + "\n", + " def __enter__(self):\n", + " self.spark = self.rdp.spark\n", + " reader = JsonlReader(self.dataset_path)\n", + " self.ds = reader.process_spark(self.spark)\n", + " return self\n", + "\n", + " def __exit__(self, exc_type, exc_value, exc_traceback):\n", + " pass\n", + "\n", + " def show(self, ds):\n", + " pd = ds.toPandas()\n", + " display(pd)" + ], + "metadata": { + "id": "-F2f_JCo8I0R" + }, + "id": "-F2f_JCo8I0R", + "execution_count": 6, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "# Ray mode\n", + "\n", + "from pyrecdp.primitives.operations import *\n", + "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", + "\n", + "op = TextBytesize()\n", + "with RayContext(\"/content/test_data/\") as ctx:\n", + " ctx.show(op.process_rayds(ctx.ds))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 513, + "referenced_widgets": [ + "41fbe06aba494f75ba11aeaf3fd6fa94", + "2784ff8eb12c471eac0c335cc3169c5c", + "de524508eb0947749b3f13c6710f1dbb", + "dbe163714118476e98ec10efc2e6f1e1", + "1dc281fa098a40f6a07af047f0edd1a9", + "789f99f9724442d59f05be15b3231888", + "bc776eb0348c49348497687be7316166", + "05302bd682724596bf8a61dbca5ae2e4", + "81f6b801a20c4f5c9ab21fc0dbccbd5d", + "c96dd696d0a84e8485b705750be517d7", + "61d3c42680814b0a95ccfac427d5c553" + ] + }, + "id": "zjFGFuWm8uLW", + "outputId": "750ead08-4002-4102-a6c7-c90f1694a0d7" + }, + "id": "zjFGFuWm8uLW", + "execution_count": 7, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "2023-10-11 18:16:49,727\tINFO read_api.py:406 -- To satisfy the requested parallelism of 20, each read task output is split into 20 smaller blocks.\n", + "2023-10-11 18:16:49,743\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[ReadText->SplitBlocks(20)] -> TaskPoolMapOperator[Map(convert_json)->Map()]\n", + "2023-10-11 18:16:49,748\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-10-11 18:16:49,752\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running 0: 0%| | 0/400 [00:00\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
metatextbytesize
0{'APPLICATION_ID': 100065}The National Domestic Violence Hotline (NDVH) ...1460
1{'APPLICATION_ID': 100066}The Office of Planning, Research and Evaluatio...3181
2{'APPLICATION_ID': 100067}Improving outcomes for low-income fathers and ...1777
3{'APPLICATION_ID': 100068}This project is implementing 36-month follow-u...1760
4{'APPLICATION_ID': 100069}The CCDF Policies Database is a source of info...2157
............
9995{'APPLICATION_ID': 2120612}Project: Research and produce a videotape that...1241
9996{'APPLICATION_ID': 2120613}While relapse prevention has been studied and ...1281
9997{'APPLICATION_ID': 2120616}The proposed study on recruitment, adherence a...2867
9998{'APPLICATION_ID': 2120620}Recent studies suggest that HIV epidemics are ...2424
9999{'APPLICATION_ID': 2120624}The overall goal of this study is to develop a...1463
\n", + "

10000 rows × 3 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + " \n" + ] + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "81NiajWFTy2n", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 458 + }, + "id": "81NiajWFTy2n", + "outputId": "db70e3fb-8033-4c08-b58b-b24c4e87aa42" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Will assign 1 cores and 10386 M memory for spark\n", + "per core memory size is 10.143 GB and shuffle_disk maximum capacity is 8589934592.000 GB\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + " text \\\n", + "0 The National Domestic Violence Hotline (NDVH) ... \n", + "1 The Office of Planning, Research and Evaluatio... \n", + "2 Improving outcomes for low-income fathers and ... \n", + "3 This project is implementing 36-month follow-u... \n", + "4 The CCDF Policies Database is a source of info... \n", + "... ... \n", + "9995 Project: Research and produce a videotape that... \n", + "9996 While relapse prevention has been studied and ... \n", + "9997 The proposed study on recruitment, adherence a... \n", + "9998 Recent studies suggest that HIV epidemics are ... \n", + "9999 The overall goal of this study is to develop a... \n", + "\n", + " meta bytesize \n", + "0 {\"APPLICATION_ID\":100065} 1460 \n", + "1 {\"APPLICATION_ID\":100066} 3181 \n", + "2 {\"APPLICATION_ID\":100067} 1777 \n", + "3 {\"APPLICATION_ID\":100068} 1760 \n", + "4 {\"APPLICATION_ID\":100069} 2157 \n", + "... ... ... \n", + "9995 {\"APPLICATION_ID\":2120612} 1241 \n", + "9996 {\"APPLICATION_ID\":2120613} 1281 \n", + "9997 {\"APPLICATION_ID\":2120616} 2867 \n", + "9998 {\"APPLICATION_ID\":2120620} 2424 \n", + "9999 {\"APPLICATION_ID\":2120624} 1463 \n", + "\n", + "[10000 rows x 3 columns]" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
textmetabytesize
0The National Domestic Violence Hotline (NDVH) ...{\"APPLICATION_ID\":100065}1460
1The Office of Planning, Research and Evaluatio...{\"APPLICATION_ID\":100066}3181
2Improving outcomes for low-income fathers and ...{\"APPLICATION_ID\":100067}1777
3This project is implementing 36-month follow-u...{\"APPLICATION_ID\":100068}1760
4The CCDF Policies Database is a source of info...{\"APPLICATION_ID\":100069}2157
............
9995Project: Research and produce a videotape that...{\"APPLICATION_ID\":2120612}1241
9996While relapse prevention has been studied and ...{\"APPLICATION_ID\":2120613}1281
9997The proposed study on recruitment, adherence a...{\"APPLICATION_ID\":2120616}2867
9998Recent studies suggest that HIV epidemics are ...{\"APPLICATION_ID\":2120620}2424
9999The overall goal of this study is to develop a...{\"APPLICATION_ID\":2120624}1463
\n", + "

10000 rows × 3 columns

\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n" + ] + }, + "metadata": {} + } + ], + "source": [ + "# Spark mode\n", + "\n", + "from pyrecdp.primitives.operations import *\n", + "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", + "\n", + "op = TextBytesize()\n", + "with SparkContext(\"/content/test_data/\") as ctx:\n", + " ctx.show(op.process_spark(ctx.spark, ctx.ds))" + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "2f6ad7bbc0964d7696c7dec5d0e66f44": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_60dd954b33414adfabf772f49ea2f3a2", + "IPY_MODEL_93697baecfd442fa8d8db709cfc82eee", + "IPY_MODEL_77548643af8d430db70bfb0af3707f91" + ], + "layout": "IPY_MODEL_92f4fcc6115c4f809c15b942ca0d11d4" + } + }, + "60dd954b33414adfabf772f49ea2f3a2": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_90a32f5a48a74578bad33421c0e1599c", + "placeholder": "​", + "style": "IPY_MODEL_ec2613a4e1c04b2789a4ca8a257bda53", + "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 0.0 MiB/1.9 GiB object_store_memory: 100%" + } + }, + "93697baecfd442fa8d8db709cfc82eee": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_f955ca8d9b9e451791a5aa53bb984a71", + "max": 400, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_0d52219723f944eb8b34e5aee50298be", + "value": 20 + } + }, + "77548643af8d430db70bfb0af3707f91": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_58951323a0804ad8ad9d68dd4292f35f", + "placeholder": "​", + "style": "IPY_MODEL_c9d153b598854d0686849b48f84aa01e", + "value": " 20/20 [00:16<00:00, 5.89it/s]" + } + }, + "92f4fcc6115c4f809c15b942ca0d11d4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "90a32f5a48a74578bad33421c0e1599c": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ec2613a4e1c04b2789a4ca8a257bda53": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f955ca8d9b9e451791a5aa53bb984a71": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "0d52219723f944eb8b34e5aee50298be": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "58951323a0804ad8ad9d68dd4292f35f": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "c9d153b598854d0686849b48f84aa01e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "41fbe06aba494f75ba11aeaf3fd6fa94": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_2784ff8eb12c471eac0c335cc3169c5c", + "IPY_MODEL_de524508eb0947749b3f13c6710f1dbb", + "IPY_MODEL_dbe163714118476e98ec10efc2e6f1e1" + ], + "layout": "IPY_MODEL_1dc281fa098a40f6a07af047f0edd1a9" + } + }, + "2784ff8eb12c471eac0c335cc3169c5c": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_789f99f9724442d59f05be15b3231888", + "placeholder": "​", + "style": "IPY_MODEL_bc776eb0348c49348497687be7316166", + "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 1.08 MiB/1.9 GiB object_store_memory: 100%" + } + }, + "de524508eb0947749b3f13c6710f1dbb": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_05302bd682724596bf8a61dbca5ae2e4", + "max": 400, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_81f6b801a20c4f5c9ab21fc0dbccbd5d", + "value": 20 + } + }, + "dbe163714118476e98ec10efc2e6f1e1": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_c96dd696d0a84e8485b705750be517d7", + "placeholder": "​", + "style": "IPY_MODEL_61d3c42680814b0a95ccfac427d5c553", + "value": " 20/20 [00:04<00:00, 7.92it/s]" + } + }, + "1dc281fa098a40f6a07af047f0edd1a9": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "789f99f9724442d59f05be15b3231888": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "bc776eb0348c49348497687be7316166": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "05302bd682724596bf8a61dbca5ae2e4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "81f6b801a20c4f5c9ab21fc0dbccbd5d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "c96dd696d0a84e8485b705750be517d7": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "61d3c42680814b0a95ccfac427d5c553": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + } + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/RecDP/pyrecdp/LLM/README.md b/RecDP/pyrecdp/LLM/README.md index b26219f0d..bf1f22dc4 100644 --- a/RecDP/pyrecdp/LLM/README.md +++ b/RecDP/pyrecdp/LLM/README.md @@ -9,14 +9,17 @@ RecDP LLM is a set of python components that enables quick and easy establish of | Type | notebook | Description | supports | Verified dataset & size | | -------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | ---------------------------------------------------- | ------------------------------------- | -| [ Filter ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_filter.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/filter.ipynb) | Filter out document based on condition | profanity-based, black-list, url_based, length_based | RedPajama - 2 TB | +| [ Filter ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/filter.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/filter.ipynb) | Filter out document based on condition | profanity-based, black-list, url_based, length_based | RedPajama - 2 TB | | [ Text Bytesize ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_bytesize.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/bytesize.ipynb) | Get text bytes size | | RedPajama - 2 TB | | [ Text Fixer ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_fixer.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/text_fixer.ipynb) | Clean repeated format in html, latex, codes | html, latex, codes | RefinedWeb - 1.7 TB | | [ Language Identify ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_language_identify.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/language_identify.ipynb) | Inentify major language type of document | en, zh, fr, de, .. total 25 langs | RedPajama - 2 TB | | [ Fuzzy Deduplicator ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_deduplication.py#L99) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/fuzzy_deduplication.ipynb) | Detect and reduce duplication based on document context | minHashLSH | PILE - 200 GB | | [ Global Decuplicator ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_deduplication.py#L194) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/decontamination.ipynb) | Detect and reduce duplication based on exact same content | sha256-hash | RefinedWeb - 1.7 TB, RedPajama - 2 TB | +| [ Repetition Removal ](#) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/repetition_remove.ipynb) | Detect and reduce repetition context in same document | | RefinedWeb - 1.7 TB, RedPajama - 2 TB | | [ Document splitter ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_split.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/document_split.ipynb) | Split Document into multiple sub documents | chapter_based, length_based | RefinedWeb - 1.7 TB | | [ PII Removal ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_pii_remove.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/pii_removal.ipynb) | Detect and replace personal infomation in document | email, phone, ip, username, password | RefinedWeb - 1.7 TB | +| [ User Defined Transform ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_custom.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/custom_map.ipynb) | Easy way to plugin user defined map function | parallel with ray or spark | RefinedWeb - 1.7 TB | +| [ User Defined Filter ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_custom.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/custom_filter.ipynb) | Easy way to plugin user defined filter function | parallel with ray or spark | RefinedWeb - 1.7 TB | | [ Reader ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_reader.py#L16) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/reader.ipynb) | Read data from directory | jsonl, parquet, | RefinedWeb - 1.7 TB | | [ Converter ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_converter.py) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/convert.ipynb) | Read and convert unstructed data to unified format | html, document, image, pdf, ... | RefinedWeb - 1.7 TB | | [ Writer ](https://github.com/intel/e2eAIOK/blob/main/RecDP/pyrecdp/primitives/operations/text_writer.py#L7) | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/writer.ipynb) | write data to directory | jsonl, parquet | RefinedWeb - 1.7 TB | @@ -29,7 +32,7 @@ RecDP LLM is a set of python components that enables quick and easy establish of | :-------- | :---------- | :------------| | Visualize the diversity distribution of data | Leverage GPT-3 to scoring | Visualize Toxicity probability | | ![diversity](/RecDP/resources/diversity_analysis.png) | ![quality](/RecDP/resources/quality_scoring.png) | ![toxicity](/RecDP/resources/toxicity_analysis.png)| -| [learn more](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/text_quality_assessment.ipynb) | [learn more](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/data_diversity_control.ipynb) | [learn more](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/toxicity_bias_control.ipynb) | +| [learn more](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/data_diversity_control.ipynb) | [learn more](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/text_quality_assessment.ipynb) | [learn more](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/toxicity_bias_control.ipynb) | # Getting Start @@ -43,10 +46,6 @@ pip install pyrecdp --pre ## * run with pipeline [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/intel/e2eAIOK/blob/main/RecDP/examples/notebooks/llmutils/resumable_pipeline.ipynb) ``` -from pyrecdp.primitives.operations import * -from pyrecdp.LLM import TextPipeline -from IPython.display import display - from pyrecdp.primitives.operations import * from pyrecdp.LLM import ResumableTextPipeline @@ -68,7 +67,7 @@ pipeline.export_to_yaml("custom_llm_data_pipeline.yaml") or ``` from pyrecdp.LLM import ResumableTextPipeline -pipeline = TextPipeline("custom_llm_data_pipeline.yaml") +pipeline = ResumableTextPipeline("custom_llm_data_pipeline.yaml") ret = pipeline.execute() ``` diff --git a/RecDP/pyrecdp/LLM/TextPipeline.py b/RecDP/pyrecdp/LLM/TextPipeline.py index ecaf3dc9a..d38bbbc29 100644 --- a/RecDP/pyrecdp/LLM/TextPipeline.py +++ b/RecDP/pyrecdp/LLM/TextPipeline.py @@ -2,7 +2,7 @@ from pyrecdp.core.pipeline import BasePipeline from pyrecdp.primitives.operations import Operation, BaseOperation from pyrecdp.primitives.operations.text_reader import DatasetReader, PerfileReader -from pyrecdp.primitives.operations.text_writer import PerfileParquetWriter +from pyrecdp.primitives.operations.text_writer import PerfileParquetWriter, PerfileJsonlWriter import logging from pyrecdp.core.utils import Timer, deepcopy from IPython.display import display @@ -111,7 +111,7 @@ def execute(self, ds=None): # fetch result return ds - def add_operation(self, config): + def add_operation(self, config, function_type = 'map', text_key = 'text'): # get current max operator id max_idx = self.pipeline.get_max_idx() cur_idx = max_idx + 1 @@ -139,10 +139,17 @@ def add_operation(self, config): # ====== Start to add it to pipeline ====== # if isinstance(inline_function, types.FunctionType): config = { - "func_name": inline_function, + "func": inline_function, + "text_key": text_key } - self.pipeline[cur_idx] = Operation( - cur_idx, children, output=None, op="ray_python", config=config) + if function_type == 'map': + self.pipeline[cur_idx] = Operation( + cur_idx, children, output=None, op="TextCustomerMap", config=config) + elif function_type == 'filter': + self.pipeline[cur_idx] = Operation( + cur_idx, children, output=None, op="TextCustomerFilter", config=config) + else: + raise NotImplementedError(f"{function_type} is not supported as customer function yet") elif isinstance(inline_function, BaseOperation): op_name = inline_function.op.op # config = vars(inline_function) @@ -201,6 +208,9 @@ def execute(self): if op.op in ['ParquetWriter', 'PerfileParquetWriter']: op.op = 'PerfileParquetWriter' output_dir = op.config['output_dir'] + if op.op in ['JsonlWriter', 'PerfileJsonlWriter']: + op.op = 'PerfileJsonlWriter' + output_dir = op.config['output_dir'] if output_dir == "": output_dir = f"ResumableTextPipeline_output_{time.strftime('%Y%m%d%H%M%S')}" self.add_operation(PerfileParquetWriter(output_dir=output_dir)) @@ -227,50 +237,87 @@ def execute(self): executable_sequence = self.executable_sequence engine_name = self.check_platform(executable_sequence) - - if engine_name != 'ray': - raise NotImplementedError("ResumableTextPipeline only support operations with ray mode") self.engine_name = engine_name - if not ray.is_initialized(): - print(f"init ray with total mem of {total_mem}") - try: - ray.init(object_store_memory=total_mem, num_cpus=total_cores) - except: - ray.init() - # explode one pipeline to multiple sub pipeline (per file) sub_pipelines = [] op_chain = [] - for op in executable_sequence: - if isinstance(op, PerfileReader): - op.execute_ray(executable_pipeline) - sub_pipelines = op.cache - elif len(sub_pipelines) > 0: - op_chain.append(op) - - for ds_reader, source_id in (pbar := tqdm(sub_pipelines, total=len(sub_pipelines))): - # check if we should skip - if source_id in done_files: - print(f"skip {source_id}, it was processed in last round") - del ds_reader - continue - - # If not skip, then - pbar.set_description(f"ResumableTextPipeline, current on {source_id}") - start = time.time() - for idx, op in enumerate(op_chain): - op.statistics_flag = self.statistics_flag - if idx == 0: - op.execute_ray(executable_pipeline, ds_reader) - elif isinstance(op, PerfileParquetWriter): - op.execute_ray(executable_pipeline, source_id) - else: + + if engine_name == 'ray': + if not ray.is_initialized(): + print(f"init ray with total mem of {total_mem}") + try: + ray.init(object_store_memory=total_mem, num_cpus=total_cores) + except: + ray.init() + + for op in executable_sequence: + if isinstance(op, PerfileReader): op.execute_ray(executable_pipeline) - elapse = time.time() - start - status_tracker.write(f"{source_id}, {elapse} secs\n") - status_tracker.flush() - done_files.append(status_tracker) - del ds_reader + sub_pipelines = op.cache + elif len(sub_pipelines) > 0: + op_chain.append(op) + + for ds_reader, source_id in (pbar := tqdm(sub_pipelines, total=len(sub_pipelines))): + # check if we should skip + if source_id in done_files: + print(f"skip {source_id}, it was processed in last round") + del ds_reader + continue + + # If not skip, then + pbar.set_description(f"ResumableTextPipeline, current on {source_id}") + start = time.time() + for idx, op in enumerate(op_chain): + op.statistics_flag = self.statistics_flag + if idx == 0: + op.execute_ray(executable_pipeline, ds_reader) + elif isinstance(op, PerfileParquetWriter) or isinstance(op, PerfileJsonlWriter): + op.execute_ray(executable_pipeline, source_id) + else: + op.execute_ray(executable_pipeline) + elapse = time.time() - start + status_tracker.write(f"{source_id}, {elapse} secs\n") + status_tracker.flush() + done_files.append(status_tracker) + del ds_reader + elif engine_name == 'spark': + if not hasattr(self, 'rdp') or self.rdp is None: + self.rdp = SparkDataProcessor() + + for op in executable_sequence: + if isinstance(op, PerfileReader): + op.execute_spark(executable_pipeline, rdp = self.rdp) + sub_pipelines = op.cache + elif len(sub_pipelines) > 0: + op_chain.append(op) + + # execute + for ds_reader, source_id in (pbar := tqdm(sub_pipelines, total=len(sub_pipelines))): + # check if we should skip + if source_id in done_files: + print(f"skip {source_id}, it was processed in last round") + del ds_reader + continue + + # If not skip, then + pbar.set_description(f"ResumableTextPipeline, current on {source_id}") + start = time.time() + for idx, op in enumerate(op_chain): + op.statistics_flag = self.statistics_flag + if idx == 0: + op.execute_spark(executable_pipeline, rdp = self.rdp, child_ds = ds_reader) + elif isinstance(op, PerfileParquetWriter) or isinstance(op, PerfileJsonlWriter): + op.execute_spark(executable_pipeline, source_id = source_id) + else: + op.execute_spark(executable_pipeline, rdp = self.rdp) + elapse = time.time() - start + status_tracker.write(f"{source_id}, {elapse} secs\n") + status_tracker.flush() + done_files.append(status_tracker) + del ds_reader + else: + raise NotImplementedError(f"ResumableTextPipeline is not support {engine_name} yet") + if self.statistics_flag: for op in op_chain: logger.info(f"{op.__class__.__name__}: {op.summarize()}") diff --git a/RecDP/pyrecdp/core/pipeline.py b/RecDP/pyrecdp/core/pipeline.py index c79b03932..770a0e819 100644 --- a/RecDP/pyrecdp/core/pipeline.py +++ b/RecDP/pyrecdp/core/pipeline.py @@ -19,7 +19,9 @@ def __repr__(self): return repr(self.pipeline) def export(self, file_path = None): - json_object = self.pipeline.json_dump() + import copy + pipeline_deepcopy = copy.deepcopy(self.pipeline) + json_object = pipeline_deepcopy.json_dump() if file_path: # Writing to sample.json with open(file_path, "w") as outfile: diff --git a/RecDP/pyrecdp/primitives/operations/__init__.py b/RecDP/pyrecdp/primitives/operations/__init__.py index 55600f917..e3a91df65 100644 --- a/RecDP/pyrecdp/primitives/operations/__init__.py +++ b/RecDP/pyrecdp/primitives/operations/__init__.py @@ -14,3 +14,4 @@ from .text_deduplication import FuzzyDeduplicate, GlobalDeduplicate from .text_qualityscorer import TextQualityScorer from .text_diversityindicate import TextDiversityIndicate +from .text_custom import TextCustomerMap, TextCustomerFilter diff --git a/RecDP/pyrecdp/primitives/operations/base.py b/RecDP/pyrecdp/primitives/operations/base.py index d9379428c..6ba41fbf5 100644 --- a/RecDP/pyrecdp/primitives/operations/base.py +++ b/RecDP/pyrecdp/primitives/operations/base.py @@ -203,12 +203,15 @@ def execute_ray(self, pipeline, child_ds=None): self.cache = self.process_rayds(*child_output) return self.cache - def execute_spark(self, pipeline, rdp): + def execute_spark(self, pipeline, rdp, child_ds=None): child_output = [] - children = self.op.children if self.op.children is not None else [] - for op in children: - child_output.append(pipeline[op].cache) - self.cache = self.process_spark(rdp.spark, *child_output) + if child_ds is not None: + self.cache = self.process_spark(rdp.spark, child_ds) + else: + children = self.op.children if self.op.children is not None else [] + for op in children: + child_output.append(pipeline[op].cache) + self.cache = self.process_spark(rdp.spark, *child_output) return self.cache def process_rayds(self, ds=None): diff --git a/RecDP/pyrecdp/primitives/operations/filter/badwords_filter.py b/RecDP/pyrecdp/primitives/operations/filter/badwords_filter.py index 027261ce4..c3b358edc 100644 --- a/RecDP/pyrecdp/primitives/operations/filter/badwords_filter.py +++ b/RecDP/pyrecdp/primitives/operations/filter/badwords_filter.py @@ -32,7 +32,7 @@ def __init__(self, language='en'): def compute(self, text) -> bool: func = prepare_func_filter_by_badwords(self.language) - func(text) + return func(text) LLMOPERATORS.register(BadwordsFilter) diff --git a/RecDP/pyrecdp/primitives/operations/filter/base.py b/RecDP/pyrecdp/primitives/operations/filter/base.py index 686d3b7c6..9ecdd0d24 100644 --- a/RecDP/pyrecdp/primitives/operations/filter/base.py +++ b/RecDP/pyrecdp/primitives/operations/filter/base.py @@ -25,7 +25,6 @@ def process_rayds(self, ds: Dataset) -> Dataset: @statistics_decorator def process_spark(self, spark, spark_df: DataFrame) -> DataFrame: if self.inplace: - import pyspark.sql.types as T compute_udf = F.udf(self.compute, T.BooleanType()) return spark_df.filter(compute_udf(F.col(self.text_key))) diff --git a/RecDP/pyrecdp/primitives/operations/text_custom.py b/RecDP/pyrecdp/primitives/operations/text_custom.py new file mode 100644 index 000000000..c1a6fe92b --- /dev/null +++ b/RecDP/pyrecdp/primitives/operations/text_custom.py @@ -0,0 +1,58 @@ +from .base import BaseLLMOperation, LLMOPERATORS, statistics_decorator +from ray.data import Dataset +from pyspark.sql import DataFrame +from .filter import BaseFilter + +def text_bytesize(s): + return len(s.encode('utf-8')) + +class TextCustomerMap(BaseLLMOperation): + def __init__(self, func, text_key = 'text'): + settings = {'func': func, 'text_key': text_key} + super().__init__(settings) + self.support_spark = True + self.support_ray = True + self.func = func + self.text_key = text_key + self.new_key = f"{func.__name__}_text" + + def process_rayds(self, ds: Dataset) -> Dataset: + return ds.map(lambda x: self.process_row(x, self.text_key, self.new_key, self.func)) + + def process_spark(self, spark, spark_df: DataFrame) -> DataFrame: + import pyspark.sql.functions as F + from pyspark.sql import types as T + custom_udf = F.udf(self.func) + return spark_df.withColumn(self.new_key, custom_udf(F.col(self.text_key))) + +LLMOPERATORS.register(TextCustomerMap) + +class TextCustomerFilter(BaseFilter): + def __init__(self, func, text_key = 'text'): + settings = {'func': func, 'text_key': text_key} + super().__init__(settings) + self.support_spark = True + self.support_ray = True + self.func = func + self.text_key = text_key + + @statistics_decorator + def process_rayds(self, ds: Dataset) -> Dataset: + if self.inplace: + # remove unwanted text row inplace + filtered_ds = ds.filter(lambda x: self.func(x[self.text_key])) + return filtered_ds + else: + raise NotImplementedError(f"We only support inplace modification for {self.__class__.__name__}.") + + @statistics_decorator + def process_spark(self, spark, spark_df: DataFrame) -> DataFrame: + import pyspark.sql.functions as F + from pyspark.sql import types as T + if self.inplace: + compute_udf = F.udf(self.func, T.BooleanType()) + return spark_df.filter(compute_udf(F.col(self.text_key))) + else: + raise NotImplementedError(f"We only support inplace modification for {self.__class__.__name__}.") + +LLMOPERATORS.register(TextCustomerFilter) \ No newline at end of file diff --git a/RecDP/pyrecdp/primitives/operations/text_qualityscorer.py b/RecDP/pyrecdp/primitives/operations/text_qualityscorer.py index 71c42bbd7..b1ce85a74 100644 --- a/RecDP/pyrecdp/primitives/operations/text_qualityscorer.py +++ b/RecDP/pyrecdp/primitives/operations/text_qualityscorer.py @@ -290,7 +290,6 @@ def __init__(self, text_key = 'text', model='gpt3'): def process_rayds(self, ds: Dataset) -> Dataset: raise NotImplementedError("Not implemented yet") - return ds.map(lambda x: self.process_row(x, self.text_key, new_name, text_bytesize)) def process_spark(self, spark, spark_df: DataFrame) -> DataFrame: import pyspark.sql.functions as F diff --git a/RecDP/pyrecdp/primitives/operations/text_reader.py b/RecDP/pyrecdp/primitives/operations/text_reader.py index 678c237a6..8b1b3aab4 100644 --- a/RecDP/pyrecdp/primitives/operations/text_reader.py +++ b/RecDP/pyrecdp/primitives/operations/text_reader.py @@ -160,9 +160,10 @@ class PerfileReader: class PerfileSourcedJsonlReader(SourcedReader, PerfileReader): def __init__(self, input_dir = "", source_prefix = ""): super().__init__(input_dir = input_dir, source_prefix = source_prefix) - self.support_spark = False + self.support_spark = True + self.support_ray = True - def process_rayds(self, ds) -> Dataset: + def process_rayds(self, ds): import ray.data as rd files_with_subtask, input_dir = self.get_files_with_subtask("jsonl") @@ -182,12 +183,32 @@ def convert_json(s, source_str): ds = rd.read_text(file_path).map(lambda x: convert_json(x, source_id)) self.cache.append((ds, source_id)) return self.cache + + def process_spark(self, spark, spark_df: DataFrame = None): + files_with_subtask, input_dir = self.get_files_with_subtask("jsonl") + to_read_list = [(sub_task, os.path.join(input_dir, f)) for sub_task, file_list in files_with_subtask.items() for f in file_list] + self.cache = [] + from pyspark.sql.types import StructType, StructField, StringType + import pyspark.sql.functions as F + schema = StructType([ + StructField("text",StringType(),True), + StructField("meta",StringType(),True) + ]) + + for sub_task, file_path in to_read_list: + source_id = os.path.join(self.source_prefix, sub_task, os.path.basename(file_path)) + df = spark.read.text(file_path) + df = df.withColumn('jsonData', F.from_json(F.col('value'), schema)).select("jsonData.*") + df = df.withColumn('source_id', F.lit(source_id)) + self.cache.append((df, source_id)) + return self.cache LLMOPERATORS.register(PerfileSourcedJsonlReader) class PerfileSourcedParquetReader(SourcedReader, PerfileReader): def __init__(self, input_dir = "", source_prefix = ""): super().__init__(input_dir = input_dir, source_prefix = source_prefix) - self.support_spark = False + self.support_spark = True + self.support_ray = True def process_rayds(self, ds) -> Dataset: import ray.data as rd @@ -203,4 +224,14 @@ def add_source(s, source_str): self.cache.append((ds, source_id)) return self.cache + def process_spark(self, spark, spark_df: DataFrame = None): + files_with_subtask, input_dir = self.get_files_with_subtask("jsonl") + to_read_list = [(sub_task, os.path.join(input_dir, f)) for sub_task, file_list in files_with_subtask.items() for f in file_list] + self.cache = [] + for sub_task, file_path in to_read_list: + source_id = os.path.join(self.source_prefix, sub_task, os.path.basename(file_path)) + df = spark.read.parquet(file_path) + self.cache.append((df, source_id)) + return self.cache + LLMOPERATORS.register(PerfileSourcedParquetReader) diff --git a/RecDP/pyrecdp/primitives/operations/text_writer.py b/RecDP/pyrecdp/primitives/operations/text_writer.py index 8c15fcf4b..88b7d357d 100644 --- a/RecDP/pyrecdp/primitives/operations/text_writer.py +++ b/RecDP/pyrecdp/primitives/operations/text_writer.py @@ -79,7 +79,45 @@ def __init__(self, output_dir): settings = {'output_dir': output_dir} super().__init__(settings) self.support_ray = True - self.support_spark = False + self.support_spark = True + self.output_dir = output_dir + + def execute_ray(self, pipeline, source_id): + child_output = [] + children = self.op.children if self.op.children is not None else [] + for op in children: + child_output.append(pipeline[op].cache) + self.cache = self.process_rayds(source_id, *child_output) + return self.cache + + def process_rayds(self, source_id, ds: Dataset) -> Dataset: + to_save = os.path.join(self.output_dir, source_id) + if os.path.exists(to_save) and os.path.isdir(to_save): + shutil.rmtree(to_save) + ds.write_parquet(to_save) + return ds + + def execute_spark(self, pipeline, source_id): + child_output = [] + children = self.op.children if self.op.children is not None else [] + for op in children: + child_output.append(pipeline[op].cache) + self.cache = self.process_spark(source_id, *child_output) + return self.cache + + def process_spark(self, source_id, spark_df: DataFrame = None) -> DataFrame: + to_save = os.path.join(self.output_dir, source_id) + spark_df.write.mode("overwrite").parquet(to_save) + return spark_df + +LLMOPERATORS.register(PerfileParquetWriter) + +class PerfileJsonlWriter(BaseLLMOperation): + def __init__(self, output_dir): + settings = {'output_dir': output_dir} + super().__init__(settings) + self.support_ray = True + self.support_spark = True self.output_dir = output_dir def execute_ray(self, pipeline, source_id): @@ -94,7 +132,20 @@ def process_rayds(self, source_id, ds: Dataset) -> Dataset: to_save = os.path.join(self.output_dir, source_id) if os.path.exists(to_save) and os.path.isdir(to_save): shutil.rmtree(to_save) - ds.write_parquet(os.path.join(self.output_dir, source_id)) + ds.write_json(to_save) return ds + + def execute_spark(self, pipeline, source_id): + child_output = [] + children = self.op.children if self.op.children is not None else [] + for op in children: + child_output.append(pipeline[op].cache) + self.cache = self.process_spark(source_id, *child_output) + return self.cache + + def process_spark(self, source_id, spark_df: DataFrame = None) -> DataFrame: + to_save = os.path.join(self.output_dir, source_id) + spark_df.write.mode("overwrite").json(to_save) + return spark_df -LLMOPERATORS.register(PerfileParquetWriter) \ No newline at end of file +LLMOPERATORS.register(PerfileJsonlWriter) \ No newline at end of file diff --git a/RecDP/tests/data/import_test_pipeline.json b/RecDP/tests/data/import_test_pipeline.json index 3e78a38ad..7b0ac004c 100644 --- a/RecDP/tests/data/import_test_pipeline.json +++ b/RecDP/tests/data/import_test_pipeline.json @@ -36,7 +36,7 @@ ], "op": "PerfileParquetWriter", "config": { - "output_dir": "ResumableTextPipeline_output_import" + "output_dir": "ResumableTextPipeline_output" } } } \ No newline at end of file diff --git a/RecDP/tests/test_llmutils_operations.py b/RecDP/tests/test_llmutils_operations.py index bf090b093..1ce8bba4c 100644 --- a/RecDP/tests/test_llmutils_operations.py +++ b/RecDP/tests/test_llmutils_operations.py @@ -137,6 +137,22 @@ def test_sentence_split_ray(self): op = DocumentSplit() with RayContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: ctx.show(op.process_rayds(ctx.ds)) + + def test_customermap_ray(self): + def proc(text): + return f'processed_{text}' + + op = TextCustomerMap(func=proc, text_key='text') + with RayContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: + ctx.show(op.process_rayds(ctx.ds)) + + def test_customerfilter_ray(self): + def cond(text): + return len(text) < 200 + + op = TextCustomerFilter(func=cond, text_key='text') + with RayContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: + ctx.show(op.process_rayds(ctx.ds)) ### ====== Spark ====== ### @@ -209,5 +225,21 @@ def test_qualityscore_spark(self): def test_diversityindicate_spark(self): op = TextDiversityIndicate() + with SparkContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: + ctx.show(op.process_spark(ctx.spark, ctx.ds)) + + def test_customermap_spark(self): + def proc(text): + return f'processed_{text}' + + op = TextCustomerMap(func=proc, text_key='text') + with SparkContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: + ctx.show(op.process_spark(ctx.spark, ctx.ds)) + + def test_customerfilter_spark(self): + def cond(text): + return len(text) < 200 + + op = TextCustomerFilter(func=cond, text_key='text') with SparkContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: ctx.show(op.process_spark(ctx.spark, ctx.ds)) \ No newline at end of file diff --git a/RecDP/tests/test_llmutils_pipelines.py b/RecDP/tests/test_llmutils_pipelines.py index e9cc7487f..c44a400db 100644 --- a/RecDP/tests/test_llmutils_pipelines.py +++ b/RecDP/tests/test_llmutils_pipelines.py @@ -22,6 +22,21 @@ class Test_LLMUtils_Pipeline(unittest.TestCase): def setUp(self) -> None: print(f"\n******\nTesting Method Name: {self._testMethodName}\n******") + + def tearDown(self) -> None: + print("Test completed, view results and delete output") + import pandas as pd + import os + import shutil + output_path = "ResumableTextPipeline_output" + try: + dir_name = [i for i in os.listdir("ResumableTextPipeline_output") if i.endswith('jsonl')][0] + print(dir_name) + display(pd.read_parquet(os.path.join("ResumableTextPipeline_output", dir_name))) + shutil.rmtree("ResumableTextPipeline_output") + except Exception as e: + print(e) + return super().tearDown() def test_ResumableTextPipeline(self): pipeline = ResumableTextPipeline() @@ -30,7 +45,7 @@ def test_ResumableTextPipeline(self): LengthFilter(), ProfanityFilter(), LanguageIdentify(fasttext_model_dir = os.path.join(RECDP_MODELS_CACHE, "lid.bin")), - PerfileParquetWriter("ResumableTextPipeline_output_20231004205724") + PerfileParquetWriter("ResumableTextPipeline_output") ] pipeline.add_operations(ops) pipeline.execute() @@ -40,3 +55,49 @@ def test_ResumableTextPipeline_import(self): pipeline = ResumableTextPipeline(pipeline_file = 'tests/data/import_test_pipeline.json') pipeline.execute() del pipeline + + def test_ResumableTextPipeline_customerfilter_op(self): + def cond(text): + return text > 0.9 + + pipeline = ResumableTextPipeline() + ops = [ + JsonlReader("tests/data/llm_data/"), + TextQualityScorer(), + TextCustomerFilter(cond, text_key='doc_score'), + PerfileParquetWriter("ResumableTextPipeline_output") + ] + pipeline.add_operations(ops) + pipeline.plot() + pipeline.execute() + del pipeline + + + + def test_ResumableTextPipeline_customermap_op(self): + def classify(text): + return 1 if text > 0.8 else 0 + + pipeline = ResumableTextPipeline() + ops = [ + JsonlReader("tests/data/llm_data/"), + TextQualityScorer(), + TextCustomerMap(classify, text_key='doc_score'), + PerfileParquetWriter("ResumableTextPipeline_output") + ] + pipeline.add_operations(ops) + pipeline.plot() + pipeline.execute() + del pipeline + + def test_ResumableTextPipeline_customer_function(self): + def proc(text): + return f'processed_{text}' + + pipeline = ResumableTextPipeline() + pipeline.add_operation(JsonlReader("tests/data/llm_data/")) + pipeline.add_operation(proc, text_key='text') + pipeline.add_operation(PerfileParquetWriter("ResumableTextPipeline_output")) + pipeline.plot() + pipeline.execute() + del pipeline \ No newline at end of file From cc08fc14af5462b30d5101497e492a4ea6a33780 Mon Sep 17 00:00:00 2001 From: "Chendi.Xue" Date: Thu, 12 Oct 2023 19:49:15 -0500 Subject: [PATCH 14/47] [v1.2][ISSUE-306]provide example notebook for customer function (#385) * Created using Colaboratory * Created using Colaboratory --- .../notebooks/llmutils/custom_filter.ipynb | 2339 +++++------------ .../notebooks/llmutils/custom_map.ipynb | 1958 ++------------ 2 files changed, 871 insertions(+), 3426 deletions(-) diff --git a/RecDP/examples/notebooks/llmutils/custom_filter.ipynb b/RecDP/examples/notebooks/llmutils/custom_filter.ipynb index 936cb3659..24141c1d5 100644 --- a/RecDP/examples/notebooks/llmutils/custom_filter.ipynb +++ b/RecDP/examples/notebooks/llmutils/custom_filter.ipynb @@ -40,12 +40,422 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "ro4yOk5IMvRY", "metadata": { - "id": "ro4yOk5IMvRY" + "id": "ro4yOk5IMvRY", + "outputId": "7e7a46cf-d1af-487e-fed4-be652442a594", + "colab": { + "base_uri": "https://localhost:8080/" + } }, - "outputs": [], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Reading package lists... Done\n", + "Building dependency tree... Done\n", + "Reading state information... Done\n", + "The following additional packages will be installed:\n", + " fonts-dejavu-core fonts-dejavu-extra libatk-wrapper-java\n", + " libatk-wrapper-java-jni libfontenc1 libgail-common libgail18 libgtk2.0-0\n", + " libgtk2.0-bin libgtk2.0-common librsvg2-common libxkbfile1 libxtst6\n", + " libxxf86dga1 openjdk-8-jre-headless x11-utils\n", + "Suggested packages:\n", + " gvfs libnss-mdns fonts-nanum fonts-ipafont-gothic fonts-ipafont-mincho\n", + " fonts-wqy-microhei fonts-wqy-zenhei fonts-indic mesa-utils\n", + "The following NEW packages will be installed:\n", + " fonts-dejavu-core fonts-dejavu-extra libatk-wrapper-java\n", + " libatk-wrapper-java-jni libfontenc1 libgail-common libgail18 libgtk2.0-0\n", + " libgtk2.0-bin libgtk2.0-common librsvg2-common libxkbfile1 libxtst6\n", + " libxxf86dga1 openjdk-8-jre openjdk-8-jre-headless x11-utils\n", + "0 upgraded, 17 newly installed, 0 to remove and 18 not upgraded.\n", + "Need to get 36.7 MB of archives.\n", + "After this operation, 123 MB of additional disk space will be used.\n", + "Get:1 http://archive.ubuntu.com/ubuntu jammy/main amd64 fonts-dejavu-core all 2.37-2build1 [1,041 kB]\n", + "Get:2 http://archive.ubuntu.com/ubuntu jammy/main amd64 fonts-dejavu-extra all 2.37-2build1 [2,041 kB]\n", + "Get:3 http://archive.ubuntu.com/ubuntu jammy/main amd64 libfontenc1 amd64 1:1.1.4-1build3 [14.7 kB]\n", + "Get:4 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxkbfile1 amd64 1:1.1.0-1build3 [71.8 kB]\n", + "Get:5 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxtst6 amd64 2:1.2.3-1build4 [13.4 kB]\n", + "Get:6 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxxf86dga1 amd64 2:1.1.5-0ubuntu3 [12.6 kB]\n", + "Get:7 http://archive.ubuntu.com/ubuntu jammy/main amd64 x11-utils amd64 7.7+5build2 [206 kB]\n", + "Get:8 http://archive.ubuntu.com/ubuntu jammy/main amd64 libatk-wrapper-java all 0.38.0-5build1 [53.1 kB]\n", + "Get:9 http://archive.ubuntu.com/ubuntu jammy/main amd64 libatk-wrapper-java-jni amd64 0.38.0-5build1 [49.0 kB]\n", + "Get:10 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgtk2.0-common all 2.24.33-2ubuntu2 [125 kB]\n", + "Get:11 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgtk2.0-0 amd64 2.24.33-2ubuntu2 [2,037 kB]\n", + "Get:12 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgail18 amd64 2.24.33-2ubuntu2 [15.9 kB]\n", + "Get:13 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgail-common amd64 2.24.33-2ubuntu2 [132 kB]\n", + "Get:14 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgtk2.0-bin amd64 2.24.33-2ubuntu2 [7,932 B]\n", + "Get:15 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 librsvg2-common amd64 2.52.5+dfsg-3ubuntu0.2 [17.7 kB]\n", + "Get:16 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 openjdk-8-jre-headless amd64 8u382-ga-1~22.04.1 [30.8 MB]\n", + "Get:17 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 openjdk-8-jre amd64 8u382-ga-1~22.04.1 [75.4 kB]\n", + "Fetched 36.7 MB in 7s (5,183 kB/s)\n", + "Selecting previously unselected package fonts-dejavu-core.\n", + "(Reading database ... 120875 files and directories currently installed.)\n", + "Preparing to unpack .../00-fonts-dejavu-core_2.37-2build1_all.deb ...\n", + "Unpacking fonts-dejavu-core (2.37-2build1) ...\n", + "Selecting previously unselected package fonts-dejavu-extra.\n", + "Preparing to unpack .../01-fonts-dejavu-extra_2.37-2build1_all.deb ...\n", + "Unpacking fonts-dejavu-extra (2.37-2build1) ...\n", + "Selecting previously unselected package libfontenc1:amd64.\n", + "Preparing to unpack .../02-libfontenc1_1%3a1.1.4-1build3_amd64.deb ...\n", + "Unpacking libfontenc1:amd64 (1:1.1.4-1build3) ...\n", + "Selecting previously unselected package libxkbfile1:amd64.\n", + "Preparing to unpack .../03-libxkbfile1_1%3a1.1.0-1build3_amd64.deb ...\n", + "Unpacking libxkbfile1:amd64 (1:1.1.0-1build3) ...\n", + "Selecting previously unselected package libxtst6:amd64.\n", + "Preparing to unpack .../04-libxtst6_2%3a1.2.3-1build4_amd64.deb ...\n", + "Unpacking libxtst6:amd64 (2:1.2.3-1build4) ...\n", + "Selecting previously unselected package libxxf86dga1:amd64.\n", + "Preparing to unpack .../05-libxxf86dga1_2%3a1.1.5-0ubuntu3_amd64.deb ...\n", + "Unpacking libxxf86dga1:amd64 (2:1.1.5-0ubuntu3) ...\n", + "Selecting previously unselected package x11-utils.\n", + "Preparing to unpack .../06-x11-utils_7.7+5build2_amd64.deb ...\n", + "Unpacking x11-utils (7.7+5build2) ...\n", + "Selecting previously unselected package libatk-wrapper-java.\n", + "Preparing to unpack .../07-libatk-wrapper-java_0.38.0-5build1_all.deb ...\n", + "Unpacking libatk-wrapper-java (0.38.0-5build1) ...\n", + "Selecting previously unselected package libatk-wrapper-java-jni:amd64.\n", + "Preparing to unpack .../08-libatk-wrapper-java-jni_0.38.0-5build1_amd64.deb ...\n", + "Unpacking libatk-wrapper-java-jni:amd64 (0.38.0-5build1) ...\n", + "Selecting previously unselected package libgtk2.0-common.\n", + "Preparing to unpack .../09-libgtk2.0-common_2.24.33-2ubuntu2_all.deb ...\n", + "Unpacking libgtk2.0-common (2.24.33-2ubuntu2) ...\n", + "Selecting previously unselected package libgtk2.0-0:amd64.\n", + "Preparing to unpack .../10-libgtk2.0-0_2.24.33-2ubuntu2_amd64.deb ...\n", + "Unpacking libgtk2.0-0:amd64 (2.24.33-2ubuntu2) ...\n", + "Selecting previously unselected package libgail18:amd64.\n", + "Preparing to unpack .../11-libgail18_2.24.33-2ubuntu2_amd64.deb ...\n", + "Unpacking libgail18:amd64 (2.24.33-2ubuntu2) ...\n", + "Selecting previously unselected package libgail-common:amd64.\n", + "Preparing to unpack .../12-libgail-common_2.24.33-2ubuntu2_amd64.deb ...\n", + "Unpacking libgail-common:amd64 (2.24.33-2ubuntu2) ...\n", + "Selecting previously unselected package libgtk2.0-bin.\n", + "Preparing to unpack .../13-libgtk2.0-bin_2.24.33-2ubuntu2_amd64.deb ...\n", + "Unpacking libgtk2.0-bin (2.24.33-2ubuntu2) ...\n", + "Selecting previously unselected package librsvg2-common:amd64.\n", + "Preparing to unpack .../14-librsvg2-common_2.52.5+dfsg-3ubuntu0.2_amd64.deb ...\n", + "Unpacking librsvg2-common:amd64 (2.52.5+dfsg-3ubuntu0.2) ...\n", + "Selecting previously unselected package openjdk-8-jre-headless:amd64.\n", + "Preparing to unpack .../15-openjdk-8-jre-headless_8u382-ga-1~22.04.1_amd64.deb ...\n", + "Unpacking openjdk-8-jre-headless:amd64 (8u382-ga-1~22.04.1) ...\n", + "Selecting previously unselected package openjdk-8-jre:amd64.\n", + "Preparing to unpack .../16-openjdk-8-jre_8u382-ga-1~22.04.1_amd64.deb ...\n", + "Unpacking openjdk-8-jre:amd64 (8u382-ga-1~22.04.1) ...\n", + "Setting up libxtst6:amd64 (2:1.2.3-1build4) ...\n", + "Setting up libxxf86dga1:amd64 (2:1.1.5-0ubuntu3) ...\n", + "Setting up libfontenc1:amd64 (1:1.1.4-1build3) ...\n", + "Setting up openjdk-8-jre-headless:amd64 (8u382-ga-1~22.04.1) ...\n", + "update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/orbd to provide /usr/bin/orbd (orbd) in auto mode\n", + "update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/servertool to provide /usr/bin/servertool (servertool) in auto mode\n", + "update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/tnameserv to provide /usr/bin/tnameserv (tnameserv) in auto mode\n", + "Setting up fonts-dejavu-core (2.37-2build1) ...\n", + "Setting up librsvg2-common:amd64 (2.52.5+dfsg-3ubuntu0.2) ...\n", + "Setting up fonts-dejavu-extra (2.37-2build1) ...\n", + "Setting up libgtk2.0-common (2.24.33-2ubuntu2) ...\n", + "Setting up libxkbfile1:amd64 (1:1.1.0-1build3) ...\n", + "Setting up libgtk2.0-0:amd64 (2.24.33-2ubuntu2) ...\n", + "Setting up libgail18:amd64 (2.24.33-2ubuntu2) ...\n", + "Setting up libgtk2.0-bin (2.24.33-2ubuntu2) ...\n", + "Setting up x11-utils (7.7+5build2) ...\n", + "Setting up libatk-wrapper-java (0.38.0-5build1) ...\n", + "Setting up libgail-common:amd64 (2.24.33-2ubuntu2) ...\n", + "Setting up libatk-wrapper-java-jni:amd64 (0.38.0-5build1) ...\n", + "Setting up openjdk-8-jre:amd64 (8u382-ga-1~22.04.1) ...\n", + "update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/policytool to provide /usr/bin/policytool (policytool) in auto mode\n", + "Processing triggers for fontconfig (2.13.1-4.2ubuntu5) ...\n", + "Processing triggers for hicolor-icon-theme (0.17-2) ...\n", + "Processing triggers for libc-bin (2.35-0ubuntu3.1) ...\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbb.so.12 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbbbind_2_5.so.3 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbbbind_2_0.so.3 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbbmalloc.so.2 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbbbind.so.3 is not a symbolic link\n", + "\n", + "/sbin/ldconfig.real: /usr/local/lib/libtbbmalloc_proxy.so.2 is not a symbolic link\n", + "\n", + "Processing triggers for man-db (2.10.2-1) ...\n", + "Processing triggers for libgdk-pixbuf-2.0-0:amd64 (2.42.8+dfsg-1ubuntu0.2) ...\n", + "Collecting pyrecdp\n", + " Downloading pyrecdp-1.6.1b2023101306.tar.gz (240 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m240.7/240.7 kB\u001b[0m \u001b[31m4.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Installing build dependencies ... \u001b[?25l\u001b[?25hdone\n", + " Getting requirements to build wheel ... \u001b[?25l\u001b[?25hdone\n", + " Preparing metadata (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n", + "Requirement already satisfied: scikit-learn in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (1.2.2)\n", + "Requirement already satisfied: psutil in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (5.9.5)\n", + "Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (4.66.1)\n", + "Requirement already satisfied: pyyaml in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (6.0.1)\n", + "Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (1.5.3)\n", + "Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (1.23.5)\n", + "Requirement already satisfied: pyarrow in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (9.0.0)\n", + "Collecting pandas-flavor (from pyrecdp)\n", + " Downloading pandas_flavor-0.6.0-py3-none-any.whl (7.2 kB)\n", + "Collecting featuretools (from pyrecdp)\n", + " Downloading featuretools-1.27.0-py3-none-any.whl (618 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m618.3/618.3 kB\u001b[0m \u001b[31m25.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: bokeh>=2.4.2 in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (3.2.2)\n", + "Collecting transformers (from pyrecdp)\n", + " Downloading transformers-4.34.0-py3-none-any.whl (7.7 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m7.7/7.7 MB\u001b[0m \u001b[31m72.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: ipywidgets in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (7.7.1)\n", + "Requirement already satisfied: shapely in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (2.0.1)\n", + "Requirement already satisfied: graphviz in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (0.20.1)\n", + "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (2.31.0)\n", + "Requirement already satisfied: distro in /usr/lib/python3/dist-packages (from pyrecdp) (1.7.0)\n", + "Collecting pyspark==3.4.0 (from pyrecdp)\n", + " Downloading pyspark-3.4.0.tar.gz (310.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m310.8/310.8 MB\u001b[0m \u001b[31m4.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "Collecting lightgbm<4.0.0 (from pyrecdp)\n", + " Downloading lightgbm-3.3.5-py3-none-manylinux1_x86_64.whl (2.0 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.0/2.0 MB\u001b[0m \u001b[31m91.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: matplotlib in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (3.7.1)\n", + "Collecting category-encoders (from pyrecdp)\n", + " Downloading category_encoders-2.6.2-py2.py3-none-any.whl (81 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m81.8/81.8 kB\u001b[0m \u001b[31m9.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: seaborn in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (0.12.2)\n", + "Requirement already satisfied: numba in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (0.56.4)\n", + "Requirement already satisfied: missingno in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (0.5.2)\n", + "Collecting datasketch==1.5.9 (from pyrecdp)\n", + " Downloading datasketch-1.5.9-py3-none-any.whl (76 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m76.7/76.7 kB\u001b[0m \u001b[31m9.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting ftfy==6.1.1 (from pyrecdp)\n", + " Downloading ftfy-6.1.1-py3-none-any.whl (53 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m53.1/53.1 kB\u001b[0m \u001b[31m6.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting jsonlines==3.1.0 (from pyrecdp)\n", + " Downloading jsonlines-3.1.0-py3-none-any.whl (8.6 kB)\n", + "Collecting networkit==10.1 (from pyrecdp)\n", + " Downloading networkit-10.1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (9.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m9.8/9.8 MB\u001b[0m \u001b[31m86.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: nltk==3.8.1 in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (3.8.1)\n", + "Requirement already satisfied: regex==2023.6.3 in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (2023.6.3)\n", + "Collecting scipy==1.10.1 (from pyrecdp)\n", + " Downloading scipy-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (34.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m34.4/34.4 MB\u001b[0m \u001b[31m11.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting datasets>=2.7.0 (from pyrecdp)\n", + " Downloading datasets-2.14.5-py3-none-any.whl (519 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m519.6/519.6 kB\u001b[0m \u001b[31m42.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: typer>=0.6.1 in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (0.9.0)\n", + "Collecting phonenumbers (from pyrecdp)\n", + " Downloading phonenumbers-8.13.22-py2.py3-none-any.whl (2.6 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.6/2.6 MB\u001b[0m \u001b[31m68.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting fasttext==0.9.2 (from pyrecdp)\n", + " Downloading fasttext-0.9.2.tar.gz (68 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m68.8/68.8 kB\u001b[0m \u001b[31m8.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "Collecting wget==3.2 (from pyrecdp)\n", + " Downloading wget-3.2.zip (10 kB)\n", + " Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "Collecting alt-profanity-check==1.3.0 (from pyrecdp)\n", + " Downloading alt-profanity-check-1.3.0.tar.gz (1.9 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.9/1.9 MB\u001b[0m \u001b[31m37.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + "Collecting huggingface-hub==0.16.4 (from pyrecdp)\n", + " Downloading huggingface_hub-0.16.4-py3-none-any.whl (268 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m268.8/268.8 kB\u001b[0m \u001b[31m27.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting loguru==0.7.2 (from pyrecdp)\n", + " Downloading loguru-0.7.2-py3-none-any.whl (62 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m62.5/62.5 kB\u001b[0m \u001b[31m7.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: tabulate==0.9.0 in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (0.9.0)\n", + "Collecting sentencepiece==0.1.99 (from pyrecdp)\n", + " Downloading sentencepiece-0.1.99-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.3/1.3 MB\u001b[0m \u001b[31m73.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting selectolax (from pyrecdp)\n", + " Downloading selectolax-0.3.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.5 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m5.5/5.5 MB\u001b[0m \u001b[31m14.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: spacy in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (3.6.1)\n", + "Requirement already satisfied: torch in /usr/local/lib/python3.10/dist-packages (from pyrecdp) (2.0.1+cu118)\n", + "Collecting Faker (from pyrecdp)\n", + " Downloading Faker-19.10.0-py3-none-any.whl (1.7 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.7/1.7 MB\u001b[0m \u001b[31m89.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting ray (from pyrecdp)\n", + " Downloading ray-2.7.1-cp310-cp310-manylinux2014_x86_64.whl (62.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m62.4/62.4 MB\u001b[0m \u001b[31m9.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting scikit-learn (from pyrecdp)\n", + " Downloading scikit_learn-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m10.8/10.8 MB\u001b[0m \u001b[31m90.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: joblib>=1.3.1 in /usr/local/lib/python3.10/dist-packages (from alt-profanity-check==1.3.0->pyrecdp) (1.3.2)\n", + "Collecting pybind11>=2.2 (from fasttext==0.9.2->pyrecdp)\n", + " Using cached pybind11-2.11.1-py3-none-any.whl (227 kB)\n", + "Requirement already satisfied: setuptools>=0.7.0 in /usr/local/lib/python3.10/dist-packages (from fasttext==0.9.2->pyrecdp) (67.7.2)\n", + "Requirement already satisfied: wcwidth>=0.2.5 in /usr/local/lib/python3.10/dist-packages (from ftfy==6.1.1->pyrecdp) (0.2.8)\n", + "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from huggingface-hub==0.16.4->pyrecdp) (3.12.4)\n", + "Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from huggingface-hub==0.16.4->pyrecdp) (2023.6.0)\n", + "Requirement already satisfied: typing-extensions>=3.7.4.3 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub==0.16.4->pyrecdp) (4.5.0)\n", + "Requirement already satisfied: packaging>=20.9 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub==0.16.4->pyrecdp) (23.2)\n", + "Requirement already satisfied: attrs>=19.2.0 in /usr/local/lib/python3.10/dist-packages (from jsonlines==3.1.0->pyrecdp) (23.1.0)\n", + "Requirement already satisfied: click in /usr/local/lib/python3.10/dist-packages (from nltk==3.8.1->pyrecdp) (8.1.7)\n", + "Requirement already satisfied: py4j==0.10.9.7 in /usr/local/lib/python3.10/dist-packages (from pyspark==3.4.0->pyrecdp) (0.10.9.7)\n", + "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn->pyrecdp) (3.2.0)\n", + "Requirement already satisfied: Jinja2>=2.9 in /usr/local/lib/python3.10/dist-packages (from bokeh>=2.4.2->pyrecdp) (3.1.2)\n", + "Requirement already satisfied: contourpy>=1 in /usr/local/lib/python3.10/dist-packages (from bokeh>=2.4.2->pyrecdp) (1.1.1)\n", + "Requirement already satisfied: pillow>=7.1.0 in /usr/local/lib/python3.10/dist-packages (from bokeh>=2.4.2->pyrecdp) (9.4.0)\n", + "Requirement already satisfied: tornado>=5.1 in /usr/local/lib/python3.10/dist-packages (from bokeh>=2.4.2->pyrecdp) (6.3.2)\n", + "Requirement already satisfied: xyzservices>=2021.09.1 in /usr/local/lib/python3.10/dist-packages (from bokeh>=2.4.2->pyrecdp) (2023.10.0)\n", + "Collecting dill<0.3.8,>=0.3.0 (from datasets>=2.7.0->pyrecdp)\n", + " Downloading dill-0.3.7-py3-none-any.whl (115 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m115.3/115.3 kB\u001b[0m \u001b[31m13.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting xxhash (from datasets>=2.7.0->pyrecdp)\n", + " Downloading xxhash-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (194 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m194.1/194.1 kB\u001b[0m \u001b[31m19.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting multiprocess (from datasets>=2.7.0->pyrecdp)\n", + " Downloading multiprocess-0.70.15-py310-none-any.whl (134 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m134.8/134.8 kB\u001b[0m \u001b[31m16.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: aiohttp in /usr/local/lib/python3.10/dist-packages (from datasets>=2.7.0->pyrecdp) (3.8.6)\n", + "Requirement already satisfied: wheel in /usr/local/lib/python3.10/dist-packages (from lightgbm<4.0.0->pyrecdp) (0.41.2)\n", + "Requirement already satisfied: python-dateutil>=2.8.1 in /usr/local/lib/python3.10/dist-packages (from pandas->pyrecdp) (2.8.2)\n", + "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->pyrecdp) (2023.3.post1)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->pyrecdp) (3.3.0)\n", + "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->pyrecdp) (3.4)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->pyrecdp) (2.0.6)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->pyrecdp) (2023.7.22)\n", + "Requirement already satisfied: statsmodels>=0.9.0 in /usr/local/lib/python3.10/dist-packages (from category-encoders->pyrecdp) (0.14.0)\n", + "Requirement already satisfied: patsy>=0.5.1 in /usr/local/lib/python3.10/dist-packages (from category-encoders->pyrecdp) (0.5.3)\n", + "Requirement already satisfied: cloudpickle>=1.5.0 in /usr/local/lib/python3.10/dist-packages (from featuretools->pyrecdp) (2.2.1)\n", + "Requirement already satisfied: holidays>=0.13 in /usr/local/lib/python3.10/dist-packages (from featuretools->pyrecdp) (0.34)\n", + "Collecting woodwork>=0.23.0 (from featuretools->pyrecdp)\n", + " Downloading woodwork-0.26.0-py3-none-any.whl (236 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m236.0/236.0 kB\u001b[0m \u001b[31m24.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: ipykernel>=4.5.1 in /usr/local/lib/python3.10/dist-packages (from ipywidgets->pyrecdp) (5.5.6)\n", + "Requirement already satisfied: ipython-genutils~=0.2.0 in /usr/local/lib/python3.10/dist-packages (from ipywidgets->pyrecdp) (0.2.0)\n", + "Requirement already satisfied: traitlets>=4.3.1 in /usr/local/lib/python3.10/dist-packages (from ipywidgets->pyrecdp) (5.7.1)\n", + "Requirement already satisfied: widgetsnbextension~=3.6.0 in /usr/local/lib/python3.10/dist-packages (from ipywidgets->pyrecdp) (3.6.6)\n", + "Requirement already satisfied: ipython>=4.0.0 in /usr/local/lib/python3.10/dist-packages (from ipywidgets->pyrecdp) (7.34.0)\n", + "Requirement already satisfied: jupyterlab-widgets>=1.0.0 in /usr/local/lib/python3.10/dist-packages (from ipywidgets->pyrecdp) (3.0.9)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib->pyrecdp) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->pyrecdp) (4.43.1)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->pyrecdp) (1.4.5)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->pyrecdp) (3.1.1)\n", + "Requirement already satisfied: llvmlite<0.40,>=0.39.0dev0 in /usr/local/lib/python3.10/dist-packages (from numba->pyrecdp) (0.39.1)\n", + "Requirement already satisfied: xarray in /usr/local/lib/python3.10/dist-packages (from pandas-flavor->pyrecdp) (2023.7.0)\n", + "Requirement already satisfied: jsonschema in /usr/local/lib/python3.10/dist-packages (from ray->pyrecdp) (4.19.1)\n", + "Requirement already satisfied: msgpack<2.0.0,>=1.0.0 in /usr/local/lib/python3.10/dist-packages (from ray->pyrecdp) (1.0.7)\n", + "Requirement already satisfied: protobuf!=3.19.5,>=3.15.3 in /usr/local/lib/python3.10/dist-packages (from ray->pyrecdp) (3.20.3)\n", + "Requirement already satisfied: aiosignal in /usr/local/lib/python3.10/dist-packages (from ray->pyrecdp) (1.3.1)\n", + "Requirement already satisfied: frozenlist in /usr/local/lib/python3.10/dist-packages (from ray->pyrecdp) (1.4.0)\n", + "Requirement already satisfied: spacy-legacy<3.1.0,>=3.0.11 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (3.0.12)\n", + "Requirement already satisfied: spacy-loggers<2.0.0,>=1.0.0 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (1.0.5)\n", + "Requirement already satisfied: murmurhash<1.1.0,>=0.28.0 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (1.0.10)\n", + "Requirement already satisfied: cymem<2.1.0,>=2.0.2 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (2.0.8)\n", + "Requirement already satisfied: preshed<3.1.0,>=3.0.2 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (3.0.9)\n", + "Requirement already satisfied: thinc<8.2.0,>=8.1.8 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (8.1.12)\n", + "Requirement already satisfied: wasabi<1.2.0,>=0.9.1 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (1.1.2)\n", + "Requirement already satisfied: srsly<3.0.0,>=2.4.3 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (2.4.8)\n", + "Requirement already satisfied: catalogue<2.1.0,>=2.0.6 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (2.0.10)\n", + "Requirement already satisfied: pathy>=0.10.0 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (0.10.2)\n", + "Requirement already satisfied: smart-open<7.0.0,>=5.2.1 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (6.4.0)\n", + "Requirement already satisfied: pydantic!=1.8,!=1.8.1,<3.0.0,>=1.7.4 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (1.10.13)\n", + "Requirement already satisfied: langcodes<4.0.0,>=3.2.0 in /usr/local/lib/python3.10/dist-packages (from spacy->pyrecdp) (3.3.0)\n", + "Requirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from torch->pyrecdp) (1.12)\n", + "Requirement already satisfied: networkx in /usr/local/lib/python3.10/dist-packages (from torch->pyrecdp) (3.1)\n", + "Requirement already satisfied: triton==2.0.0 in /usr/local/lib/python3.10/dist-packages (from torch->pyrecdp) (2.0.0)\n", + "Requirement already satisfied: cmake in /usr/local/lib/python3.10/dist-packages (from triton==2.0.0->torch->pyrecdp) (3.27.6)\n", + "Requirement already satisfied: lit in /usr/local/lib/python3.10/dist-packages (from triton==2.0.0->torch->pyrecdp) (17.0.2)\n", + "Collecting tokenizers<0.15,>=0.14 (from transformers->pyrecdp)\n", + " Downloading tokenizers-0.14.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.8/3.8 MB\u001b[0m \u001b[31m64.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting safetensors>=0.3.1 (from transformers->pyrecdp)\n", + " Downloading safetensors-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.3/1.3 MB\u001b[0m \u001b[31m61.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.7.0->pyrecdp) (6.0.4)\n", + "Requirement already satisfied: async-timeout<5.0,>=4.0.0a3 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.7.0->pyrecdp) (4.0.3)\n", + "Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib/python3.10/dist-packages (from aiohttp->datasets>=2.7.0->pyrecdp) (1.9.2)\n", + "Requirement already satisfied: jupyter-client in /usr/local/lib/python3.10/dist-packages (from ipykernel>=4.5.1->ipywidgets->pyrecdp) (6.1.12)\n", + "Collecting jedi>=0.16 (from ipython>=4.0.0->ipywidgets->pyrecdp)\n", + " Downloading jedi-0.19.1-py2.py3-none-any.whl (1.6 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m55.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hRequirement already satisfied: decorator in /usr/local/lib/python3.10/dist-packages (from ipython>=4.0.0->ipywidgets->pyrecdp) (4.4.2)\n", + "Requirement already satisfied: pickleshare in /usr/local/lib/python3.10/dist-packages (from ipython>=4.0.0->ipywidgets->pyrecdp) (0.7.5)\n", + "Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from ipython>=4.0.0->ipywidgets->pyrecdp) (3.0.39)\n", + "Requirement already satisfied: pygments in /usr/local/lib/python3.10/dist-packages (from ipython>=4.0.0->ipywidgets->pyrecdp) (2.16.1)\n", + "Requirement already satisfied: backcall in /usr/local/lib/python3.10/dist-packages (from ipython>=4.0.0->ipywidgets->pyrecdp) (0.2.0)\n", + "Requirement already satisfied: matplotlib-inline in /usr/local/lib/python3.10/dist-packages (from ipython>=4.0.0->ipywidgets->pyrecdp) (0.1.6)\n", + "Requirement already satisfied: pexpect>4.3 in /usr/local/lib/python3.10/dist-packages (from ipython>=4.0.0->ipywidgets->pyrecdp) (4.8.0)\n", + "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from Jinja2>=2.9->bokeh>=2.4.2->pyrecdp) (2.1.3)\n", + "Requirement already satisfied: six in /usr/local/lib/python3.10/dist-packages (from patsy>=0.5.1->category-encoders->pyrecdp) (1.16.0)\n", + "Requirement already satisfied: blis<0.8.0,>=0.7.8 in /usr/local/lib/python3.10/dist-packages (from thinc<8.2.0,>=8.1.8->spacy->pyrecdp) (0.7.11)\n", + "Requirement already satisfied: confection<1.0.0,>=0.0.1 in /usr/local/lib/python3.10/dist-packages (from thinc<8.2.0,>=8.1.8->spacy->pyrecdp) (0.1.3)\n", + "Requirement already satisfied: notebook>=4.4.1 in /usr/local/lib/python3.10/dist-packages (from widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (6.5.5)\n", + "Requirement already satisfied: importlib-resources>=5.10.0 in /usr/local/lib/python3.10/dist-packages (from woodwork>=0.23.0->featuretools->pyrecdp) (6.1.0)\n", + "Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /usr/local/lib/python3.10/dist-packages (from jsonschema->ray->pyrecdp) (2023.7.1)\n", + "Requirement already satisfied: referencing>=0.28.4 in /usr/local/lib/python3.10/dist-packages (from jsonschema->ray->pyrecdp) (0.30.2)\n", + "Requirement already satisfied: rpds-py>=0.7.1 in /usr/local/lib/python3.10/dist-packages (from jsonschema->ray->pyrecdp) (0.10.4)\n", + "Requirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy->torch->pyrecdp) (1.3.0)\n", + "Requirement already satisfied: parso<0.9.0,>=0.8.3 in /usr/local/lib/python3.10/dist-packages (from jedi>=0.16->ipython>=4.0.0->ipywidgets->pyrecdp) (0.8.3)\n", + "Requirement already satisfied: pyzmq<25,>=17 in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (23.2.1)\n", + "Requirement already satisfied: argon2-cffi in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (23.1.0)\n", + "Requirement already satisfied: jupyter-core>=4.6.1 in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (5.3.2)\n", + "Requirement already satisfied: nbformat in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (5.9.2)\n", + "Requirement already satisfied: nbconvert>=5 in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (6.5.4)\n", + "Requirement already satisfied: nest-asyncio>=1.5 in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (1.5.8)\n", + "Requirement already satisfied: Send2Trash>=1.8.0 in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (1.8.2)\n", + "Requirement already satisfied: terminado>=0.8.3 in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (0.17.1)\n", + "Requirement already satisfied: prometheus-client in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (0.17.1)\n", + "Requirement already satisfied: nbclassic>=0.4.7 in /usr/local/lib/python3.10/dist-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (1.0.0)\n", + "Requirement already satisfied: ptyprocess>=0.5 in /usr/local/lib/python3.10/dist-packages (from pexpect>4.3->ipython>=4.0.0->ipywidgets->pyrecdp) (0.7.0)\n", + "Requirement already satisfied: platformdirs>=2.5 in /usr/local/lib/python3.10/dist-packages (from jupyter-core>=4.6.1->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (3.11.0)\n", + "Requirement already satisfied: jupyter-server>=1.8 in /usr/local/lib/python3.10/dist-packages (from nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (1.24.0)\n", + "Requirement already satisfied: notebook-shim>=0.2.3 in /usr/local/lib/python3.10/dist-packages (from nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (0.2.3)\n", + "Requirement already satisfied: lxml in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (4.9.3)\n", + "Requirement already satisfied: beautifulsoup4 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (4.11.2)\n", + "Requirement already satisfied: bleach in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (6.1.0)\n", + "Requirement already satisfied: defusedxml in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (0.7.1)\n", + "Requirement already satisfied: entrypoints>=0.2.2 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (0.4)\n", + "Requirement already satisfied: jupyterlab-pygments in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (0.2.2)\n", + "Requirement already satisfied: mistune<2,>=0.8.1 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (0.8.4)\n", + "Requirement already satisfied: nbclient>=0.5.0 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (0.8.0)\n", + "Requirement already satisfied: pandocfilters>=1.4.1 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (1.5.0)\n", + "Requirement already satisfied: tinycss2 in /usr/local/lib/python3.10/dist-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (1.2.1)\n", + "Requirement already satisfied: fastjsonschema in /usr/local/lib/python3.10/dist-packages (from nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (2.18.1)\n", + "Requirement already satisfied: argon2-cffi-bindings in /usr/local/lib/python3.10/dist-packages (from argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (21.2.0)\n", + "Requirement already satisfied: anyio<4,>=3.1.0 in /usr/local/lib/python3.10/dist-packages (from jupyter-server>=1.8->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (3.7.1)\n", + "Requirement already satisfied: websocket-client in /usr/local/lib/python3.10/dist-packages (from jupyter-server>=1.8->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (1.6.4)\n", + "Requirement already satisfied: cffi>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from argon2-cffi-bindings->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (1.16.0)\n", + "Requirement already satisfied: soupsieve>1.2 in /usr/local/lib/python3.10/dist-packages (from beautifulsoup4->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (2.5)\n", + "Requirement already satisfied: webencodings in /usr/local/lib/python3.10/dist-packages (from bleach->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (0.5.1)\n", + "Requirement already satisfied: sniffio>=1.1 in /usr/local/lib/python3.10/dist-packages (from anyio<4,>=3.1.0->jupyter-server>=1.8->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (1.3.0)\n", + "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio<4,>=3.1.0->jupyter-server>=1.8->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (1.1.3)\n", + "Requirement already satisfied: pycparser in /usr/local/lib/python3.10/dist-packages (from cffi>=1.0.1->argon2-cffi-bindings->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets->pyrecdp) (2.21)\n", + "Building wheels for collected packages: pyrecdp, alt-profanity-check, fasttext, pyspark, wget\n", + " Building wheel for pyrecdp (pyproject.toml) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for pyrecdp: filename=pyrecdp-1.6.1b2023101306-py3-none-any.whl size=307221 sha256=0cd9d4d13818d59dea1d191ec063689561baab1358837b676f03ddba7372ef39\n", + " Stored in directory: /root/.cache/pip/wheels/ca/10/a2/dab260119441634ae73a09aaad4d495db5357daa13fb17cde2\n", + " Building wheel for alt-profanity-check (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for alt-profanity-check: filename=alt_profanity_check-1.3.0-py3-none-any.whl size=1866314 sha256=383863ae5a91e46e46f8a26e24b65602be637e7729ed0551d7ec4613c0910db2\n", + " Stored in directory: /root/.cache/pip/wheels/c3/90/42/6a4db18c278ef1720f9ca92275c793f52882ec5a6e044ff2ea\n", + " Building wheel for fasttext (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for fasttext: filename=fasttext-0.9.2-cp310-cp310-linux_x86_64.whl size=4199768 sha256=da03179d8033878cc48defa23e443e815ad04c77a8d8ccdf59c2724b8f9c884b\n", + " Stored in directory: /root/.cache/pip/wheels/a5/13/75/f811c84a8ab36eedbaef977a6a58a98990e8e0f1967f98f394\n", + " Building wheel for pyspark (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for pyspark: filename=pyspark-3.4.0-py2.py3-none-any.whl size=311317123 sha256=3599d743f781f613051ada15185543baf29e7b000a916f756e268ae1d4f2240a\n", + " Stored in directory: /root/.cache/pip/wheels/7b/1b/4b/3363a1d04368e7ff0d408e57ff57966fcdf00583774e761327\n", + " Building wheel for wget (setup.py) ... \u001b[?25l\u001b[?25hdone\n", + " Created wheel for wget: filename=wget-3.2-py3-none-any.whl size=9655 sha256=e100851247921779ad5f834c460d9881e210cfb9ba5e92e25ba85d3a3687f22f\n", + " Stored in directory: /root/.cache/pip/wheels/8b/f1/7f/5c94f0a7a505ca1c81cd1d9208ae2064675d97582078e6c769\n", + "Successfully built pyrecdp alt-profanity-check fasttext pyspark wget\n", + "Installing collected packages: wget, sentencepiece, selectolax, phonenumbers, xxhash, scipy, safetensors, pyspark, pybind11, loguru, jsonlines, jedi, ftfy, dill, scikit-learn, networkit, multiprocess, huggingface-hub, fasttext, Faker, datasketch, woodwork, tokenizers, lightgbm, alt-profanity-check, transformers, ray, pandas-flavor, featuretools, datasets, category-encoders, pyrecdp\n", + " Attempting uninstall: scipy\n", + " Found existing installation: scipy 1.11.3\n", + " Uninstalling scipy-1.11.3:\n", + " Successfully uninstalled scipy-1.11.3\n", + " Attempting uninstall: scikit-learn\n", + " Found existing installation: scikit-learn 1.2.2\n", + " Uninstalling scikit-learn-1.2.2:\n", + " Successfully uninstalled scikit-learn-1.2.2\n", + " Attempting uninstall: lightgbm\n", + " Found existing installation: lightgbm 4.0.0\n", + " Uninstalling lightgbm-4.0.0:\n", + " Successfully uninstalled lightgbm-4.0.0\n", + "Successfully installed Faker-19.10.0 alt-profanity-check-1.3.0 category-encoders-2.6.2 datasets-2.14.5 datasketch-1.5.9 dill-0.3.7 fasttext-0.9.2 featuretools-1.27.0 ftfy-6.1.1 huggingface-hub-0.16.4 jedi-0.19.1 jsonlines-3.1.0 lightgbm-3.3.5 loguru-0.7.2 multiprocess-0.70.15 networkit-10.1 pandas-flavor-0.6.0 phonenumbers-8.13.22 pybind11-2.11.1 pyrecdp-1.6.1b2023101306 pyspark-3.4.0 ray-2.7.1 safetensors-0.4.0 scikit-learn-1.3.0 scipy-1.10.1 selectolax-0.3.16 sentencepiece-0.1.99 tokenizers-0.14.1 transformers-4.34.0 wget-3.2 woodwork-0.26.0 xxhash-3.4.1\n" + ] + } + ], "source": [ "! DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-8-jre\n", "! pip install pyrecdp --pre\n", @@ -71,7 +481,7 @@ "colab": { "base_uri": "https://localhost:8080/" }, - "outputId": "d326b334-d005-42e1-ee4e-619d9c0b388b" + "outputId": "ea5e6451-43bb-4dd2-9efc-b44b7141d8b4" }, "outputs": [ { @@ -79,16 +489,16 @@ "name": "stdout", "text": [ "/content/test_data\n", - "--2023-10-11 18:10:37-- https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/PILE/NIH_sample.jsonl\n", - "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...\n", - "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n", + "--2023-10-12 23:32:37-- https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/tiny_c4_sample.jsonl\n", + "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.110.133, 185.199.109.133, 185.199.108.133, ...\n", + "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.110.133|:443... connected.\n", "HTTP request sent, awaiting response... 200 OK\n", - "Length: 21626664 (21M) [text/plain]\n", - "Saving to: ‘/content/test_data/NIH_sample.jsonl’\n", + "Length: 1062126 (1.0M) [text/plain]\n", + "Saving to: ‘/content/test_data/tiny_c4_sample.jsonl’\n", "\n", - "NIH_sample.jsonl 100%[===================>] 20.62M 114MB/s in 0.2s \n", + "tiny_c4_sample.json 100%[===================>] 1.01M 4.96MB/s in 0.2s \n", "\n", - "2023-10-11 18:10:38 (114 MB/s) - ‘/content/test_data/NIH_sample.jsonl’ saved [21626664/21626664]\n", + "2023-10-12 23:32:38 (4.96 MB/s) - ‘/content/test_data/tiny_c4_sample.jsonl’ saved [1062126/1062126]\n", "\n" ] } @@ -97,7 +507,7 @@ "%mkdir -p /content/test_data\n", "%cd /content/test_data\n", "file_names = ['NIH_sample.jsonl']\n", - "file_list = [f\"https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/PILE/{i}\" for i in file_names]\n", + "file_list = [f\"https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/tiny_c4_sample.jsonl\" for i in file_names]\n", "!wget -P /content/test_data {\" \".join(file_list)}" ] }, @@ -108,7 +518,7 @@ "id": "J-125gFtNyOg" }, "source": [ - "## 3. get bytesize" + "## 3. User Defined Filter" ] }, { @@ -120,14 +530,14 @@ "base_uri": "https://localhost:8080/" }, "id": "vkGRn9uJN4B0", - "outputId": "fb931ee0-a81c-414e-aa6c-60b3db1ab4cd" + "outputId": "2f745f19-2195-4d7f-db2a-9ce837835178" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "NIH_sample.jsonl\n" + "tiny_c4_sample.jsonl\n" ] } ], @@ -145,6 +555,20 @@ }, "id": "HZIPEzB477Bm" }, + { + "cell_type": "code", + "source": [ + "# Define your filter condition\n", + "def cond(text):\n", + " return text > 0.9" + ], + "metadata": { + "id": "EZuBCm3XIm_U" + }, + "id": "EZuBCm3XIm_U", + "execution_count": 4, + "outputs": [] + }, { "cell_type": "code", "execution_count": 5, @@ -152,23 +576,10 @@ "metadata": { "colab": { "base_uri": "https://localhost:8080/", - "height": 704, - "referenced_widgets": [ - "2f6ad7bbc0964d7696c7dec5d0e66f44", - "60dd954b33414adfabf772f49ea2f3a2", - "93697baecfd442fa8d8db709cfc82eee", - "77548643af8d430db70bfb0af3707f91", - "92f4fcc6115c4f809c15b942ca0d11d4", - "90a32f5a48a74578bad33421c0e1599c", - "ec2613a4e1c04b2789a4ca8a257bda53", - "f955ca8d9b9e451791a5aa53bb984a71", - "0d52219723f944eb8b34e5aee50298be", - "58951323a0804ad8ad9d68dd4292f35f", - "c9d153b598854d0686849b48f84aa01e" - ] + "height": 260 }, "id": "SMK9KcV4N7al", - "outputId": "17b2f0cc-92f7-4ff5-bdb0-7d3fb338c305" + "outputId": "95ca03d9-003c-4b03-d640-46ab5e503c2e" }, "outputs": [ { @@ -245,99 +656,161 @@ "output_type": "stream", "name": "stdout", "text": [ - "init ray\n", - "init ray with total mem of 8167961395, total core of 1\n" + "\u001b[32m2023-10-12 23:33:02.075\u001b[0m | \u001b[33m\u001b[1mWARNING \u001b[0m | \u001b[36mpyrecdp.LLM.TextPipeline\u001b[0m:\u001b[36menable_statistics\u001b[0m:\u001b[36m197\u001b[0m - \u001b[33m\u001b[1mEnabling this option will result in a decrease in execution speed\u001b[0m\n", + "Will assign 1 cores and 10386 M memory for spark\n", + "per core memory size is 10.143 GB and shuffle_disk maximum capacity is 8589934592.000 GB\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ - "2023-10-11 18:11:28,068\tWARNING services.py:1889 -- WARNING: The object store is using /tmp instead of /dev/shm because /dev/shm has only 6133121024 bytes available. This will harm performance! You may be able to free up space by deleting files in /dev/shm. If you are inside a Docker container, you can increase /dev/shm size by passing '--shm-size=8.37gb' to 'docker run' (or add it to the run_options list in a Ray cluster config). Make sure to set this to more than 30% of available RAM.\n", - "2023-10-11 18:11:29,354\tINFO worker.py:1642 -- Started a local Ray instance.\n" + "ResumableTextPipeline, current on tiny_c4_sample.jsonl: 0%| | 0/1 [00:00 TaskPoolMapOperator[ReadText->SplitBlocks(20)] -> TaskPoolMapOperator[Map(convert_json)->Map()]\n", - "2023-10-11 18:11:34,576\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", - "2023-10-11 18:11:34,582\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + "ResumableTextPipeline, current on tiny_c4_sample.jsonl: 100%|██████████| 1/1 [00:21<00:00, 21.74s/it]" ] }, { - "output_type": "display_data", - "data": { - "text/plain": [ - "Running 0: 0%| | 0/400 [00:00Map() pid=1685)\u001b[0m 2023-10-11 18:11:46.345224: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n", - "2023-10-11 18:11:50,723\tWARNING plan.py:567 -- Warning: The Ray cluster currently does not have any available CPUs. The Dataset job will hang unless more CPUs are freed up. A common reason is that cluster resources are used by Actors or Tune trials; see the following link for more details: https://docs.ray.io/en/master/data/dataset-internals.html#datasets-and-tune\n" + "\n" ] - }, + } + ], + "source": [ + "# plugin into pipeline\n", + "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", + "from pyrecdp.primitives.operations import *\n", + "\n", + "pipeline = ResumableTextPipeline()\n", + "pipeline.enable_statistics()\n", + "ops = [\n", + " JsonlReader(\"/content/test_data\"),\n", + " TextQualityScorer(),\n", + " TextCustomerFilter(cond, text_key='doc_score'),\n", + " PerfileParquetWriter(\"ResumableTextPipeline_output\")\n", + "]\n", + "pipeline.add_operations(ops)\n", + "pipeline.execute()\n", + "del pipeline" + ] + }, + { + "cell_type": "code", + "source": [ + "# View output\n", + "! ls ResumableTextPipeline_output" + ], + "metadata": { + "id": "MumDgk0TL4jH", + "outputId": "b3fd0240-9c4b-4ece-e352-e9a0aed5b14d", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "id": "MumDgk0TL4jH", + "execution_count": 6, + "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "execute with ray took 17.940069602999984 sec\n" + "pipeline.json pipeline.log status.log tiny_c4_sample.jsonl\n" ] - }, + } + ] + }, + { + "cell_type": "code", + "source": [ + "# After Filter\n", + "import pandas as pd\n", + "pd.read_parquet(\"ResumableTextPipeline_output/tiny_c4_sample.jsonl\")" + ], + "metadata": { + "id": "pRljCRLlL3D9", + "outputId": "d6d12af1-1a2d-4d6e-c427-18deab7cd13a", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 424 + } + }, + "id": "pRljCRLlL3D9", + "execution_count": 7, + "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - " meta \\\n", - "0 {'APPLICATION_ID': 100065} \n", - "1 {'APPLICATION_ID': 100066} \n", - "2 {'APPLICATION_ID': 100067} \n", - "3 {'APPLICATION_ID': 100068} \n", - "4 {'APPLICATION_ID': 100069} \n", - "... ... \n", - "9995 {'APPLICATION_ID': 2120612} \n", - "9996 {'APPLICATION_ID': 2120613} \n", - "9997 {'APPLICATION_ID': 2120616} \n", - "9998 {'APPLICATION_ID': 2120620} \n", - "9999 {'APPLICATION_ID': 2120624} \n", - "\n", - " text bytesize \n", - "0 The National Domestic Violence Hotline (NDVH) ... 1460 \n", - "1 The Office of Planning, Research and Evaluatio... 3181 \n", - "2 Improving outcomes for low-income fathers and ... 1777 \n", - "3 This project is implementing 36-month follow-u... 1760 \n", - "4 The CCDF Policies Database is a source of info... 2157 \n", - "... ... ... \n", - "9995 Project: Research and produce a videotape that... 1241 \n", - "9996 While relapse prevention has been studied and ... 1281 \n", - "9997 The proposed study on recruitment, adherence a... 2867 \n", - "9998 Recent studies suggest that HIV epidemics are ... 2424 \n", - "9999 The overall goal of this study is to develop a... 1463 \n", - "\n", - "[10000 rows x 3 columns]" + " text \\\n", + "0 It is possible to love someone who does not lo... \n", + "1 Canon PIXMA TS9520 All-in-One Print / Scan / C... \n", + "2 For those who plan on buying an iPad this Satu... \n", + "3 After tipping 25 tokens in a day, you'll be ab... \n", + "4 When cute redhead Lola Fae gets caught flickin... \n", + ".. ... \n", + "305 This dark haired angel really loves to play wi... \n", + "306 Who were the first two guys in the scene. The ... \n", + "307 Home / Business / #Exploitation: Coca Cola is ... \n", + "308 Here's a brief schedule for 2016 as requested ... \n", + "309 It spreads like a wild fire. “It can never hap... \n", + "\n", + " meta source_id \\\n", + "0 {\"timestamp\":\"2019-04-23T06:32:35Z\",\"url\":\"htt... tiny_c4_sample.jsonl \n", + "1 {\"timestamp\":\"2019-04-25T17:03:36Z\",\"url\":\"htt... tiny_c4_sample.jsonl \n", + "2 {\"timestamp\":\"2019-04-22T22:39:52Z\",\"url\":\"htt... tiny_c4_sample.jsonl \n", + "3 {\"timestamp\":\"2019-04-20T00:25:13Z\",\"url\":\"htt... tiny_c4_sample.jsonl \n", + "4 {\"timestamp\":\"2019-04-19T10:57:45Z\",\"url\":\"htt... tiny_c4_sample.jsonl \n", + ".. ... ... \n", + "305 {\"timestamp\":\"2019-04-25T17:41:41Z\",\"url\":\"htt... tiny_c4_sample.jsonl \n", + "306 {\"timestamp\":\"2019-04-23T06:35:03Z\",\"url\":\"htt... tiny_c4_sample.jsonl \n", + "307 {\"timestamp\":\"2019-04-24T18:04:45Z\",\"url\":\"htt... tiny_c4_sample.jsonl \n", + "308 {\"timestamp\":\"2019-04-18T10:15:11Z\",\"url\":\"htt... tiny_c4_sample.jsonl \n", + "309 {\"timestamp\":\"2019-04-22T18:51:33Z\",\"url\":\"htt... tiny_c4_sample.jsonl \n", + "\n", + " doc_score should_keep \n", + "0 0.999997 1 \n", + "1 0.941116 1 \n", + "2 0.999765 1 \n", + "3 0.939119 1 \n", + "4 0.907368 1 \n", + ".. ... ... \n", + "305 0.904412 1 \n", + "306 0.908248 1 \n", + "307 0.998307 1 \n", + "308 0.999769 1 \n", + "309 0.999995 1 \n", + "\n", + "[310 rows x 5 columns]" ], "text/html": [ "\n", - "
\n", + "
\n", "
\n", "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
metatextbytesize
0{'APPLICATION_ID': 100065}The National Domestic Violence Hotline (NDVH) ...1460
1{'APPLICATION_ID': 100066}The Office of Planning, Research and Evaluatio...3181
2{'APPLICATION_ID': 100067}Improving outcomes for low-income fathers and ...1777
3{'APPLICATION_ID': 100068}This project is implementing 36-month follow-u...1760
4{'APPLICATION_ID': 100069}The CCDF Policies Database is a source of info...2157
............
9995{'APPLICATION_ID': 2120612}Project: Research and produce a videotape that...1241
9996{'APPLICATION_ID': 2120613}While relapse prevention has been studied and ...1281
9997{'APPLICATION_ID': 2120616}The proposed study on recruitment, adherence a...2867
9998{'APPLICATION_ID': 2120620}Recent studies suggest that HIV epidemics are ...2424
9999{'APPLICATION_ID': 2120624}The overall goal of this study is to develop a...1463
\n", - "

10000 rows × 3 columns

\n", - "
\n", - "
\n", - "\n", - "
\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "
\n", - "\n", - "\n", - "
\n", - " \n", - "\n", - "\n", - "\n", - " \n", - "
\n", - "
\n", - "
\n" - ] - }, - "metadata": {} - } - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "81NiajWFTy2n", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 458 - }, - "id": "81NiajWFTy2n", - "outputId": "db70e3fb-8033-4c08-b58b-b24c4e87aa42" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Will assign 1 cores and 10386 M memory for spark\n", - "per core memory size is 10.143 GB and shuffle_disk maximum capacity is 8589934592.000 GB\n" - ] - }, - { - "output_type": "display_data", - "data": { - "text/plain": [ - " text \\\n", - "0 The National Domestic Violence Hotline (NDVH) ... \n", - "1 The Office of Planning, Research and Evaluatio... \n", - "2 Improving outcomes for low-income fathers and ... \n", - "3 This project is implementing 36-month follow-u... \n", - "4 The CCDF Policies Database is a source of info... \n", - "... ... \n", - "9995 Project: Research and produce a videotape that... \n", - "9996 While relapse prevention has been studied and ... \n", - "9997 The proposed study on recruitment, adherence a... \n", - "9998 Recent studies suggest that HIV epidemics are ... \n", - "9999 The overall goal of this study is to develop a... \n", - "\n", - " meta bytesize \n", - "0 {\"APPLICATION_ID\":100065} 1460 \n", - "1 {\"APPLICATION_ID\":100066} 3181 \n", - "2 {\"APPLICATION_ID\":100067} 1777 \n", - "3 {\"APPLICATION_ID\":100068} 1760 \n", - "4 {\"APPLICATION_ID\":100069} 2157 \n", - "... ... ... \n", - "9995 {\"APPLICATION_ID\":2120612} 1241 \n", - "9996 {\"APPLICATION_ID\":2120613} 1281 \n", - "9997 {\"APPLICATION_ID\":2120616} 2867 \n", - "9998 {\"APPLICATION_ID\":2120620} 2424 \n", - "9999 {\"APPLICATION_ID\":2120624} 1463 \n", - "\n", - "[10000 rows x 3 columns]" - ], - "text/html": [ - "\n", - "
\n", - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
textmetabytesize
0The National Domestic Violence Hotline (NDVH) ...{\"APPLICATION_ID\":100065}1460
1The Office of Planning, Research and Evaluatio...{\"APPLICATION_ID\":100066}3181
2Improving outcomes for low-income fathers and ...{\"APPLICATION_ID\":100067}1777
3This project is implementing 36-month follow-u...{\"APPLICATION_ID\":100068}1760
4The CCDF Policies Database is a source of info...{\"APPLICATION_ID\":100069}2157
............
9995Project: Research and produce a videotape that...{\"APPLICATION_ID\":2120612}1241
9996While relapse prevention has been studied and ...{\"APPLICATION_ID\":2120613}1281
9997The proposed study on recruitment, adherence a...{\"APPLICATION_ID\":2120616}2867
9998Recent studies suggest that HIV epidemics are ...{\"APPLICATION_ID\":2120620}2424
9999The overall goal of this study is to develop a...{\"APPLICATION_ID\":2120624}1463
\n", - "

10000 rows × 3 columns

\n", - "
\n", - "
\n", - "\n", - "
\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "
\n", - "\n", - "\n", - "
\n", - " \n", - "\n", - "\n", - "\n", - " \n", - "
\n", - "
\n", - "
\n" - ] - }, - "metadata": {} - } - ], - "source": [ - "# Spark mode\n", - "\n", - "from pyrecdp.primitives.operations import *\n", - "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", - "\n", - "op = TextBytesize()\n", - "with SparkContext(\"/content/test_data/\") as ctx:\n", - " ctx.show(op.process_spark(ctx.spark, ctx.ds))" - ] - } - ], - "metadata": { - "colab": { - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", @@ -1538,694 +1165,6 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" - }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "2f6ad7bbc0964d7696c7dec5d0e66f44": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_60dd954b33414adfabf772f49ea2f3a2", - "IPY_MODEL_93697baecfd442fa8d8db709cfc82eee", - "IPY_MODEL_77548643af8d430db70bfb0af3707f91" - ], - "layout": "IPY_MODEL_92f4fcc6115c4f809c15b942ca0d11d4" - } - }, - "60dd954b33414adfabf772f49ea2f3a2": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_90a32f5a48a74578bad33421c0e1599c", - "placeholder": "​", - "style": "IPY_MODEL_ec2613a4e1c04b2789a4ca8a257bda53", - "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 0.0 MiB/1.9 GiB object_store_memory: 100%" - } - }, - "93697baecfd442fa8d8db709cfc82eee": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_f955ca8d9b9e451791a5aa53bb984a71", - "max": 400, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_0d52219723f944eb8b34e5aee50298be", - "value": 20 - } - }, - "77548643af8d430db70bfb0af3707f91": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_58951323a0804ad8ad9d68dd4292f35f", - "placeholder": "​", - "style": "IPY_MODEL_c9d153b598854d0686849b48f84aa01e", - "value": " 20/20 [00:16<00:00, 5.89it/s]" - } - }, - "92f4fcc6115c4f809c15b942ca0d11d4": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": "hidden", - "width": null - } - }, - "90a32f5a48a74578bad33421c0e1599c": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "ec2613a4e1c04b2789a4ca8a257bda53": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "f955ca8d9b9e451791a5aa53bb984a71": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "0d52219723f944eb8b34e5aee50298be": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "58951323a0804ad8ad9d68dd4292f35f": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "c9d153b598854d0686849b48f84aa01e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "41fbe06aba494f75ba11aeaf3fd6fa94": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_2784ff8eb12c471eac0c335cc3169c5c", - "IPY_MODEL_de524508eb0947749b3f13c6710f1dbb", - "IPY_MODEL_dbe163714118476e98ec10efc2e6f1e1" - ], - "layout": "IPY_MODEL_1dc281fa098a40f6a07af047f0edd1a9" - } - }, - "2784ff8eb12c471eac0c335cc3169c5c": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_789f99f9724442d59f05be15b3231888", - "placeholder": "​", - "style": "IPY_MODEL_bc776eb0348c49348497687be7316166", - "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 1.08 MiB/1.9 GiB object_store_memory: 100%" - } - }, - "de524508eb0947749b3f13c6710f1dbb": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_05302bd682724596bf8a61dbca5ae2e4", - "max": 400, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_81f6b801a20c4f5c9ab21fc0dbccbd5d", - "value": 20 - } - }, - "dbe163714118476e98ec10efc2e6f1e1": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_c96dd696d0a84e8485b705750be517d7", - "placeholder": "​", - "style": "IPY_MODEL_61d3c42680814b0a95ccfac427d5c553", - "value": " 20/20 [00:04<00:00, 7.92it/s]" - } - }, - "1dc281fa098a40f6a07af047f0edd1a9": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": "hidden", - "width": null - } - }, - "789f99f9724442d59f05be15b3231888": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "bc776eb0348c49348497687be7316166": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "05302bd682724596bf8a61dbca5ae2e4": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "81f6b801a20c4f5c9ab21fc0dbccbd5d": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "c96dd696d0a84e8485b705750be517d7": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "61d3c42680814b0a95ccfac427d5c553": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - } - } } }, "nbformat": 4, diff --git a/RecDP/examples/notebooks/llmutils/custom_map.ipynb b/RecDP/examples/notebooks/llmutils/custom_map.ipynb index 936cb3659..c68d17ecd 100644 --- a/RecDP/examples/notebooks/llmutils/custom_map.ipynb +++ b/RecDP/examples/notebooks/llmutils/custom_map.ipynb @@ -7,15 +7,9 @@ "id": "NUdnJWOJLGvF" }, "source": [ - "# RecDP LLM - TextBytesize\n", + "# RecDP LLM - User Defined Map Function\n", "\n", - "TextBytesize is a tool to get total byte size of text in the data.\n", - "\n", - "### We support two types of input and output:\n", - "\n", - "example 1:\n", - "* Expect Input format: a folder of *.jsonl.\n", - "* Expect Output format: a folder of *.jsonl after reduction." + "Support to plugin user defined function to pipeline and run with ray or spark" ] }, { @@ -64,40 +58,17 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a", "metadata": { - "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "d326b334-d005-42e1-ee4e-619d9c0b388b" + "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a" }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "/content/test_data\n", - "--2023-10-11 18:10:37-- https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/PILE/NIH_sample.jsonl\n", - "Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.108.133, 185.199.109.133, 185.199.110.133, ...\n", - "Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.108.133|:443... connected.\n", - "HTTP request sent, awaiting response... 200 OK\n", - "Length: 21626664 (21M) [text/plain]\n", - "Saving to: ‘/content/test_data/NIH_sample.jsonl’\n", - "\n", - "NIH_sample.jsonl 100%[===================>] 20.62M 114MB/s in 0.2s \n", - "\n", - "2023-10-11 18:10:38 (114 MB/s) - ‘/content/test_data/NIH_sample.jsonl’ saved [21626664/21626664]\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "%mkdir -p /content/test_data\n", "%cd /content/test_data\n", "file_names = ['NIH_sample.jsonl']\n", - "file_list = [f\"https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/PILE/{i}\" for i in file_names]\n", + "file_list = [f\"https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/tiny_c4_sample.jsonl\" for i in file_names]\n", "!wget -P /content/test_data {\" \".join(file_list)}" ] }, @@ -108,7 +79,7 @@ "id": "J-125gFtNyOg" }, "source": [ - "## 3. get bytesize" + "## 3. User Defined Function" ] }, { @@ -120,14 +91,14 @@ "base_uri": "https://localhost:8080/" }, "id": "vkGRn9uJN4B0", - "outputId": "fb931ee0-a81c-414e-aa6c-60b3db1ab4cd" + "outputId": "98ebbaf0-d853-4dd0-b5a7-eafd1717e40e" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "NIH_sample.jsonl\n" + "tiny_c4_sample.jsonl\n" ] } ], @@ -147,29 +118,46 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "id": "SMK9KcV4N7al", "metadata": { + "id": "SMK9KcV4N7al" + }, + "outputs": [], + "source": [ + "# Define your own function\n", + "def classify(text):\n", + " return 1 if text > 0.8 else 0" + ] + }, + { + "cell_type": "code", + "source": [ + "# plugin into pipeline\n", + "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", + "from pyrecdp.primitives.operations import *\n", + "\n", + "pipeline = ResumableTextPipeline()\n", + "ops = [\n", + " JsonlReader(\"/content/test_data\"),\n", + " TextQualityScorer(),\n", + " TextCustomerMap(classify, text_key='doc_score'),\n", + " PerfileParquetWriter(\"ResumableTextPipeline_output\")\n", + "]\n", + "pipeline.add_operations(ops)\n", + "pipeline.execute()\n", + "del pipeline" + ], + "metadata": { + "id": "KeVkLyrRBJ0d", + "outputId": "64e52513-5729-45c4-adda-4daff6b5e59f", "colab": { "base_uri": "https://localhost:8080/", - "height": 704, - "referenced_widgets": [ - "2f6ad7bbc0964d7696c7dec5d0e66f44", - "60dd954b33414adfabf772f49ea2f3a2", - "93697baecfd442fa8d8db709cfc82eee", - "77548643af8d430db70bfb0af3707f91", - "92f4fcc6115c4f809c15b942ca0d11d4", - "90a32f5a48a74578bad33421c0e1599c", - "ec2613a4e1c04b2789a4ca8a257bda53", - "f955ca8d9b9e451791a5aa53bb984a71", - "0d52219723f944eb8b34e5aee50298be", - "58951323a0804ad8ad9d68dd4292f35f", - "c9d153b598854d0686849b48f84aa01e" - ] - }, - "id": "SMK9KcV4N7al", - "outputId": "17b2f0cc-92f7-4ff5-bdb0-7d3fb338c305" + "height": 191 + } }, + "id": "KeVkLyrRBJ0d", + "execution_count": 5, "outputs": [ { "output_type": "stream", @@ -245,99 +233,139 @@ "output_type": "stream", "name": "stdout", "text": [ - "init ray\n", - "init ray with total mem of 8167961395, total core of 1\n" + "Will assign 1 cores and 10386 M memory for spark\n", + "per core memory size is 10.143 GB and shuffle_disk maximum capacity is 8589934592.000 GB\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ - "2023-10-11 18:11:28,068\tWARNING services.py:1889 -- WARNING: The object store is using /tmp instead of /dev/shm because /dev/shm has only 6133121024 bytes available. This will harm performance! You may be able to free up space by deleting files in /dev/shm. If you are inside a Docker container, you can increase /dev/shm size by passing '--shm-size=8.37gb' to 'docker run' (or add it to the run_options list in a Ray cluster config). Make sure to set this to more than 30% of available RAM.\n", - "2023-10-11 18:11:29,354\tINFO worker.py:1642 -- Started a local Ray instance.\n" + "ResumableTextPipeline, current on tiny_c4_sample.jsonl: 0%| | 0/1 [00:00 TaskPoolMapOperator[ReadText->SplitBlocks(20)] -> TaskPoolMapOperator[Map(convert_json)->Map()]\n", - "2023-10-11 18:11:34,576\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", - "2023-10-11 18:11:34,582\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + "ResumableTextPipeline, current on tiny_c4_sample.jsonl: 100%|██████████| 1/1 [00:24<00:00, 24.62s/it]" ] }, { - "output_type": "display_data", - "data": { - "text/plain": [ - "Running 0: 0%| | 0/400 [00:00Map() pid=1685)\u001b[0m 2023-10-11 18:11:46.345224: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n", - "2023-10-11 18:11:50,723\tWARNING plan.py:567 -- Warning: The Ray cluster currently does not have any available CPUs. The Dataset job will hang unless more CPUs are freed up. A common reason is that cluster resources are used by Actors or Tune trials; see the following link for more details: https://docs.ray.io/en/master/data/dataset-internals.html#datasets-and-tune\n" + "\n" ] - }, + } + ] + }, + { + "cell_type": "code", + "source": [ + "# View output\n", + "! ls ResumableTextPipeline_output" + ], + "metadata": { + "id": "BA5uiJPlBdzt", + "outputId": "c59bcacd-5994-4f13-b47a-d9a04017b9b3", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "id": "BA5uiJPlBdzt", + "execution_count": 7, + "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "execute with ray took 17.940069602999984 sec\n" + "pipeline.json pipeline.log status.log tiny_c4_sample.jsonl\n" ] - }, + } + ] + }, + { + "cell_type": "code", + "source": [ + "import pandas as pd\n", + "pd.read_parquet(\"ResumableTextPipeline_output/tiny_c4_sample.jsonl\")" + ], + "metadata": { + "id": "8LKIxfkIBaIs", + "outputId": "8a834079-7baa-4523-d9aa-1b986e761fc5", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 424 + } + }, + "id": "8LKIxfkIBaIs", + "execution_count": 9, + "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - " meta \\\n", - "0 {'APPLICATION_ID': 100065} \n", - "1 {'APPLICATION_ID': 100066} \n", - "2 {'APPLICATION_ID': 100067} \n", - "3 {'APPLICATION_ID': 100068} \n", - "4 {'APPLICATION_ID': 100069} \n", - "... ... \n", - "9995 {'APPLICATION_ID': 2120612} \n", - "9996 {'APPLICATION_ID': 2120613} \n", - "9997 {'APPLICATION_ID': 2120616} \n", - "9998 {'APPLICATION_ID': 2120620} \n", - "9999 {'APPLICATION_ID': 2120624} \n", - "\n", - " text bytesize \n", - "0 The National Domestic Violence Hotline (NDVH) ... 1460 \n", - "1 The Office of Planning, Research and Evaluatio... 3181 \n", - "2 Improving outcomes for low-income fathers and ... 1777 \n", - "3 This project is implementing 36-month follow-u... 1760 \n", - "4 The CCDF Policies Database is a source of info... 2157 \n", - "... ... ... \n", - "9995 Project: Research and produce a videotape that... 1241 \n", - "9996 While relapse prevention has been studied and ... 1281 \n", - "9997 The proposed study on recruitment, adherence a... 2867 \n", - "9998 Recent studies suggest that HIV epidemics are ... 2424 \n", - "9999 The overall goal of this study is to develop a... 1463 \n", - "\n", - "[10000 rows x 3 columns]" + " text \\\n", + "0 lorazepam nombre comercial mexico From an inte... \n", + "1 It is possible to love someone who does not lo... \n", + "2 Canon PIXMA TS9520 All-in-One Print / Scan / C... \n", + "3 For those who plan on buying an iPad this Satu... \n", + "4 After tipping 25 tokens in a day, you'll be ab... \n", + ".. ... \n", + "444 Sunrise is an equal opportunity employer. Vete... \n", + "445 Home / Business / #Exploitation: Coca Cola is ... \n", + "446 I got really surprised when I saw that I recei... \n", + "447 Here's a brief schedule for 2016 as requested ... \n", + "448 It spreads like a wild fire. “It can never hap... \n", + "\n", + " meta source_id \\\n", + "0 {\"timestamp\":\"2019-04-24T02:17:53Z\",\"url\":\"htt... tiny_c4_sample.jsonl \n", + "1 {\"timestamp\":\"2019-04-23T06:32:35Z\",\"url\":\"htt... tiny_c4_sample.jsonl \n", + "2 {\"timestamp\":\"2019-04-25T17:03:36Z\",\"url\":\"htt... tiny_c4_sample.jsonl \n", + "3 {\"timestamp\":\"2019-04-22T22:39:52Z\",\"url\":\"htt... tiny_c4_sample.jsonl \n", + "4 {\"timestamp\":\"2019-04-20T00:25:13Z\",\"url\":\"htt... tiny_c4_sample.jsonl \n", + ".. ... ... \n", + "444 {\"timestamp\":\"2019-04-22T10:28:15Z\",\"url\":\"htt... tiny_c4_sample.jsonl \n", + "445 {\"timestamp\":\"2019-04-24T18:04:45Z\",\"url\":\"htt... tiny_c4_sample.jsonl \n", + "446 {\"timestamp\":\"2019-04-26T08:57:28Z\",\"url\":\"htt... tiny_c4_sample.jsonl \n", + "447 {\"timestamp\":\"2019-04-18T10:15:11Z\",\"url\":\"htt... tiny_c4_sample.jsonl \n", + "448 {\"timestamp\":\"2019-04-22T18:51:33Z\",\"url\":\"htt... tiny_c4_sample.jsonl \n", + "\n", + " doc_score should_keep classify_text \n", + "0 0.139534 0 0 \n", + "1 0.999997 1 1 \n", + "2 0.941116 1 1 \n", + "3 0.999765 1 1 \n", + "4 0.939119 1 1 \n", + ".. ... ... ... \n", + "444 0.834727 0 1 \n", + "445 0.998307 1 1 \n", + "446 0.864012 1 1 \n", + "447 0.999769 1 1 \n", + "448 0.999995 1 1 \n", + "\n", + "[449 rows x 6 columns]" ], "text/html": [ "\n", - "
\n", + "
\n", "
\n", "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
metatextbytesize
0{'APPLICATION_ID': 100065}The National Domestic Violence Hotline (NDVH) ...1460
1{'APPLICATION_ID': 100066}The Office of Planning, Research and Evaluatio...3181
2{'APPLICATION_ID': 100067}Improving outcomes for low-income fathers and ...1777
3{'APPLICATION_ID': 100068}This project is implementing 36-month follow-u...1760
4{'APPLICATION_ID': 100069}The CCDF Policies Database is a source of info...2157
............
9995{'APPLICATION_ID': 2120612}Project: Research and produce a videotape that...1241
9996{'APPLICATION_ID': 2120613}While relapse prevention has been studied and ...1281
9997{'APPLICATION_ID': 2120616}The proposed study on recruitment, adherence a...2867
9998{'APPLICATION_ID': 2120620}Recent studies suggest that HIV epidemics are ...2424
9999{'APPLICATION_ID': 2120624}The overall goal of this study is to develop a...1463
\n", - "

10000 rows × 3 columns

\n", - "
\n", - "
\n", - "\n", - "
\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "
\n", - "\n", - "\n", - "
\n", - " \n", - "\n", - "\n", - "\n", - " \n", - "
\n", - "
\n", - "
\n" - ] - }, - "metadata": {} - } - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "81NiajWFTy2n", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 458 - }, - "id": "81NiajWFTy2n", - "outputId": "db70e3fb-8033-4c08-b58b-b24c4e87aa42" - }, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Will assign 1 cores and 10386 M memory for spark\n", - "per core memory size is 10.143 GB and shuffle_disk maximum capacity is 8589934592.000 GB\n" - ] - }, - { - "output_type": "display_data", - "data": { - "text/plain": [ - " text \\\n", - "0 The National Domestic Violence Hotline (NDVH) ... \n", - "1 The Office of Planning, Research and Evaluatio... \n", - "2 Improving outcomes for low-income fathers and ... \n", - "3 This project is implementing 36-month follow-u... \n", - "4 The CCDF Policies Database is a source of info... \n", - "... ... \n", - "9995 Project: Research and produce a videotape that... \n", - "9996 While relapse prevention has been studied and ... \n", - "9997 The proposed study on recruitment, adherence a... \n", - "9998 Recent studies suggest that HIV epidemics are ... \n", - "9999 The overall goal of this study is to develop a... \n", - "\n", - " meta bytesize \n", - "0 {\"APPLICATION_ID\":100065} 1460 \n", - "1 {\"APPLICATION_ID\":100066} 3181 \n", - "2 {\"APPLICATION_ID\":100067} 1777 \n", - "3 {\"APPLICATION_ID\":100068} 1760 \n", - "4 {\"APPLICATION_ID\":100069} 2157 \n", - "... ... ... \n", - "9995 {\"APPLICATION_ID\":2120612} 1241 \n", - "9996 {\"APPLICATION_ID\":2120613} 1281 \n", - "9997 {\"APPLICATION_ID\":2120616} 2867 \n", - "9998 {\"APPLICATION_ID\":2120620} 2424 \n", - "9999 {\"APPLICATION_ID\":2120624} 1463 \n", - "\n", - "[10000 rows x 3 columns]" - ], - "text/html": [ - "\n", - "
\n", - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
textmetabytesize
0The National Domestic Violence Hotline (NDVH) ...{\"APPLICATION_ID\":100065}1460
1The Office of Planning, Research and Evaluatio...{\"APPLICATION_ID\":100066}3181
2Improving outcomes for low-income fathers and ...{\"APPLICATION_ID\":100067}1777
3This project is implementing 36-month follow-u...{\"APPLICATION_ID\":100068}1760
4The CCDF Policies Database is a source of info...{\"APPLICATION_ID\":100069}2157
............
9995Project: Research and produce a videotape that...{\"APPLICATION_ID\":2120612}1241
9996While relapse prevention has been studied and ...{\"APPLICATION_ID\":2120613}1281
9997The proposed study on recruitment, adherence a...{\"APPLICATION_ID\":2120616}2867
9998Recent studies suggest that HIV epidemics are ...{\"APPLICATION_ID\":2120620}2424
9999The overall goal of this study is to develop a...{\"APPLICATION_ID\":2120624}1463
\n", - "

10000 rows × 3 columns

\n", - "
\n", - "
\n", - "\n", - "
\n", - " \n", - "\n", - " \n", - "\n", - " \n", - "
\n", - "\n", - "\n", - "
\n", - " \n", - "\n", - "\n", - "\n", - " \n", - "
\n", - "
\n", - "
\n" - ] - }, - "metadata": {} - } - ], - "source": [ - "# Spark mode\n", - "\n", - "from pyrecdp.primitives.operations import *\n", - "from pyrecdp.LLM import TextPipeline, ResumableTextPipeline\n", - "\n", - "op = TextBytesize()\n", - "with SparkContext(\"/content/test_data/\") as ctx:\n", - " ctx.show(op.process_spark(ctx.spark, ctx.ds))" - ] - } - ], - "metadata": { - "colab": { - "provenance": [] - }, - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", @@ -1538,694 +732,6 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" - }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "2f6ad7bbc0964d7696c7dec5d0e66f44": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_60dd954b33414adfabf772f49ea2f3a2", - "IPY_MODEL_93697baecfd442fa8d8db709cfc82eee", - "IPY_MODEL_77548643af8d430db70bfb0af3707f91" - ], - "layout": "IPY_MODEL_92f4fcc6115c4f809c15b942ca0d11d4" - } - }, - "60dd954b33414adfabf772f49ea2f3a2": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_90a32f5a48a74578bad33421c0e1599c", - "placeholder": "​", - "style": "IPY_MODEL_ec2613a4e1c04b2789a4ca8a257bda53", - "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 0.0 MiB/1.9 GiB object_store_memory: 100%" - } - }, - "93697baecfd442fa8d8db709cfc82eee": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_f955ca8d9b9e451791a5aa53bb984a71", - "max": 400, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_0d52219723f944eb8b34e5aee50298be", - "value": 20 - } - }, - "77548643af8d430db70bfb0af3707f91": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_58951323a0804ad8ad9d68dd4292f35f", - "placeholder": "​", - "style": "IPY_MODEL_c9d153b598854d0686849b48f84aa01e", - "value": " 20/20 [00:16<00:00, 5.89it/s]" - } - }, - "92f4fcc6115c4f809c15b942ca0d11d4": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": "hidden", - "width": null - } - }, - "90a32f5a48a74578bad33421c0e1599c": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "ec2613a4e1c04b2789a4ca8a257bda53": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "f955ca8d9b9e451791a5aa53bb984a71": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "0d52219723f944eb8b34e5aee50298be": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "58951323a0804ad8ad9d68dd4292f35f": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "c9d153b598854d0686849b48f84aa01e": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "41fbe06aba494f75ba11aeaf3fd6fa94": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HBoxModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HBoxModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HBoxView", - "box_style": "", - "children": [ - "IPY_MODEL_2784ff8eb12c471eac0c335cc3169c5c", - "IPY_MODEL_de524508eb0947749b3f13c6710f1dbb", - "IPY_MODEL_dbe163714118476e98ec10efc2e6f1e1" - ], - "layout": "IPY_MODEL_1dc281fa098a40f6a07af047f0edd1a9" - } - }, - "2784ff8eb12c471eac0c335cc3169c5c": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_789f99f9724442d59f05be15b3231888", - "placeholder": "​", - "style": "IPY_MODEL_bc776eb0348c49348497687be7316166", - "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 1.08 MiB/1.9 GiB object_store_memory: 100%" - } - }, - "de524508eb0947749b3f13c6710f1dbb": { - "model_module": "@jupyter-widgets/controls", - "model_name": "FloatProgressModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "FloatProgressModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "ProgressView", - "bar_style": "", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_05302bd682724596bf8a61dbca5ae2e4", - "max": 400, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_81f6b801a20c4f5c9ab21fc0dbccbd5d", - "value": 20 - } - }, - "dbe163714118476e98ec10efc2e6f1e1": { - "model_module": "@jupyter-widgets/controls", - "model_name": "HTMLModel", - "model_module_version": "1.5.0", - "state": { - "_dom_classes": [], - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "HTMLModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/controls", - "_view_module_version": "1.5.0", - "_view_name": "HTMLView", - "description": "", - "description_tooltip": null, - "layout": "IPY_MODEL_c96dd696d0a84e8485b705750be517d7", - "placeholder": "​", - "style": "IPY_MODEL_61d3c42680814b0a95ccfac427d5c553", - "value": " 20/20 [00:04<00:00, 7.92it/s]" - } - }, - "1dc281fa098a40f6a07af047f0edd1a9": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": "hidden", - "width": null - } - }, - "789f99f9724442d59f05be15b3231888": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "bc776eb0348c49348497687be7316166": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - }, - "05302bd682724596bf8a61dbca5ae2e4": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "81f6b801a20c4f5c9ab21fc0dbccbd5d": { - "model_module": "@jupyter-widgets/controls", - "model_name": "ProgressStyleModel", - "model_module_version": "1.5.0", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "ProgressStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "bar_color": null, - "description_width": "" - } - }, - "c96dd696d0a84e8485b705750be517d7": { - "model_module": "@jupyter-widgets/base", - "model_name": "LayoutModel", - "model_module_version": "1.2.0", - "state": { - "_model_module": "@jupyter-widgets/base", - "_model_module_version": "1.2.0", - "_model_name": "LayoutModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "LayoutView", - "align_content": null, - "align_items": null, - "align_self": null, - "border": null, - "bottom": null, - "display": null, - "flex": null, - "flex_flow": null, - "grid_area": null, - "grid_auto_columns": null, - "grid_auto_flow": null, - "grid_auto_rows": null, - "grid_column": null, - "grid_gap": null, - "grid_row": null, - "grid_template_areas": null, - "grid_template_columns": null, - "grid_template_rows": null, - "height": null, - "justify_content": null, - "justify_items": null, - "left": null, - "margin": null, - "max_height": null, - "max_width": null, - "min_height": null, - "min_width": null, - "object_fit": null, - "object_position": null, - "order": null, - "overflow": null, - "overflow_x": null, - "overflow_y": null, - "padding": null, - "right": null, - "top": null, - "visibility": null, - "width": null - } - }, - "61d3c42680814b0a95ccfac427d5c553": { - "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", - "model_module_version": "1.5.0", - "state": { - "_model_module": "@jupyter-widgets/controls", - "_model_module_version": "1.5.0", - "_model_name": "DescriptionStyleModel", - "_view_count": null, - "_view_module": "@jupyter-widgets/base", - "_view_module_version": "1.2.0", - "_view_name": "StyleView", - "description_width": "" - } - } - } } }, "nbformat": 4, From 3e3e65b93ea8aada9c13ef3fdb24f4bccc6dc95f Mon Sep 17 00:00:00 2001 From: ChaoJun Zhang Date: Sat, 14 Oct 2023 01:24:11 +0800 Subject: [PATCH 15/47] [v1.2][ISSUE-306] Turn off ner detection to improve performance (#386) * performance improve for pii remove via disable NER by default * Update text_pii_remove.py fix settings in PIIRemoval --------- Co-authored-by: Chendi.Xue --- .../primitives/llmutils/pii/detect/utils.py | 19 ++- .../primitives/llmutils/pii/pii_detection.py | 5 +- .../pyrecdp/primitives/llmutils/pii_remove.py | 115 +++++------------- .../primitives/operations/text_pii_remove.py | 33 ++--- 4 files changed, 66 insertions(+), 106 deletions(-) diff --git a/RecDP/pyrecdp/primitives/llmutils/pii/detect/utils.py b/RecDP/pyrecdp/primitives/llmutils/pii/detect/utils.py index 55a618c26..2143a96e0 100644 --- a/RecDP/pyrecdp/primitives/llmutils/pii/detect/utils.py +++ b/RecDP/pyrecdp/primitives/llmutils/pii/detect/utils.py @@ -9,5 +9,20 @@ class PIIEntityType(Enum): PASSWORD = auto() @classmethod - def all(cls): - return [member for name, member in PIIEntityType.__members__.items()] + def default(cls): + return [PIIEntityType.IP_ADDRESS,PIIEntityType.EMAIL,PIIEntityType.PHONE_NUMBER] + + @classmethod + def parse(cls, entity): + if "name" == entity: + return PIIEntityType.NAME + elif "password" == entity: + return PIIEntityType.PASSWORD + elif "email" == entity: + return PIIEntityType.EMAIL + elif "phone_number" == entity: + return PIIEntityType.PHONE_NUMBER + elif "ip" == entity: + return PIIEntityType.PHONE_NUMBER + else: + raise NotImplementedError(f" entity type {entity} is not supported!") diff --git a/RecDP/pyrecdp/primitives/llmutils/pii/pii_detection.py b/RecDP/pyrecdp/primitives/llmutils/pii/pii_detection.py index 797e225c4..4fa46e646 100644 --- a/RecDP/pyrecdp/primitives/llmutils/pii/pii_detection.py +++ b/RecDP/pyrecdp/primitives/llmutils/pii/pii_detection.py @@ -3,8 +3,8 @@ from .detect.phones_detection import detect_phones from .detect.name_password_detection import detect_name_password from .detect.utils import PIIEntityType -from transformers import Pipeline +from transformers import Pipeline from typing import List @@ -13,7 +13,7 @@ def scan_pii_text(text: str, pipeline: Pipeline, entity_types: List[PIIEntityTyp # use a regex to detect ip addresses if entity_types is None: - entity_types = PIIEntityType.all() + entity_types = PIIEntityType.default() if PIIEntityType.IP_ADDRESS in entity_types: result = result + detect_ip(text) @@ -24,7 +24,6 @@ def scan_pii_text(text: str, pipeline: Pipeline, entity_types: List[PIIEntityTyp if PIIEntityType.PHONE_NUMBER in entity_types: result = result + detect_phones(text) - # for phone number use phonenumbers tool if PIIEntityType.NAME in entity_types or PIIEntityType.PASSWORD in entity_types: result = result + detect_name_password(text, pipeline, entity_types) return result diff --git a/RecDP/pyrecdp/primitives/llmutils/pii_remove.py b/RecDP/pyrecdp/primitives/llmutils/pii_remove.py index c3c0250d1..be80beb58 100644 --- a/RecDP/pyrecdp/primitives/llmutils/pii_remove.py +++ b/RecDP/pyrecdp/primitives/llmutils/pii_remove.py @@ -1,5 +1,4 @@ import argparse -import logging from pyspark.sql.dataframe import DataFrame @@ -13,92 +12,38 @@ def pii_remove(dataset: DataFrame, model_root_path=None, text_column="text", sho return ret -def getArgs(): - parser = argparse.ArgumentParser(description="PII detection and redaction") - parser.add_argument( - "--input_format", - default="json", - type=str, - help="HF repo name/path of the dataset or file format if loading dataset from local", - ) - parser.add_argument( - "--input_path", - default="/root/arxiv_sample.jsonl", - type=str, - help="Data files to use.", - ) - parser.add_argument( - "--text_column", - default="text", - type=str, - help="Text column to use, if will be renamed to content", - ) +def main(config): + from pyrecdp.primitives.llmutils.pii.detect.utils import PIIEntityType - parser.add_argument( - "--output_format", - default="json", - type=str, - choices=["parquet", "json"], - help="The export format to save the processed output, default is arrow", - ) - - parser.add_argument( - "--output_path", - default="tmp", - type=str, - help="Path to save the processed output on disk", - ) - parser.add_argument( - "--spark_mode", - default="local", - type=str, - choices=["local", "yarn", "standalone", "ray"], - help="The spark mode to use", - ) - parser.add_argument( - "--spark_master", - type=str, - help="The network address of the machine that running the Spark master process", - ) - parser.add_argument( - "--num_instances", - default=4, - type=int, - help="Number of CPUs to use per worker", - ) - parser.add_argument( - "--keep_secret_column", - default=True, - type=bool, - help="Whether to add secret column in output file, this is useful for debug", - ) - # add an option of evaluating the pipeline on the PII benchmark we built - return parser.parse_args() - - -if __name__ == "__main__": - logger = logging.getLogger(__name__) - logger.setLevel(logging.INFO) - logging.basicConfig( - format="%(asctime)s - %(levelname)s - %(name)s - %(message)s", - datefmt="%m/%d/%Y %H:%M:%S", - level=logging.INFO, - handlers=[ - logging.FileHandler("pii.log"), - logging.StreamHandler() - ] - ) - - args = getArgs() - logger.info(f"** The job is running with the following arguments: **\n{args}\n **** ") + print(f"entity types: {args.entity_types}") + if config.entity_types is None or len(config.entity_types) == 0: + pii_entity_types = PIIEntityType.default() + else: + pii_entity_types = [PIIEntityType.parse(entity) for entity in config.entity_types] from pyrecdp.core import SparkDataProcessor - - sparkDP = SparkDataProcessor(spark_mode=args.spark_mode, spark_master=args.spark_master, - num_instances=args.num_instances) + sparkDP = SparkDataProcessor() spark = sparkDP.spark - input_dataset = spark.read.load(path=args.input_path, format=args.input_format) - output_dataset = pii_remove(input_dataset, text_column=args.text_column) - output_dataset.write.save(path=args.output_path, format=args.output_format, mode="overwrite") + input_dataset = spark.read.load(path=config.in_dir, format=config.input_format) + output_dataset = pii_remove(input_dataset, text_column=config.text_column, + model_root_path=config.model_root_path, inplace=True, + entity_types=pii_entity_types, show_secret_column=config.debug, ) + output_dataset.write.save(path=config.out_dir, format=config.output_format, mode="overwrite") - logger.info(f" ===== Dataset saved successfully =====") + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("-i", "--in_dir", dest="in_dir", type=str) + parser.add_argument("-o", "--out_dir", dest="out_dir", type=str) + parser.add_argument("-fi", "--input_format", dest="input_format", type=str, choices=["parquet", "json"], default="json") + parser.add_argument("-fo", "--output_format", dest="output_format", type=str, choices=["parquet", "json"], default="parquet") + parser.add_argument("-e", "--entity_types", dest="entity_types", nargs="*", default=[], type=str) + parser.add_argument("-k", "--text_column", dest="text_column", type=str, default="text") + parser.add_argument("-inplace", dest="inplace", type=bool, default=True) + parser.add_argument("-d", "--debug", dest="debug", type=bool, default=False) + parser.add_argument("-m", "--model_root_path", dest="model_root_path", type=str, default=None) + args = parser.parse_args() + + from pyrecdp.core.utils import Timer + with Timer(f"PII Remove for {args.in_dir}"): + main(args) diff --git a/RecDP/pyrecdp/primitives/operations/text_pii_remove.py b/RecDP/pyrecdp/primitives/operations/text_pii_remove.py index b8c235001..4eb8141e5 100644 --- a/RecDP/pyrecdp/primitives/operations/text_pii_remove.py +++ b/RecDP/pyrecdp/primitives/operations/text_pii_remove.py @@ -9,32 +9,33 @@ from pyrecdp.primitives.llmutils.pii.detect.utils import PIIEntityType -def prepare_pipeline(model_root_path=None, entity_types: List[PIIEntityType] = None): - _model_key = "bigcode/starpii" - model_key = _model_key if model_root_path is None else os.path.join(model_root_path, _model_key) - if entity_types is None: - entity_types = PIIEntityType.all() - - is_name_password_detect = PIIEntityType.NAME in entity_types or PIIEntityType.PASSWORD in entity_types +def prepare_pipeline(model_root_path=None): + from transformers import pipeline + from transformers import AutoTokenizer - if is_name_password_detect: - from transformers import pipeline - return pipeline(model=model_key, task='token-classification', grouped_entities=True) - else: - return None + _model_key = "bigcode/starpii" + _model_key = _model_key if model_root_path is None else os.path.join(model_root_path, _model_key) + tokenizer = AutoTokenizer.from_pretrained(_model_key, model_max_length=512) + return pipeline(model=_model_key, task='token-classification', tokenizer=tokenizer, grouped_entities=True) def prepare_func_pii_removal(model_root_path=None, debug_mode=True, entity_types: List[PIIEntityType] = None): replacements = random_replacements() - pipeline_inst = prepare_pipeline(model_root_path, entity_types) + + has_name_detection = entity_types is not None and PIIEntityType.NAME in entity_types + has_password_detection = entity_types is not None and PIIEntityType.PASSWORD in entity_types + if has_name_detection or has_password_detection: + pipe_inst = prepare_pipeline(model_root_path) + else: + pipe_inst = None def process_debug(sample): - secrets = scan_pii_text(sample, pipeline_inst, entity_types) + secrets = scan_pii_text(sample, pipe_inst, entity_types) text, is_modified = redact_pii_text(sample, secrets, replacements) return text, is_modified, str(secrets) def process(sample): - secrets = scan_pii_text(sample, pipeline_inst, entity_types) + secrets = scan_pii_text(sample, pipe_inst, entity_types) text, _ = redact_pii_text(sample, secrets, replacements) return text @@ -57,7 +58,7 @@ def __init__(self, text_key='text', inplace=True, model_root_path="", debug_mode self.support_spark = True self.support_ray = True self.debug_mode = debug_mode - self.entity_types = entity_types + self.entity_types = PIIEntityType.default() if entity_types is None else entity_types def process_rayds(self, ds: Dataset) -> Dataset: if self.inplace: From 4f0c9c007b3d315bd5e60d4a40f92d93a65a5648 Mon Sep 17 00:00:00 2001 From: Yao Qing Date: Tue, 17 Oct 2023 23:38:18 +0800 Subject: [PATCH 16/47] [v1.2][ISSUE-306]Support more filters. (#387) * Support more filters. . * Skip token_num_filter UT because of huggingface download issue. . * Optimize TokenNumFilter . --- RecDP/pyrecdp/core/utils.py | 124 +++++++++++- RecDP/pyrecdp/primitives/llmutils/filter.py | 189 +++++++++++++++++- .../primitives/operations/filter/__init__.py | 6 + .../operations/filter/alphanumeric_filter.py | 25 +++ .../filter/average_line_length_filter.py | 25 +++ .../primitives/operations/filter/constant.py | 20 ++ .../filter/maximum_line_length_filter.py | 26 +++ .../filter/special_characters_filter.py | 27 +++ .../operations/filter/token_num_filter.py | 34 ++++ .../operations/filter/word_num_filter.py | 35 ++++ RecDP/setup.py | 1 + RecDP/tests/test_llmutils_operations.py | 74 +++++++ 12 files changed, 584 insertions(+), 2 deletions(-) create mode 100644 RecDP/pyrecdp/primitives/operations/filter/alphanumeric_filter.py create mode 100644 RecDP/pyrecdp/primitives/operations/filter/average_line_length_filter.py create mode 100644 RecDP/pyrecdp/primitives/operations/filter/constant.py create mode 100644 RecDP/pyrecdp/primitives/operations/filter/maximum_line_length_filter.py create mode 100644 RecDP/pyrecdp/primitives/operations/filter/special_characters_filter.py create mode 100644 RecDP/pyrecdp/primitives/operations/filter/token_num_filter.py create mode 100644 RecDP/pyrecdp/primitives/operations/filter/word_num_filter.py diff --git a/RecDP/pyrecdp/core/utils.py b/RecDP/pyrecdp/core/utils.py index db24cb0af..33b6ba674 100644 --- a/RecDP/pyrecdp/core/utils.py +++ b/RecDP/pyrecdp/core/utils.py @@ -1,3 +1,5 @@ +import re + import numpy as np import pandas as pd import copy @@ -234,4 +236,124 @@ def update_linklist(linklist, key, value): if key not in linklist: linklist[key] = [] linklist[key].append(value) - return linklist \ No newline at end of file + return linklist + + +def split_on_whitespace(document, new_line=False, tab=False): + """ + This method also removes concatenated spaces. + + :param document: document to be splited + :param new_line: whether to split document with '\\\\n' + :param tag: whether to split document with '\\\\t' + :return: word list obtained after splitting document + """ + sep = [' '] + new_line * ['\n'] + tab * ['\t'] + sep = '|'.join(sep) + split_document = re.split(sep, document) + split_document = [word for word in split_document if word] + return split_document + + +def get_words_from_document(document, + token_func=None, + new_line=True, + tab=True,): + """ + Get words from a document. Useful to compute ratios, like the + stopwords ratio. + + :param document: document that need to split words + :param token_func: function of tokenizer, if specified, the function + will be used for split document into different tokens. + :param new_line: whether to use `\\\\n' to split words + :param tab: whether to use '\\\\t' to split words + :return: word list obtained from document + """ + if token_func: + words = token_func(document) + else: + words = split_on_whitespace(document, new_line, tab) + return words + + +def strip(document, strip_characters): + """ + Way faster than document.strip(strip_characters) since strip_characters is + now a set instead of a str, and it contains a lot of elements (all the + emojis). + + :param document: document to be processed + :param strip_characters: characters uesd for stripping document + :return: stripped document + """ + if not document: + return document + beg_ind = 0 + end_ind = len(document) + for i in range(len(document)): + if document[i] in strip_characters: + beg_ind += 1 + else: + break + for i in range(1, len(document) + 1): + if document[-i] in strip_characters: + end_ind -= 1 + else: + break + document_stripped = document[beg_ind:end_ind] + return document_stripped + + +def words_augmentation(words, group_size, join_char): + """ + Augment words, especially for Chinese (without a space between words) and + Vietnamese (with a space between syllables). + + :param word: word list to be augmented + :param group_size: the size of word groups that need to be merged + :param join_char: characters to be added between word group + :return: word list after augment + """ + augmentation = [ + join_char.join(words[i:i + group_size]) + for i in range(len(words) - group_size + 1) + ] + return augmentation + + +def words_refinement(words, + lower_case=False, + strip_chars=None, + use_words_aug=False, + words_aug_group_sizes=[2], + words_aug_join_char=''): + """ + Refine split words. Non reversible since the document is split on + multiple characters, words are stripped of special characters and + characters are converted to lower case. + + :param words: the word list to be augmented + :param lower_case: whether to convert word to lowercase + :param strip_chars: chars that need to be stripped in words + :param use_words_aug: whether to use word augmentation + :param words_aug_group_sizes: the size of word groups that need to + be merged + :param words_aug_join_char: characters to be added between word + group + :return: refined words or word list + """ + + if lower_case: + words = [word.lower() for word in words] + if strip_chars: + words = [strip(word, strip_chars) for word in words] + words = [word for word in words if word] + if use_words_aug: + augmentation = [ + words_augmentation(words, group_size, words_aug_join_char) + for group_size in words_aug_group_sizes + ] + augmentation = [word for augm in augmentation for word in augm] + words = words + augmentation + return words diff --git a/RecDP/pyrecdp/primitives/llmutils/filter.py b/RecDP/pyrecdp/primitives/llmutils/filter.py index bb8fc5b7a..03ab16d47 100644 --- a/RecDP/pyrecdp/primitives/llmutils/filter.py +++ b/RecDP/pyrecdp/primitives/llmutils/filter.py @@ -1,4 +1,6 @@ import argparse +import os +import sys from pyrecdp.core.utils import Timer from pyrecdp.primitives.operations import JsonlReader, ParquetReader, PerfileParquetWriter @@ -87,13 +89,180 @@ def filter_by_length(data_dir, out_dir, data_file_type="jsonl", minimum_length=1 pipeline.add_operations(ops) pipeline.execute() +def filter_by_alphanumeric_spark(spark_df, min_ratio=0.25, max_ratio=sys.maxsize): + from pyrecdp.primitives.operations import AlphanumericFilter + op = AlphanumericFilter(min_ratio=min_ratio, max_ratio=max_ratio) + ret = op.process_spark(spark_df.sparkSession, spark_df) + return ret + + +def filter_by_alphanumeric(data_dir, out_dir, data_file_type="jsonl", min_ratio=0.25, max_ratio=sys.maxsize): + from pyrecdp.primitives.operations import AlphanumericFilter + from pyrecdp.LLM import ResumableTextPipeline + + if data_file_type == 'jsonl': + reader = JsonlReader(data_dir) + elif data_file_type == 'parquet': + reader = ParquetReader(data_dir) + else: + raise NotImplementedError(f"{data_file_type} is not supported in RecDP LLM ResumableTextPipeline yet.") + + pipeline = ResumableTextPipeline() + ops = [ + reader, + AlphanumericFilter(min_ratio=min_ratio, max_ratio=max_ratio), + PerfileParquetWriter(out_dir) + ] + pipeline.add_operations(ops) + pipeline.execute() + + +def filter_by_average_line_length_spark(spark_df, min_len=10, max_len=sys.maxsize): + from pyrecdp.primitives.operations import AverageLineLengthFilter + op = AverageLineLengthFilter(min_len=min_len, max_len=max_len) + ret = op.process_spark(spark_df.sparkSession, spark_df) + return ret + + +def filter_by_average_line_length(data_dir, out_dir, data_file_type="jsonl", min_len=10, max_len=sys.maxsize): + from pyrecdp.primitives.operations import AverageLineLengthFilter + from pyrecdp.LLM import ResumableTextPipeline + + if data_file_type == 'jsonl': + reader = JsonlReader(data_dir) + elif data_file_type == 'parquet': + reader = ParquetReader(data_dir) + else: + raise NotImplementedError(f"{data_file_type} is not supported in RecDP LLM ResumableTextPipeline yet.") + + pipeline = ResumableTextPipeline() + ops = [ + reader, + AverageLineLengthFilter(min_len=min_len, max_len=max_len), + PerfileParquetWriter(out_dir) + ] + pipeline.add_operations(ops) + pipeline.execute() + + +def filter_by_maximum_line_length_spark(spark_df, min_len=10, max_len=sys.maxsize): + from pyrecdp.primitives.operations import MaximumLineLengthFilter + op = MaximumLineLengthFilter(min_len=min_len, max_len=max_len) + ret = op.process_spark(spark_df.sparkSession, spark_df) + return ret + + +def filter_by_maximum_line_length(data_dir, out_dir, data_file_type="jsonl", min_len=10, max_len=sys.maxsize): + from pyrecdp.primitives.operations import MaximumLineLengthFilter + from pyrecdp.LLM import ResumableTextPipeline + + if data_file_type == 'jsonl': + reader = JsonlReader(data_dir) + elif data_file_type == 'parquet': + reader = ParquetReader(data_dir) + else: + raise NotImplementedError(f"{data_file_type} is not supported in RecDP LLM ResumableTextPipeline yet.") + + pipeline = ResumableTextPipeline() + ops = [ + reader, + MaximumLineLengthFilter(min_len=min_len, max_len=max_len), + PerfileParquetWriter(out_dir) + ] + pipeline.add_operations(ops) + pipeline.execute() + + +def filter_by_special_characters_spark(spark_df, min_ratio=0.0, max_ratio=0.25): + from pyrecdp.primitives.operations import SpecialCharactersFilter + op = SpecialCharactersFilter(min_ratio=min_ratio, max_ratio=max_ratio) + ret = op.process_spark(spark_df.sparkSession, spark_df) + return ret + + +def filter_by_special_characters(data_dir, out_dir, data_file_type="jsonl", min_ratio=0.0, max_ratio=0.25): + from pyrecdp.primitives.operations import SpecialCharactersFilter + from pyrecdp.LLM import ResumableTextPipeline + + if data_file_type == 'jsonl': + reader = JsonlReader(data_dir) + elif data_file_type == 'parquet': + reader = ParquetReader(data_dir) + else: + raise NotImplementedError(f"{data_file_type} is not supported in RecDP LLM ResumableTextPipeline yet.") + + pipeline = ResumableTextPipeline() + ops = [ + reader, + SpecialCharactersFilter(min_ratio=min_ratio, max_ratio=max_ratio), + PerfileParquetWriter(out_dir) + ] + pipeline.add_operations(ops) + pipeline.execute() + + +def filter_by_token_num_spark(spark_df, min_num=10, max_num=sys.maxsize): + from pyrecdp.primitives.operations import TokenNumFilter + op = TokenNumFilter(min_num=min_num, max_num=max_num) + ret = op.process_spark(spark_df.sparkSession, spark_df) + return ret + + +def filter_by_token_num(data_dir, out_dir, data_file_type="jsonl", min_num=10, max_num=sys.maxsize): + from pyrecdp.primitives.operations import TokenNumFilter + from pyrecdp.LLM import ResumableTextPipeline + + if data_file_type == 'jsonl': + reader = JsonlReader(data_dir) + elif data_file_type == 'parquet': + reader = ParquetReader(data_dir) + else: + raise NotImplementedError(f"{data_file_type} is not supported in RecDP LLM ResumableTextPipeline yet.") + + pipeline = ResumableTextPipeline() + ops = [ + reader, + TokenNumFilter(min_num=min_num, max_num=max_num), + PerfileParquetWriter(out_dir) + ] + pipeline.add_operations(ops) + pipeline.execute() + + +def filter_by_word_num_spark(spark_df, min_num=10, max_num=sys.maxsize, language='en'): + from pyrecdp.primitives.operations import WordNumFilter + op = WordNumFilter(min_num=min_num, max_num=max_num, language=language) + ret = op.process_spark(spark_df.sparkSession, spark_df) + return ret + + +def filter_by_word_num(data_dir, out_dir, data_file_type="jsonl", min_num=10, max_num=sys.maxsize, language='en'): + from pyrecdp.primitives.operations import WordNumFilter + from pyrecdp.LLM import ResumableTextPipeline + + if data_file_type == 'jsonl': + reader = JsonlReader(data_dir) + elif data_file_type == 'parquet': + reader = ParquetReader(data_dir) + else: + raise NotImplementedError(f"{data_file_type} is not supported in RecDP LLM ResumableTextPipeline yet.") + + pipeline = ResumableTextPipeline() + ops = [ + reader, + WordNumFilter(min_num=min_num, max_num=max_num, language=language), + PerfileParquetWriter(out_dir) + ] + pipeline.add_operations(ops) + pipeline.execute() + if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--data_dir", dest="data_dir", type=str) parser.add_argument("--data_file_type", dest="data_file_type", type=str, default="jsonl") parser.add_argument("--output_dir", dest="output_dir", type=str, default="") - parser.add_argument("--filter_type", dest="filter_type", type=str, default="length") + parser.add_argument("--filter_type", dest="filter_type", type=str, default="word_num") args = parser.parse_args() data_dir = args.data_dir data_file_type = args.data_file_type @@ -108,6 +277,24 @@ def filter_by_length(data_dir, out_dir, data_file_type="jsonl", minimum_length=1 elif "url_blocklist" == filter_type: with Timer(f"Processing {filter_type} filter for {data_dir}"): filter_by_blocklist(data_dir, output_dir, data_file_type) + elif "alphanumeric" == filter_type: + with Timer(f"Processing {filter_type} filter for {data_dir}"): + filter_by_alphanumeric(data_dir, output_dir, data_file_type) + elif "average_line_length" == filter_type: + with Timer(f"Processing {filter_type} filter for {data_dir}"): + filter_by_average_line_length(data_dir, output_dir, data_file_type) + elif "maximum_line_length" == filter_type: + with Timer(f"Processing {filter_type} filter for {data_dir}"): + filter_by_maximum_line_length(data_dir, output_dir, data_file_type) + elif "special_characters" == filter_type: + with Timer(f"Processing {filter_type} filter for {data_dir}"): + filter_by_special_characters(data_dir, output_dir, data_file_type) + elif "token_num" == filter_type: + with Timer(f"Processing {filter_type} filter for {data_dir}"): + filter_by_token_num(data_dir, output_dir, data_file_type) + elif "word_num" == filter_type: + with Timer(f"Processing {filter_type} filter for {data_dir}"): + filter_by_word_num(data_dir, output_dir, data_file_type) else: raise NotImplementedError(f"{filter_type} is not supported in RecDP LLM Filter yet.") diff --git a/RecDP/pyrecdp/primitives/operations/filter/__init__.py b/RecDP/pyrecdp/primitives/operations/filter/__init__.py index 1c2819406..60980d473 100644 --- a/RecDP/pyrecdp/primitives/operations/filter/__init__.py +++ b/RecDP/pyrecdp/primitives/operations/filter/__init__.py @@ -3,3 +3,9 @@ from .badwords_filter import BadwordsFilter from .length_filter import LengthFilter from .url_filter import URLFilter +from .alphanumeric_filter import AlphanumericFilter +from .average_line_length_filter import AverageLineLengthFilter +from .maximum_line_length_filter import MaximumLineLengthFilter +from .special_characters_filter import SpecialCharactersFilter +from .token_num_filter import TokenNumFilter +from .word_num_filter import WordNumFilter \ No newline at end of file diff --git a/RecDP/pyrecdp/primitives/operations/filter/alphanumeric_filter.py b/RecDP/pyrecdp/primitives/operations/filter/alphanumeric_filter.py new file mode 100644 index 000000000..920bc5cdd --- /dev/null +++ b/RecDP/pyrecdp/primitives/operations/filter/alphanumeric_filter.py @@ -0,0 +1,25 @@ +import sys + +from pyrecdp.primitives.operations.base import LLMOPERATORS +from pyrecdp.primitives.operations.filter.base import BaseFilter + + +# This filter is referred from alibaba data juicer project +class AlphanumericFilter(BaseFilter): + def __init__(self, min_ratio=0.25, max_ratio=sys.maxsize): + settings = {'min_ratio': min_ratio, "max_ratio": max_ratio} + super().__init__(args_dict=settings) + self.min_ratio = min_ratio + self.max_ratio = max_ratio + + def compute(self, text) -> bool: + alnum_count = sum(map(lambda char: 1 if char.isalnum() else 0, text)) + alnum_ratio = (alnum_count / len(text)) if len(text) != 0 else 0.0 + if self.min_ratio <= alnum_ratio <= self.max_ratio: + return True + else: + return False + +LLMOPERATORS.register(AlphanumericFilter) + + diff --git a/RecDP/pyrecdp/primitives/operations/filter/average_line_length_filter.py b/RecDP/pyrecdp/primitives/operations/filter/average_line_length_filter.py new file mode 100644 index 000000000..7d42a68dd --- /dev/null +++ b/RecDP/pyrecdp/primitives/operations/filter/average_line_length_filter.py @@ -0,0 +1,25 @@ +import sys + +from pyrecdp.primitives.operations.base import LLMOPERATORS +from pyrecdp.primitives.operations.filter.base import BaseFilter + + +# This filter is referred from alibaba data juicer project +class AverageLineLengthFilter(BaseFilter): + def __init__(self, min_len=10, max_len=sys.maxsize): + settings = {'min_len': min_len, "max_len": max_len} + super().__init__(args_dict=settings) + self.min_len = min_len + self.max_len = max_len + + def compute(self, text) -> bool: + lines = text.splitlines() + avg_line_length = len(text) / len(lines) if len(lines) != 0 else 0.0 + if self.min_len <= avg_line_length <= self.max_len: + return True + else: + return False + +LLMOPERATORS.register(AverageLineLengthFilter) + + diff --git a/RecDP/pyrecdp/primitives/operations/filter/constant.py b/RecDP/pyrecdp/primitives/operations/filter/constant.py new file mode 100644 index 000000000..93ce5ba3e --- /dev/null +++ b/RecDP/pyrecdp/primitives/operations/filter/constant.py @@ -0,0 +1,20 @@ +import string +import emoji + + +# special characters +MAIN_SPECIAL_CHARACTERS = string.punctuation + string.digits \ + + string.whitespace +OTHER_SPECIAL_CHARACTERS = ( + "’ “— ™ – •‘œ    ˜ ‚ƒ„’“”–ー一▬…✦�­£​•€«»°·═" + "×士^˘⇓↓↑←→()§″′´¿−±∈¢ø‚„½¼¾¹²³―⁃,ˌ¸‹›ʺˈʻ¦‐⠀‰……‑≤≥‖" + "◆●■►▼▲▴∆▻¡★☆✱ːº。¯˜¥ɪ≈†上ン:∼⁄・♡✓⊕․.⋅÷1‟;،、¨ाাी्े◦˚" + "゜ʼ≖ʼ¤ッツシ℃√!【】‿∞➤~πه۩☛₨➩☻๑٪♥ıॽ《‘©﴿٬?▷Г♫∟™ª₪®「—❖" + "」﴾》" +) +EMOJI = list(emoji.EMOJI_DATA.keys()) +SPECIAL_CHARACTERS = set(MAIN_SPECIAL_CHARACTERS + OTHER_SPECIAL_CHARACTERS) +SPECIAL_CHARACTERS.update(EMOJI) + + +HF_TOKENIZER = 'EleutherAI/pythia-6.9b-deduped' \ No newline at end of file diff --git a/RecDP/pyrecdp/primitives/operations/filter/maximum_line_length_filter.py b/RecDP/pyrecdp/primitives/operations/filter/maximum_line_length_filter.py new file mode 100644 index 000000000..0d7c41a99 --- /dev/null +++ b/RecDP/pyrecdp/primitives/operations/filter/maximum_line_length_filter.py @@ -0,0 +1,26 @@ +import sys + +from pyrecdp.primitives.operations.base import LLMOPERATORS +from pyrecdp.primitives.operations.filter.base import BaseFilter + + +# This filter is referred from alibaba data juicer project +class MaximumLineLengthFilter(BaseFilter): + def __init__(self, min_len=10, max_len=sys.maxsize): + settings = {'min_len': min_len, "max_len": max_len} + super().__init__(args_dict=settings) + self.min_len = min_len + self.max_len = max_len + + def compute(self, text) -> bool: + lines = text.splitlines() + line_lengths = list(map(len, lines)) + max_line_length = max(line_lengths) if line_lengths else 0.0 + if self.min_len <= max_line_length <= self.max_len: + return True + else: + return False + +LLMOPERATORS.register(MaximumLineLengthFilter) + + diff --git a/RecDP/pyrecdp/primitives/operations/filter/special_characters_filter.py b/RecDP/pyrecdp/primitives/operations/filter/special_characters_filter.py new file mode 100644 index 000000000..2840945d4 --- /dev/null +++ b/RecDP/pyrecdp/primitives/operations/filter/special_characters_filter.py @@ -0,0 +1,27 @@ +import sys + +from pyrecdp.primitives.operations.base import LLMOPERATORS +from pyrecdp.primitives.operations.filter.base import BaseFilter +from pyrecdp.primitives.operations.filter.constant import SPECIAL_CHARACTERS + + +# This filter is referred from alibaba data juicer project +class SpecialCharactersFilter(BaseFilter): + def __init__(self, min_ratio=0.0, max_ratio=0.25): + settings = {'min_ratio': min_ratio, "max_ratio": max_ratio} + super().__init__(args_dict=settings) + self.min_ratio = max_ratio + self.max_ratio = max_ratio + + def compute(self, text) -> bool: + special_char_ratio = ( + len([c + for c in text if c in SPECIAL_CHARACTERS]) / + len(text)) if len(text) != 0 else 0.0 + if self.min_ratio <= special_char_ratio <= self.max_ratio: + return True + else: + return False + + +LLMOPERATORS.register(SpecialCharactersFilter) diff --git a/RecDP/pyrecdp/primitives/operations/filter/token_num_filter.py b/RecDP/pyrecdp/primitives/operations/filter/token_num_filter.py new file mode 100644 index 000000000..dbcb310c4 --- /dev/null +++ b/RecDP/pyrecdp/primitives/operations/filter/token_num_filter.py @@ -0,0 +1,34 @@ +import sys + +from pyrecdp.core.model_utils import get_model, prepare_model +from pyrecdp.core.utils import get_words_from_document +from pyrecdp.primitives.operations.base import LLMOPERATORS +from pyrecdp.primitives.operations.filter.base import BaseFilter +from pyrecdp.primitives.operations.filter.constant import HF_TOKENIZER + + +# This filter is referred from alibaba data juicer project +class TokenNumFilter(BaseFilter): + def __init__(self, min_num=10, max_num=sys.maxsize): + settings = {'min_num': min_num, "max_num": max_num} + super().__init__(args_dict=settings) + self.min_num = min_num + self.max_num = max_num + self.model_key = prepare_model(model_type='huggingface', + model_key=HF_TOKENIZER) + self.tokenizer = get_model(self.model_key, model_type='huggingface') + + def compute(self, text) -> bool: + + tokens = get_words_from_document( + text, + token_func=self.tokenizer.tokenize if self.tokenizer else None + ) + num_token = len(tokens) + if self.min_num <= num_token <= self.max_num: + return True + else: + return False + + +LLMOPERATORS.register(TokenNumFilter) diff --git a/RecDP/pyrecdp/primitives/operations/filter/word_num_filter.py b/RecDP/pyrecdp/primitives/operations/filter/word_num_filter.py new file mode 100644 index 000000000..4aa004d08 --- /dev/null +++ b/RecDP/pyrecdp/primitives/operations/filter/word_num_filter.py @@ -0,0 +1,35 @@ +import sys + +from pyrecdp.core.model_utils import get_model +from pyrecdp.core.utils import get_words_from_document, words_refinement +from pyrecdp.primitives.operations.base import LLMOPERATORS +from pyrecdp.primitives.operations.filter.base import BaseFilter +from pyrecdp.primitives.operations.filter.constant import SPECIAL_CHARACTERS + + +# This filter is referred from alibaba data juicer project +class WordNumFilter(BaseFilter): + def __init__(self, min_num=10, max_num=sys.maxsize, language='en'): + settings = {'min_num': min_num, "max_num": max_num, "language": language} + super().__init__(args_dict=settings) + self.min_num = min_num + self.max_num = max_num + self.language = language + self.model_key = None + + def compute(self, text) -> bool: + + tokenizer = get_model(self.model_key, lang=self.language, + model_type='sentencepiece') + words = get_words_from_document( + text, token_func=tokenizer.encode_as_pieces if tokenizer else None) + + words = words_refinement(words, strip_chars=SPECIAL_CHARACTERS) + num_words = len(words) + if self.min_num <= num_words <= self.max_num: + return True + else: + return False + + +LLMOPERATORS.register(WordNumFilter) diff --git a/RecDP/setup.py b/RecDP/setup.py index da2c6f4fa..c1c8f3626 100644 --- a/RecDP/setup.py +++ b/RecDP/setup.py @@ -80,4 +80,5 @@ "Faker", "ray", "loguru", + "emoji==2.2.0", ]) diff --git a/RecDP/tests/test_llmutils_operations.py b/RecDP/tests/test_llmutils_operations.py index 1ce8bba4c..ed0359ac9 100644 --- a/RecDP/tests/test_llmutils_operations.py +++ b/RecDP/tests/test_llmutils_operations.py @@ -113,6 +113,50 @@ def test_filter_by_url_ray(self): with RayContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: ctx.show(op.process_rayds(ctx.ds)) + def test_filter_by_alphanumeric_ray(self): + pass + # Ray version not supported yet + op = AlphanumericFilter() + with RayContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: + ctx.show(op.process_rayds(ctx.ds)) + + + def test_filter_by_average_line_length_ray(self): + pass + # Ray version not supported yet + op = AverageLineLengthFilter() + with RayContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: + ctx.show(op.process_rayds(ctx.ds)) + + def test_filter_by_maximum_line_length_ray(self): + pass + # Ray version not supported yet + op = MaximumLineLengthFilter() + with RayContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: + ctx.show(op.process_rayds(ctx.ds)) + + def test_filter_by_special_characters_ray(self): + pass + # Ray version not supported yet + op = SpecialCharactersFilter() + with RayContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: + ctx.show(op.process_rayds(ctx.ds)) + + + # def test_filter_by_token_num_ray(self): + # pass + # # Ray version not supported yet + # op = TokenNumFilter() + # with RayContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: + # ctx.show(op.process_rayds(ctx.ds)) + + def test_filter_by_word_num_ray(self): + pass + # Ray version not supported yet + op = WordNumFilter() + with RayContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: + ctx.show(op.process_rayds(ctx.ds)) + def test_text_fixer_ray(self): op = TextFix() with RayContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: @@ -191,6 +235,36 @@ def test_filter_by_url_spark(self): with SparkContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: ctx.show(op.process_spark(ctx.spark, ctx.ds)) + def test_filter_by_alphanumeric_spark(self): + op = AlphanumericFilter() + with SparkContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: + ctx.show(op.process_spark(ctx.spark, ctx.ds)) + + def test_filter_by_average_line_length_spark(self): + op = AverageLineLengthFilter() + with SparkContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: + ctx.show(op.process_spark(ctx.spark, ctx.ds)) + + def test_filter_by_maximum_line_length_spark(self): + op = MaximumLineLengthFilter() + with SparkContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: + ctx.show(op.process_spark(ctx.spark, ctx.ds)) + + def test_filter_by_special_characters_spark(self): + op = SpecialCharactersFilter() + with SparkContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: + ctx.show(op.process_spark(ctx.spark, ctx.ds)) + + # def test_filter_by_token_num_spark(self): + # op = TokenNumFilter() + # with SparkContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: + # ctx.show(op.process_spark(ctx.spark, ctx.ds)) + + def test_filter_by_word_num_spark(self): + op = WordNumFilter() + with SparkContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: + ctx.show(op.process_spark(ctx.spark, ctx.ds)) + def test_text_fixer_spark(self): op = TextFix() with SparkContext("tests/data/llm_data/tiny_c4_sample.jsonl") as ctx: From 922d2cb9ee0c63ad337c6c74fdfba66ba58c2aac Mon Sep 17 00:00:00 2001 From: Yao Qing Date: Tue, 17 Oct 2023 23:46:42 +0800 Subject: [PATCH 17/47] Enhanced the ability of diversity analysis to process full text. (#389) . --- .../primitives/llmutils/diversity_analysis.py | 8 ++- .../operations/text_diversityindicate.py | 59 ++++++++++++------- 2 files changed, 43 insertions(+), 24 deletions(-) diff --git a/RecDP/pyrecdp/primitives/llmutils/diversity_analysis.py b/RecDP/pyrecdp/primitives/llmutils/diversity_analysis.py index 8fbf2a08a..08f9e33bd 100644 --- a/RecDP/pyrecdp/primitives/llmutils/diversity_analysis.py +++ b/RecDP/pyrecdp/primitives/llmutils/diversity_analysis.py @@ -11,7 +11,7 @@ def diversity_indicate_spark(spark_df): return ret -def diversity_indicate(data_dir, data_file_type, out_dir, language="en"): +def diversity_indicate(data_dir, data_file_type, out_dir, language="en", first_sent=True): from pyrecdp.primitives.operations import TextDiversityIndicate from pyrecdp.LLM import ResumableTextPipeline @@ -25,7 +25,7 @@ def diversity_indicate(data_dir, data_file_type, out_dir, language="en"): pipeline = ResumableTextPipeline() ops = [ reader, - TextDiversityIndicate(language=language), + TextDiversityIndicate(language=language, out_dir=out_dir, first_sent=first_sent), PerfileParquetWriter(out_dir) ] pipeline.add_operations(ops) @@ -38,10 +38,12 @@ def diversity_indicate(data_dir, data_file_type, out_dir, language="en"): parser.add_argument("--data_file_type", dest="data_file_type", type=str, default="jsonl") parser.add_argument("--output_dir", dest="output_dir", type=str, default="") parser.add_argument("--language", dest="language", type=str, default="en") + parser.add_argument("--first_sent", dest="first_sent", type=bool, default=False) args = parser.parse_args() data_dir = args.data_dir data_file_type = args.data_file_type output_dir = args.output_dir language = args.language + first_sent = args.first_sent with Timer(f"Processing diversity analysis for {data_dir}"): - diversity_indicate(data_dir, data_file_type, output_dir, language) + diversity_indicate(data_dir, data_file_type, output_dir, language=language, first_sent=first_sent) diff --git a/RecDP/pyrecdp/primitives/operations/text_diversityindicate.py b/RecDP/pyrecdp/primitives/operations/text_diversityindicate.py index 1e8265909..38e8b28cb 100644 --- a/RecDP/pyrecdp/primitives/operations/text_diversityindicate.py +++ b/RecDP/pyrecdp/primitives/operations/text_diversityindicate.py @@ -8,7 +8,7 @@ import spacy from pyrecdp.core.model_utils import MODEL_ZOO, prepare_model from pyspark.sql import functions as F -from pyspark.sql.types import StructType, StructField, StringType +from pyspark.sql.types import StructType, StructField, StringType, ArrayType from pyspark.sql.functions import udf from .base import BaseLLMOperation, LLMOPERATORS @@ -40,6 +40,7 @@ def find_root_verb_and_its_dobj(tree_root): # if no children satisfy the condition, return None return None, None + # Modify from self_instruct, please refer to # https://github.com/yizhongw/self-instruct/blob/main/self_instruct/instruction_visualize.ipynb def find_root_verb_and_its_dobj_in_string(nlp, s, first_sent=True): @@ -56,18 +57,21 @@ def find_root_verb_and_its_dobj_in_string(nlp, s, first_sent=True): :return: valid verb and its object of this string """ doc = nlp(s) + verb_noun_pairs = [] for sent in doc.sents: verb, noun = find_root_verb_and_its_dobj(sent.root) - if first_sent or (verb is not None and noun is not None): - return verb, noun - return None, None + if first_sent: + return [(verb, noun)] + else: + verb_noun_pairs.append((verb, noun)) + return verb_noun_pairs class DiversityAnalysis: """Apply diversity analysis for each sample and get an overall analysis result.""" - def __init__(self, dataset, text_key="text", lang_or_model='en'): + def __init__(self, dataset, text_key="text", lang_or_model='en', first_sent=True): """Initialization method :param dataset: the dataset to be analysed :param output_path: path to store the analysis results :param lang_or_model: the diversity model or a specific language used to load @@ -76,6 +80,7 @@ def __init__(self, dataset, text_key="text", lang_or_model='en'): self.dataset = dataset self.text_key = text_key self.lang_or_model = lang_or_model + self.first_sent = first_sent def compute(self, lang_or_model=None): """ @@ -97,25 +102,33 @@ def compute(self, lang_or_model=None): assert isinstance(diversity_model, spacy.Language) + first_sent_flag = self.first_sent + if isinstance(self.dataset, DataFrame): - schema = StructType([ - StructField("verb", StringType(), True), - StructField("noun", StringType(), True) - ]) + schema = ArrayType( + StructType([ + StructField("verb", StringType(), True), + StructField("noun", StringType(), True), + ])) def find_verb_noun_spark(sample): + verb_noun_pairs = [] try: - verb, noun = find_root_verb_and_its_dobj_in_string( - diversity_model, sample) + verb_noun_pairs = find_root_verb_and_its_dobj_in_string( + diversity_model, sample, first_sent=first_sent_flag) except Exception as e: print(str(e)) - verb, noun = None, None - return verb, noun + return verb_noun_pairs + - existing_columns = self.dataset.columns operator = udf(find_verb_noun_spark, schema) - dataset = self.dataset.withColumn('diversity', operator(F.col(self.text_key))) - dataset = dataset.select("diversity.*").toPandas() + spark_df = self.dataset.withColumn('diversity', operator(F.col(self.text_key))) + pd_df = spark_df.select("diversity").toPandas() + df_explode = pd_df.explode('diversity').reset_index(drop=True) + df_explode = df_explode.dropna() + dataset = df_explode.apply(lambda x: [x['diversity']['verb'], x['diversity']['noun']], axis=1, + result_type='expand') + dataset.columns = ['verb', 'noun'] else: import copy @@ -127,6 +140,7 @@ def find_verb_noun_ray(sample): print(str(e)) verb, noun = None, None return {'verb': verb, 'noun': noun} + dataset = self.dataset.map(lambda x: find_verb_noun_ray(x[self.text_key])).to_pandas() return dataset @@ -178,25 +192,28 @@ def analyse(self, class TextDiversityIndicate(BaseLLMOperation): - def __init__(self, text_key='text', language='en', out_dir=''): - settings = {'text_key': text_key, 'language': language, 'out_dir': out_dir} + def __init__(self, text_key='text', language='en', out_dir='', first_sent=True): + settings = {'text_key': text_key, 'language': language, 'out_dir': out_dir, 'first_sent': first_sent} super().__init__(settings) self.text_key = text_key self.language = language self.output_path = out_dir self.inplace = False self.support_spark = True - self.support_ray = True + self.support_ray = False + self.first_sent = first_sent def process_rayds(self, ds: Dataset) -> Dataset: - diversity_analysis = DiversityAnalysis(ds, text_key=self.text_key, lang_or_model=self.language) + diversity_analysis = DiversityAnalysis(ds, text_key=self.text_key, lang_or_model=self.language, + first_sent=self.first_sent) analyse_df = diversity_analysis.analyse(lang_or_model=self.language) analyse_df.to_csv(os.path.join(self.output_path, 'diversity.csv')) analyse_df.to_markdown(os.path.join(self.output_path, 'diversity.md')) return ds def process_spark(self, spark, spark_df: DataFrame) -> DataFrame: - diversity_analysis = DiversityAnalysis(spark_df, text_key=self.text_key, lang_or_model=self.language) + diversity_analysis = DiversityAnalysis(spark_df, text_key=self.text_key, lang_or_model=self.language, + first_sent=self.first_sent) analyse_df = diversity_analysis.analyse(lang_or_model=self.language) analyse_df.to_csv(os.path.join(self.output_path, 'diversity.csv')) analyse_df.to_markdown(os.path.join(self.output_path, 'diversity.md')) From cc820e67c40d375ff84d576ed66c2b9b2201602a Mon Sep 17 00:00:00 2001 From: haojinIntel Date: Wed, 18 Oct 2023 00:34:32 +0800 Subject: [PATCH 18/47] [v1.2][ISSUE-306] Support toxicity score (#388) * Support toxicity score * Add ut for toxicity score * Use detoxify lib * Change the default model type for detoxify * Add notebook for toxicity score --------- Co-authored-by: Chendi.Xue --- .../llmutils/toxicity_bias_control.ipynb | 1959 ++++++++++++++++- RecDP/pyrecdp/primitives/llmutils/__init__.py | 1 + .../primitives/llmutils/toxicity_score.py | 60 + .../pyrecdp/primitives/operations/__init__.py | 1 + .../primitives/operations/text_toxicity.py | 49 + RecDP/setup.py | 5 +- RecDP/tests/test_llmutils.py | 22 + 7 files changed, 2064 insertions(+), 33 deletions(-) create mode 100644 RecDP/pyrecdp/primitives/llmutils/toxicity_score.py create mode 100644 RecDP/pyrecdp/primitives/operations/text_toxicity.py diff --git a/RecDP/examples/notebooks/llmutils/toxicity_bias_control.ipynb b/RecDP/examples/notebooks/llmutils/toxicity_bias_control.ipynb index bc181c9b5..0ac111f2c 100644 --- a/RecDP/examples/notebooks/llmutils/toxicity_bias_control.ipynb +++ b/RecDP/examples/notebooks/llmutils/toxicity_bias_control.ipynb @@ -1,33 +1,1930 @@ { - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# Install pyrecdp from github" + ], + "metadata": { + "id": "gCJta9Hf0Ujr" + }, + "id": "gCJta9Hf0Ujr" + }, + { + "cell_type": "code", + "execution_count": null, + "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a", + "metadata": { + "id": "736fb211-dbe6-4ca9-a1b1-db2cff2d287a" + }, + "outputs": [], + "source": [ + "!pip install 'git+https://github.com/intel/e2eAIOK.git#egg=pyrecdp&subdirectory=RecDP'" + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Install jdk for pyspark running" + ], + "metadata": { + "id": "yqkf9Lp_0ewm" + }, + "id": "yqkf9Lp_0ewm" + }, + { + "cell_type": "code", + "source": [ + "!DEBIAN_FRONTEND=noninteractive apt-get install -y openjdk-8-jre" + ], + "metadata": { + "id": "mG9Sdne_0eeu" + }, + "id": "mG9Sdne_0eeu", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Prepare test data" + ], + "metadata": { + "id": "Ql-cPdL20mju" + }, + "id": "Ql-cPdL20mju" + }, + { + "cell_type": "code", + "source": [ + "%mkdir -p /content/test_data\n", + "%cd /content/test_data\n", + "!wget https://raw.githubusercontent.com/intel/e2eAIOK/main/RecDP/tests/data/llm_data/arxiv_sample_100.jsonl" + ], + "metadata": { + "id": "cvNCnxwH0l9d" + }, + "id": "cvNCnxwH0l9d", + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Import toxicity score function" + ], + "metadata": { + "id": "Qnb7CQId0rg1" + }, + "id": "Qnb7CQId0rg1" + }, + { + "cell_type": "code", + "source": [ + "from pyrecdp.primitives.llmutils import toxicity_score_spark, toxicity_score\n", + "from pyrecdp.core import SparkDataProcessor" + ], + "metadata": { + "id": "lfMoRQIE0yel", + "outputId": "99df35e5-746f-453f-f2c6-66e05a4e188e", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 92 + } + }, + "id": "lfMoRQIE0yel", + "execution_count": 2, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "JAVA_HOME is not set, use default value of /usr/lib/jvm/java-8-openjdk-amd64/\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "\t\t\t\n", + "\t\t" + ] + }, + "metadata": {} + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.10/dist-packages/pyspark/pandas/__init__.py:50: UserWarning: 'PYARROW_IGNORE_TIMEZONE' environment variable was not set. It is required to set this environment variable to '1' in both driver and executor sides if you use pyarrow>=2.0.0. pandas-on-Spark will set it for you but it does not work if there is a Spark context already launched.\n", + " warnings.warn(\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Specify variables" + ], + "metadata": { + "id": "Um_HZnOa1AKj" + }, + "id": "Um_HZnOa1AKj" + }, + { + "cell_type": "code", + "source": [ + "data_file = '/content/test_data/arxiv_sample_100.jsonl'\n", + "save_path = '/content/test_data/output/toxicity_score'" + ], + "metadata": { + "id": "QhEX1nqN08d-" + }, + "id": "QhEX1nqN08d-", + "execution_count": 4, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "# Load data" + ], + "metadata": { + "id": "ZxgNBBVi1HNe" + }, + "id": "ZxgNBBVi1HNe" + }, + { + "cell_type": "code", + "source": [ + "rdp = SparkDataProcessor()\n", + "spark = rdp.spark\n", + "spark_df = spark.read.json(data_file)\n", + "spark_df.show()" + ], + "metadata": { + "id": "02pLvz7d0UJm", + "outputId": "b66e2547-a58e-4b78-8810-93def84f7d63", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "id": "02pLvz7d0UJm", + "execution_count": 6, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Will assign 1 cores and 10386 M memory for spark\n", + "per core memory size is 10.143 GB and shuffle_disk maximum capacity is 8589934592.000 GB\n", + "+--------------------+--------------------+\n", + "| meta| text|\n", + "+--------------------+--------------------+\n", + "|{2203.15369, en, ...|\\section{Introduc...|\n", + "|{math/9807097, en...|\\section{Introduc...|\n", + "|{2008.06948, en, ...|\\section{Introduc...|\n", + "|{cond-mat/9807071...|\\section{Introduc...|\n", + "|{2210.10650, en, ...|\\section{\\label{s...|\n", + "|{astro-ph/9807119...|\\section{Introduc...|\n", + "|{2111.03152, en, ...|\\section{Introduc...|\n", + "|{1606.04992, en, ...|\\n\\n\\section{Intr...|\n", + "|{1608.03404, en, ...|\\section{introduc...|\n", + "|{1904.10101, en, ...|\\section{Introduc...|\n", + "|{cond-mat/9807275...|\\section{Introduc...|\n", + "|{2109.05334, en, ...|\\section{Introduc...|\n", + "|{1512.06966, en, ...|\\section{Introduc...|\n", + "|{2112.04926, en, ...|\\section{Introduc...|\n", + "|{2202.01000, en, ...|\\section{Introduc...|\n", + "|{2209.13421, en, ...|\\section{Introduc...|\n", + "|{1103.5603, en, 2...|\\section{Introduc...|\n", + "|{1001.3679, en, 2...|\\section{Introduc...|\n", + "|{1702.08222, en, ...|\\section{Introduc...|\n", + "|{2201.05495, en, ...|\\section{Introduc...|\n", + "+--------------------+--------------------+\n", + "only showing top 20 rows\n", + "\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# Process the 'text' column and generate toxicity score which will determine whether the row kept or not(spark dataframe interface)" + ], + "metadata": { + "id": "LFQM-OWI1Lkb" + }, + "id": "LFQM-OWI1Lkb" + }, + { + "cell_type": "code", + "source": [ + "toxicity_score_spark_df = toxicity_score_spark(spark_df)\n", + "toxicity_score_spark_df.show()" + ], + "metadata": { + "id": "W6055vAX1TgX", + "outputId": "57939c8d-8df2-445c-ce28-38053de8b651", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 592, + "referenced_widgets": [ + "e09f242bcc804099b93a5cddf36154a2", + "f3d97fb15127406dad0db89907348bdd", + "6891f6c9cfb34d39bfcff8de98a8cd38", + "a00afeaf8ff04c0884bf98b3069f646e", + "8265e565849543a4a442bc98c1cb0332", + "517b9994fdd64400af1274dda172e340", + "b78e75185ae34070a4847137697f06ab", + "0441bc5d0c6a48478d9710bf7f978f87", + "2f11156a37124b94bab10a2636447179", + "7eae0419355d4b98bd115b76566abc74", + "e60d4ef9173a4ae19c5773cba968d087", + "f1ce6b0e84be48caa8e54c2503fbb071", + "f4af0d845d94424383f84f78a1ae787b", + "b3c176f25bc84be88daaa2fbe21c4863", + "cb7855349b264e3abd8b325a34810f5e", + "8343ed13bd81457680821e81e0f4bc1d", + "a2d0b7f0c13746d797c79f39c5867288", + "6c622f1123084690a2a31172af5aceab", + "35a7ff0cf6b541cba38b3615cf16e7c3", + "98beb7e1aa5945a58cad10d774833dc5", + "93f1e7a82f12454b9269cd07c88b5e05", + "d3d98f3c78cd4e2482227dbd8ca8d8ca" + ] + } + }, + "id": "W6055vAX1TgX", + "execution_count": 7, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "Downloading: \"https://github.com/unitaryai/detoxify/releases/download/v0.4-alpha/multilingual_debiased-0b549669.ckpt\" to /root/.cache/torch/hub/checkpoints/multilingual_debiased-0b549669.ckpt\n", + "100%|██████████| 1.04G/1.04G [00:04<00:00, 252MB/s]\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Downloading (…)lve/main/config.json: 0%| | 0.00/615 [00:00 TaskPoolMapOperator[ReadText->SplitBlocks(5)] -> TaskPoolMapOperator[Map(convert_json)->Map()->Write]\n", + "2023-10-17 13:41:13,140\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-10-17 13:41:13,153\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running 0: 0%| | 0/25 [00:00Map()->Write pid=3321)\u001b[0m 2023-10-17 13:41:28.868788: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n", + "2023-10-17 13:44:18,638\tWARNING plan.py:567 -- Warning: The Ray cluster currently does not have any available CPUs. The Dataset job will hang unless more CPUs are freed up. A common reason is that cluster resources are used by Actors or Tune trials; see the following link for more details: https://docs.ray.io/en/master/data/dataset-internals.html#datasets-and-tune\n", + "2023-10-17 13:44:18,661\tINFO streaming_executor.py:93 -- Executing DAG InputDataBuffer[Input] -> TaskPoolMapOperator[ReadText->SplitBlocks(5)] -> TaskPoolMapOperator[Map(convert_json)->Map()]\n", + "2023-10-17 13:44:18,664\tINFO streaming_executor.py:94 -- Execution config: ExecutionOptions(resource_limits=ExecutionResources(cpu=None, gpu=None, object_store_memory=None), locality_with_output=False, preserve_order=False, actor_locality_enabled=True, verbose_progress=False)\n", + "2023-10-17 13:44:18,666\tINFO streaming_executor.py:96 -- Tip: For detailed progress reporting, run `ray.data.DataContext.get_current().execution_options.verbose_progress = True`\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "Running 0: 0%| | 0/25 [00:00Map() pid=4454)\u001b[0m 2023-10-17 13:45:30.356916: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "execute with ray took 403.94510068599993 sec\n", + "b63fe36529b64d6c8bcc397fdc69cb5f_000000_000000.parquet\n", + "b63fe36529b64d6c8bcc397fdc69cb5f_000001_000000.parquet\n", + "b63fe36529b64d6c8bcc397fdc69cb5f_000002_000000.parquet\n", + "b63fe36529b64d6c8bcc397fdc69cb5f_000003_000000.parquet\n", + "b63fe36529b64d6c8bcc397fdc69cb5f_000004_000000.parquet\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "Tl_ZMnKA1gwy" + }, + "id": "Tl_ZMnKA1gwy", + "execution_count": null, + "outputs": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "colab": { + "provenance": [] + }, + "widgets": { + "application/vnd.jupyter.widget-state+json": { + "e09f242bcc804099b93a5cddf36154a2": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_f3d97fb15127406dad0db89907348bdd", + "IPY_MODEL_6891f6c9cfb34d39bfcff8de98a8cd38", + "IPY_MODEL_a00afeaf8ff04c0884bf98b3069f646e" + ], + "layout": "IPY_MODEL_8265e565849543a4a442bc98c1cb0332" + } + }, + "f3d97fb15127406dad0db89907348bdd": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_517b9994fdd64400af1274dda172e340", + "placeholder": "​", + "style": "IPY_MODEL_b78e75185ae34070a4847137697f06ab", + "value": "Downloading (…)lve/main/config.json: 100%" + } + }, + "6891f6c9cfb34d39bfcff8de98a8cd38": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_0441bc5d0c6a48478d9710bf7f978f87", + "max": 615, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_2f11156a37124b94bab10a2636447179", + "value": 615 + } + }, + "a00afeaf8ff04c0884bf98b3069f646e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_7eae0419355d4b98bd115b76566abc74", + "placeholder": "​", + "style": "IPY_MODEL_e60d4ef9173a4ae19c5773cba968d087", + "value": " 615/615 [00:00<00:00, 37.7kB/s]" + } + }, + "8265e565849543a4a442bc98c1cb0332": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "517b9994fdd64400af1274dda172e340": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b78e75185ae34070a4847137697f06ab": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "0441bc5d0c6a48478d9710bf7f978f87": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "2f11156a37124b94bab10a2636447179": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "7eae0419355d4b98bd115b76566abc74": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "e60d4ef9173a4ae19c5773cba968d087": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f1ce6b0e84be48caa8e54c2503fbb071": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_f4af0d845d94424383f84f78a1ae787b", + "IPY_MODEL_b3c176f25bc84be88daaa2fbe21c4863", + "IPY_MODEL_cb7855349b264e3abd8b325a34810f5e" + ], + "layout": "IPY_MODEL_8343ed13bd81457680821e81e0f4bc1d" + } + }, + "f4af0d845d94424383f84f78a1ae787b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_a2d0b7f0c13746d797c79f39c5867288", + "placeholder": "​", + "style": "IPY_MODEL_6c622f1123084690a2a31172af5aceab", + "value": "Downloading (…)tencepiece.bpe.model: 100%" + } + }, + "b3c176f25bc84be88daaa2fbe21c4863": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "success", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_35a7ff0cf6b541cba38b3615cf16e7c3", + "max": 5069051, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_98beb7e1aa5945a58cad10d774833dc5", + "value": 5069051 + } + }, + "cb7855349b264e3abd8b325a34810f5e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_93f1e7a82f12454b9269cd07c88b5e05", + "placeholder": "​", + "style": "IPY_MODEL_d3d98f3c78cd4e2482227dbd8ca8d8ca", + "value": " 5.07M/5.07M [00:00<00:00, 48.5MB/s]" + } + }, + "8343ed13bd81457680821e81e0f4bc1d": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a2d0b7f0c13746d797c79f39c5867288": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "6c622f1123084690a2a31172af5aceab": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "35a7ff0cf6b541cba38b3615cf16e7c3": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "98beb7e1aa5945a58cad10d774833dc5": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "93f1e7a82f12454b9269cd07c88b5e05": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "d3d98f3c78cd4e2482227dbd8ca8d8ca": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "1370a3dd45884e82a624cdd9d65e3726": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_fbc46dd06b92402caa8b9179da4cc2eb", + "IPY_MODEL_61d7af938f014f9ab50bb23db307dac0", + "IPY_MODEL_9ea61af16e534b458bdfb87543716e8e" + ], + "layout": "IPY_MODEL_3abaa1d7aa7748a18512d8006e14f58b" + } + }, + "fbc46dd06b92402caa8b9179da4cc2eb": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_833c9f19ebeb4e8cac91ac6b8cbd8dcb", + "placeholder": "​", + "style": "IPY_MODEL_950d3e767d1c4df290ed7e7d97681d48", + "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 0.0 MiB/1.9 GiB object_store_memory: 100%" + } + }, + "61d7af938f014f9ab50bb23db307dac0": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_a599e5aca555460d9f8a7662fc225706", + "max": 25, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_b601605e7fa642b8967b885839413a9f", + "value": 5 + } + }, + "9ea61af16e534b458bdfb87543716e8e": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_8a54d170c69a4c5f97a8075df47e9a03", + "placeholder": "​", + "style": "IPY_MODEL_a80444477a2f4ae7aa227254fe3e2b43", + "value": " 5/5 [02:55<00:00, 33.76s/it]" + } + }, + "3abaa1d7aa7748a18512d8006e14f58b": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "833c9f19ebeb4e8cac91ac6b8cbd8dcb": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "950d3e767d1c4df290ed7e7d97681d48": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "a599e5aca555460d9f8a7662fc225706": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "b601605e7fa642b8967b885839413a9f": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "8a54d170c69a4c5f97a8075df47e9a03": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "a80444477a2f4ae7aa227254fe3e2b43": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "f026cbe9b8044003a293b29c848aa659": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HBoxModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HBoxModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HBoxView", + "box_style": "", + "children": [ + "IPY_MODEL_ee83a8e801f3408b90a3ac265a41320b", + "IPY_MODEL_33c2ddb9ad454bc88807bef4c80cca20", + "IPY_MODEL_5b2d379f3a3341b48f1061c68b8c4870" + ], + "layout": "IPY_MODEL_81915d4094a941cf917b4ca3eb9c5099" + } + }, + "ee83a8e801f3408b90a3ac265a41320b": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_9adfd3a41f8d4e5989a37585c1830c31", + "placeholder": "​", + "style": "IPY_MODEL_ac3b059fd4b24724bac4d33f7b3254a2", + "value": "Running: 0.0/1.0 CPU, 0.0/0.0 GPU, 0.0 MiB/1.9 GiB object_store_memory: 100%" + } + }, + "33c2ddb9ad454bc88807bef4c80cca20": { + "model_module": "@jupyter-widgets/controls", + "model_name": "FloatProgressModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "FloatProgressModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "ProgressView", + "bar_style": "", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_71f6ffde83184826b7f75f38b1487ba4", + "max": 25, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_4ddff026be3044d9bce8125a31e7cb95", + "value": 5 + } + }, + "5b2d379f3a3341b48f1061c68b8c4870": { + "model_module": "@jupyter-widgets/controls", + "model_name": "HTMLModel", + "model_module_version": "1.5.0", + "state": { + "_dom_classes": [], + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "HTMLModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/controls", + "_view_module_version": "1.5.0", + "_view_name": "HTMLView", + "description": "", + "description_tooltip": null, + "layout": "IPY_MODEL_6225e73a3cd54590873ab0b947c62010", + "placeholder": "​", + "style": "IPY_MODEL_16dbb463923b44e7916f04e1e5b5c15d", + "value": " 5/5 [03:19<00:00, 36.52s/it]" + } + }, + "81915d4094a941cf917b4ca3eb9c5099": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": "hidden", + "width": null + } + }, + "9adfd3a41f8d4e5989a37585c1830c31": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "ac3b059fd4b24724bac4d33f7b3254a2": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + }, + "71f6ffde83184826b7f75f38b1487ba4": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "4ddff026be3044d9bce8125a31e7cb95": { + "model_module": "@jupyter-widgets/controls", + "model_name": "ProgressStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "ProgressStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "bar_color": null, + "description_width": "" + } + }, + "6225e73a3cd54590873ab0b947c62010": { + "model_module": "@jupyter-widgets/base", + "model_name": "LayoutModel", + "model_module_version": "1.2.0", + "state": { + "_model_module": "@jupyter-widgets/base", + "_model_module_version": "1.2.0", + "_model_name": "LayoutModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "LayoutView", + "align_content": null, + "align_items": null, + "align_self": null, + "border": null, + "bottom": null, + "display": null, + "flex": null, + "flex_flow": null, + "grid_area": null, + "grid_auto_columns": null, + "grid_auto_flow": null, + "grid_auto_rows": null, + "grid_column": null, + "grid_gap": null, + "grid_row": null, + "grid_template_areas": null, + "grid_template_columns": null, + "grid_template_rows": null, + "height": null, + "justify_content": null, + "justify_items": null, + "left": null, + "margin": null, + "max_height": null, + "max_width": null, + "min_height": null, + "min_width": null, + "object_fit": null, + "object_position": null, + "order": null, + "overflow": null, + "overflow_x": null, + "overflow_y": null, + "padding": null, + "right": null, + "top": null, + "visibility": null, + "width": null + } + }, + "16dbb463923b44e7916f04e1e5b5c15d": { + "model_module": "@jupyter-widgets/controls", + "model_name": "DescriptionStyleModel", + "model_module_version": "1.5.0", + "state": { + "_model_module": "@jupyter-widgets/controls", + "_model_module_version": "1.5.0", + "_model_name": "DescriptionStyleModel", + "_view_count": null, + "_view_module": "@jupyter-widgets/base", + "_view_module_version": "1.2.0", + "_view_name": "StyleView", + "description_width": "" + } + } + } + } }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/RecDP/pyrecdp/primitives/llmutils/__init__.py b/RecDP/pyrecdp/primitives/llmutils/__init__.py index a0c5fcb07..1060bfd86 100644 --- a/RecDP/pyrecdp/primitives/llmutils/__init__.py +++ b/RecDP/pyrecdp/primitives/llmutils/__init__.py @@ -20,3 +20,4 @@ from .text_fixer import text_fixer from .sentence_split import sentence_split from .diversity_analysis import diversity_indicate +from .toxicity_score import toxicity_score, toxicity_score_spark diff --git a/RecDP/pyrecdp/primitives/llmutils/toxicity_score.py b/RecDP/pyrecdp/primitives/llmutils/toxicity_score.py new file mode 100644 index 000000000..a8badab02 --- /dev/null +++ b/RecDP/pyrecdp/primitives/llmutils/toxicity_score.py @@ -0,0 +1,60 @@ +import argparse +from pyrecdp.core.utils import Timer + + +def toxicity_score_spark(spark_df, text_key='text', threshold=0, model_type="multilingual", huggingface_config_path=None): + from pyrecdp.primitives.operations import TextToxicity + op = TextToxicity(text_key=text_key, threshold=threshold, model_type=model_type, huggingface_config_path=huggingface_config_path) + toxicity_df = op.process_spark(spark_df.sparkSession, spark_df) + return toxicity_df + + +def toxicity_score(dataset_path, + result_path, + data_file_type, + text_key='text', + threshold=0, + model_type="multilingual", + huggingface_config_path=None): + + from pyrecdp.LLM import TextPipeline + from pyrecdp.primitives.operations import JsonlReader, ParquetReader, TextToxicity, ParquetWriter + + pipeline = TextPipeline() + if data_file_type == 'jsonl': + reader = JsonlReader(dataset_path) + elif data_file_type == 'parquet': + reader = ParquetReader(dataset_path) + else: + raise NotImplementedError(f"{data_file_type} is not supported in RecDP LLM ResumableTextPipeline yet.") + ops = [ + reader, + TextToxicity(text_key=text_key, threshold=threshold, model_type=model_type, huggingface_config_path=huggingface_config_path), + ParquetWriter(result_path) + ] + pipeline.add_operations(ops) + pipeline.execute() + + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + parser.add_argument("--dataset_path", dest="dataset_path", type=str) + parser.add_argument("--result_path", dest="result_path", type=str) + parser.add_argument("--threshold", dest="threshold", type=float, default=0) + parser.add_argument("--text_key", dest="text_key", type=str, default="text") + parser.add_argument("--data_file_type", dest="data_file_type", type=str, default="jsonl") + parser.add_argument("--model_type", dest="model_type", type=str, default="multilingual") + parser.add_argument("--huggingface_config_path", dest="huggingface_config_path", type=str, default=None) + args = parser.parse_args() + + dataset_path = args.dataset_path + result_path = args.result_path + threshold = args.threshold + text_key = args.text_key + data_file_type = args.data_file_type + model_type = args.model_type + huggingface_config_path = args.huggingface_config_path + + with Timer(f"Generate toxicity score for {dataset_path}"): + toxicity_score(dataset_path, result_path, data_file_type, text_key=text_key, + threshold=threshold, model_type=model_type, huggingface_config_path=huggingface_config_path) diff --git a/RecDP/pyrecdp/primitives/operations/__init__.py b/RecDP/pyrecdp/primitives/operations/__init__.py index e3a91df65..290449134 100644 --- a/RecDP/pyrecdp/primitives/operations/__init__.py +++ b/RecDP/pyrecdp/primitives/operations/__init__.py @@ -15,3 +15,4 @@ from .text_qualityscorer import TextQualityScorer from .text_diversityindicate import TextDiversityIndicate from .text_custom import TextCustomerMap, TextCustomerFilter +from .text_toxicity import TextToxicity diff --git a/RecDP/pyrecdp/primitives/operations/text_toxicity.py b/RecDP/pyrecdp/primitives/operations/text_toxicity.py new file mode 100644 index 000000000..09dbe0e7d --- /dev/null +++ b/RecDP/pyrecdp/primitives/operations/text_toxicity.py @@ -0,0 +1,49 @@ +import os + +from .base import BaseLLMOperation, LLMOPERATORS +from ray.data import Dataset +from pyspark.sql import DataFrame +from detoxify import Detoxify + +def prepare_func_text_toxicity(model_type="multilingual", threshold=0, huggingface_config_path=None): + model = Detoxify(model_type, huggingface_config_path=huggingface_config_path) + + def generate_toxicity_label(content): + result = model.predict(content) + if result["toxicity"] < threshold: + return None + else: + return float(result["toxicity"]) + + return generate_toxicity_label + + +class TextToxicity(BaseLLMOperation): + def __init__(self, text_key='text', threshold=0, model_type="multilingual", huggingface_config_path=None): + settings = {'text_key': text_key, 'threshold': threshold, 'model_type': model_type, 'huggingface_config_path': huggingface_config_path} + super().__init__(settings) + self.support_spark = True + self.support_ray = True + self.actual_func = None + self.text_key = text_key + self.new_key = f"{text_key}_toxicity" + self.threshold = threshold + self.model_type = model_type + self.huggingface_config_path = huggingface_config_path + + def process_rayds(self, ds: Dataset) -> Dataset: + if self.actual_func is None: + self.actual_func = prepare_func_text_toxicity(model_type=self.model_type, + threshold=self.threshold, huggingface_config_path=self.huggingface_config_path) + return ds.map(lambda x: self.process_row(x, self.text_key, self.new_key, self.actual_func)) + + def process_spark(self, spark, spark_df: DataFrame) -> DataFrame: + import pyspark.sql.functions as F + if self.actual_func is None: + self.actual_func = F.udf(prepare_func_text_toxicity(model_type=self.model_type, + threshold=self.threshold, huggingface_config_path=self.huggingface_config_path)) + + return spark_df.withColumn(self.new_key, self.actual_func(F.col(self.text_key))) + + +LLMOPERATORS.register(TextToxicity) diff --git a/RecDP/setup.py b/RecDP/setup.py index c1c8f3626..4c4a000cb 100644 --- a/RecDP/setup.py +++ b/RecDP/setup.py @@ -73,12 +73,13 @@ "huggingface-hub==0.16.4", "loguru==0.7.2", "tabulate==0.9.0", - "sentencepiece==0.1.99", + "sentencepiece", "selectolax", "spacy", "torch", "Faker", "ray", "loguru", - "emoji==2.2.0", + "detoxify", + "emoji==2.2.0" ]) diff --git a/RecDP/tests/test_llmutils.py b/RecDP/tests/test_llmutils.py index 17bf44128..545a0c520 100644 --- a/RecDP/tests/test_llmutils.py +++ b/RecDP/tests/test_llmutils.py @@ -68,6 +68,28 @@ def test_quality_classifier_spark(self): quality_classifier_df = quality_classifier_spark(spark_df) quality_classifier_df.show() + def test_toxicity_score(self): + from pyrecdp.primitives.llmutils import toxicity_score + from pyrecdp.core.cache_utils import RECDP_MODELS_CACHE + huggingface_config_path = os.path.join(RECDP_MODELS_CACHE, "models--xlm-roberta-base") + file_path = os.path.join(cur_dir, "data/llm_data/tiny_c4_sample_for_pii.jsonl") + save_path = os.path.join(cur_dir, "data/output/toxicity_score") + toxicity_score(file_path, save_path, "jsonl", text_key='text', + threshold=0, model_type="multilingual", huggingface_config_path=huggingface_config_path) + + def test_toxicity_score_spark(self): + from pyrecdp.primitives.llmutils import toxicity_score_spark + from pyrecdp.core import SparkDataProcessor + from pyrecdp.core.cache_utils import RECDP_MODELS_CACHE + huggingface_config_path = os.path.join(RECDP_MODELS_CACHE, "models--xlm-roberta-base") + data_file = f'file://{os.path.join(cur_dir, "data/llm_data/tiny_c4_sample_for_pii.jsonl")}' + rdp = SparkDataProcessor() + spark = rdp.spark + spark_df = spark.read.json(data_file) + toxicity_score_df = toxicity_score_spark(spark_df, text_key='text', + threshold=0, model_type="multilingual", huggingface_config_path=huggingface_config_path) + toxicity_score_df.show() + def test_diversity_analysis(self): from pyrecdp.primitives.llmutils import diversity_indicate data_dir = "tests/data/llm_data/" From f6ee233a4bd7d1d4f10256cd68aa7575948c696b Mon Sep 17 00:00:00 2001 From: ChaoJun Zhang Date: Wed, 18 Oct 2023 23:06:32 +0800 Subject: [PATCH 19/47] [v1.2][ISSUE-306] Support extract text from pdf, image and docx (#390) * support extract text from pdf, image and docx * support extract text from pdf, image and docx * support extract text from pdf, image and docx --- RecDP/pyrecdp/primitives/document/__init__.py | 0 .../primitives/llmutils/document/__init__.py | 0 .../primitives/llmutils/document/extractor.py | 157 ++++++++++++++++++ .../primitives/llmutils/document/reader.py | 154 +++++++++++++++++ .../primitives/llmutils/document/schema.py | 19 +++ .../primitives/llmutils/document/writer.py | 19 +++ .../primitives/llmutils/document_extractor.py | 69 ++++++++ RecDP/setup.py | 6 +- .../llm_data/document/english-and-korean.png | Bin 0 -> 305401 bytes .../data/llm_data/document/handbook-872p.docx | Bin 0 -> 482883 bytes .../document/layout-parser-paper-10p.jpg | Bin 0 -> 5191434 bytes .../llm_data/document/layout-parser-paper.pdf | Bin 0 -> 4686220 bytes RecDP/tests/test_llmutils.py | 28 +++- 13 files changed, 450 insertions(+), 2 deletions(-) create mode 100644 RecDP/pyrecdp/primitives/document/__init__.py create mode 100644 RecDP/pyrecdp/primitives/llmutils/document/__init__.py create mode 100644 RecDP/pyrecdp/primitives/llmutils/document/extractor.py create mode 100644 RecDP/pyrecdp/primitives/llmutils/document/reader.py create mode 100644 RecDP/pyrecdp/primitives/llmutils/document/schema.py create mode 100644 RecDP/pyrecdp/primitives/llmutils/document/writer.py create mode 100644 RecDP/pyrecdp/primitives/llmutils/document_extractor.py create mode 100644 RecDP/tests/data/llm_data/document/english-and-korean.png create mode 100644 RecDP/tests/data/llm_data/document/handbook-872p.docx create mode 100644 RecDP/tests/data/llm_data/document/layout-parser-paper-10p.jpg create mode 100644 RecDP/tests/data/llm_data/document/layout-parser-paper.pdf diff --git a/RecDP/pyrecdp/primitives/document/__init__.py b/RecDP/pyrecdp/primitives/document/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/RecDP/pyrecdp/primitives/llmutils/document/__init__.py b/RecDP/pyrecdp/primitives/llmutils/document/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/RecDP/pyrecdp/primitives/llmutils/document/extractor.py b/RecDP/pyrecdp/primitives/llmutils/document/extractor.py new file mode 100644 index 000000000..a16686d48 --- /dev/null +++ b/RecDP/pyrecdp/primitives/llmutils/document/extractor.py @@ -0,0 +1,157 @@ +import logging +import os +from typing import Optional, Type + +from .reader import * +from .writer import DocumentWriter + +DEFAULT_SUPPORTED_SUFFIX = [ + ".pdf", + ".jpg", + ".png", + ".jpeg", + ".doc", + ".docx", + ".ppt", + ".pptx", + ".xls", + ".xlsx", +] + +CUSTOMIZE_SUPPORTED_SUFFIX: Dict[str, Type[DocumentReader]] = { + ".pdf": PDFReader, + ".docx": DocxReader, + ".doc": DocxReader, + ".jpg": ImageReader, + ".jpeg": ImageReader, + ".png": ImageReader, +} + +logger = logging.getLogger(__name__) + + +class DocumentExtractor: + def __init__( + self, + output_file: str, + input_dir: Optional[str] = None, + glob: str = "**/[!.]*", + input_files: Optional[List] = None, + exclude: Optional[List] = None, + exclude_hidden: bool = True, + silent_errors: bool = False, + recursive: bool = False, + encoding: str = "utf-8", + required_exts: Optional[List[str]] = None, + ) -> None: + if not input_dir and not input_files: + raise ValueError("Must provide either `input_dir` or `input_files`.") + if not output_file: + raise ValueError("Must provide either `output_file` or `writer`.") + self.glob = glob + self.encoding = encoding + self.silent_errors = silent_errors + self.exclude = exclude + self.recursive = recursive + self.exclude_hidden = exclude_hidden + self.required_exts = required_exts + self.file_extractor = {} + if input_files: + self.input_files = [] + for path in input_files: + if not os.path.isfile(path): + raise ValueError(f"File {path} does not exist.") + input_file = Path(path) + self.input_files.append(input_file) + elif input_dir: + if not os.path.isdir(input_dir): + raise ValueError(f"Directory {input_dir} does not exist.") + self.input_dir = Path(input_dir) + self.exclude = exclude + self.input_files = self._add_files(self.input_dir) + + self.supported_suffix = DEFAULT_SUPPORTED_SUFFIX + self.output_file = output_file + + def _add_files(self, input_dir: Path) -> List[Path]: + """Add files.""" + all_files = set() + rejected_files = set() + + if self.exclude is not None: + for excluded_pattern in self.exclude: + if self.recursive: + # Recursive glob + for file in input_dir.rglob(excluded_pattern): + rejected_files.add(Path(file)) + else: + # Non-recursive glob + for file in input_dir.glob(excluded_pattern): + rejected_files.add(Path(file)) + + p = Path(input_dir) + file_refs = list(p.rglob(self.glob) if self.recursive else p.glob(self.glob)) + + for ref in file_refs: + # Manually check if file is hidden or directory instead of + # in glob for backwards compatibility. + is_dir = ref.is_dir() + skip_because_hidden = self.exclude_hidden and ref.name.startswith(".") + skip_because_bad_ext = ( + self.required_exts is not None and ref.suffix not in self.required_exts + ) + skip_because_excluded = ref in rejected_files + + if ( + is_dir + or skip_because_hidden + or skip_because_bad_ext + or skip_because_excluded + ): + continue + else: + all_files.add(ref) + + new_input_files = sorted(all_files) + + if len(new_input_files) == 0: + raise ValueError(f"No files found in {input_dir}.") + + # print total number of files added + logger.debug( + f"> [DocumentExtractor] Total files added: {len(new_input_files)}" + ) + + return new_input_files + + def execute(self): + from tqdm import tqdm + pbar = tqdm(total=len(self.input_files)) + with DocumentWriter(self.output_file) as writer: + for input_file in self.input_files: + self.writeDocument(input_file, pbar, writer) + + def writeDocument(self, input_file, pbar, writer: DocumentWriter): + try: + file_suffix = input_file.suffix.lower() + if file_suffix in self.supported_suffix: + if file_suffix in CUSTOMIZE_SUPPORTED_SUFFIX: + if file_suffix not in self.file_extractor: + self.file_extractor[file_suffix] = CUSTOMIZE_SUPPORTED_SUFFIX[file_suffix]() + reader = self.file_extractor[file_suffix] + docs = reader.load_data(input_file) + else: + reader = UnstructuredReader(input_file) + docs = reader.load_data() + for doc in docs: + writer.write(doc) + else: + logger.info(f"Skip loading file {input_file!s}: file suffix {file_suffix} is not supported") + + except Exception as e: + if self.silent_errors: + logger.warning(f"Error loading file {input_file!s}: {e}") + else: + raise e + finally: + pbar.update(1) diff --git a/RecDP/pyrecdp/primitives/llmutils/document/reader.py b/RecDP/pyrecdp/primitives/llmutils/document/reader.py new file mode 100644 index 000000000..f4c9ea320 --- /dev/null +++ b/RecDP/pyrecdp/primitives/llmutils/document/reader.py @@ -0,0 +1,154 @@ +from abc import abstractmethod, ABC +from pathlib import Path +from typing import Any, List, Dict, Union + +from .schema import Document + + +class DocumentReader(ABC): + """Utilities for loading data from a directory.""" + + @abstractmethod + def load_data(self, *args: Any, **load_kwargs: Any) -> List[Document]: + """Load data from the input directory.""" + + +class PDFReader(DocumentReader): + """PDF parser.""" + + def load_data(self, file: Path, password: str = None) -> List[Document]: + """Parse file.""" + + import pypdf + + with open(file, "rb") as fp: + # Create a PDF object + pdf = pypdf.PdfReader(file, password=password) + + # Get the number of pages in the PDF document + num_pages = len(pdf.pages) + + # Iterate over every page + docs = [] + for page in range(num_pages): + # Extract the text from the page + page_text = pdf.pages[page].extract_text() + page_label = pdf.page_labels[page] + metadata = {"page_label": page_label, "source": file.name} + docs.append(Document(text=page_text, metadata=metadata)) + return docs + + +class DocxReader(DocumentReader): + """Docx parser.""" + + def load_data(self, file: Path) -> List[Document]: + """Parse file.""" + import docx + doc = docx.Document(file) + + # read in each paragraph in file + return [Document(text=p.text, metadata={"source": file.name}) for p in doc.paragraphs] + + +class ImageReader(DocumentReader): + """Image parser. + + Extract text from images using pytesseract. + + """ + + def __init__( + self, + keep_image: bool = False, + ): + self._keep_image = keep_image + + def load_data(self, file: Path) -> List[Document]: + """Parse file.""" + from PIL import Image + from pytesseract import pytesseract + # load document image + image = Image.open(file) + if image.mode != "RGB": + image = image.convert("RGB") + + # Parse image into text + text_str = pytesseract.image_to_string(image) + + return [ + Document(text=text_str, metadata={"source": str(file)}) + ] + + +class UnstructuredReader(DocumentReader): + """Loader that uses `Unstructured`.""" + + def __init__( + self, + file_path: Union[str, List[str]], + mode: str = "elements", + **unstructured_kwargs: Any, + ): + _valid_modes = {"single", "elements", "paged"} + if mode not in _valid_modes: + raise ValueError( + f"Got {mode} for `mode`, but should be one of `{_valid_modes}`" + ) + self.mode = mode + self.file_path = file_path + self.unstructured_kwargs = unstructured_kwargs + + def _get_elements(self) -> List: + from unstructured.partition.auto import partition + return partition(filename=self.file_path, **self.unstructured_kwargs) + + def _get_metadata(self) -> dict: + return {"source": self.file_path} + + def load_data(self) -> List[Document]: + """Load file.""" + elements = self._get_elements() + if self.mode == "elements": + docs: List[Document] = list() + for element in elements: + metadata = self._get_metadata() + # NOTE(MthwRobinson) - the attribute check is for backward compatibility + # with unstructured<0.4.9. The metadata attributed was added in 0.4.9. + if hasattr(element, "metadata"): + metadata.update(element.metadata.to_dict()) + if hasattr(element, "category"): + metadata["category"] = element.category + docs.append(Document(text=str(element), metadata=metadata)) + elif self.mode == "paged": + text_dict: Dict[int, str] = {} + meta_dict: Dict[int, Dict] = {} + + for idx, element in enumerate(elements): + metadata = self._get_metadata() + if hasattr(element, "metadata"): + metadata.update(element.metadata.to_dict()) + page_number = metadata.get("page_number", 1) + + # Check if this page_number already exists in docs_dict + if page_number not in text_dict: + # If not, create new entry with initial text and metadata + text_dict[page_number] = str(element) + "\n\n" + meta_dict[page_number] = metadata + else: + # If exists, append to text and update the metadata + text_dict[page_number] += str(element) + "\n\n" + meta_dict[page_number].update(metadata) + + # Convert the dict to a list of Document objects + docs = [ + Document(text=text_dict[key], metadata=meta_dict[key]) + for key in text_dict.keys() + ] + elif self.mode == "single": + metadata = self._get_metadata() + text = "\n\n".join([str(el) for el in elements]) + docs = [Document(text=text, metadata=metadata)] + else: + raise ValueError(f"mode of {self.mode} not supported.") + return docs diff --git a/RecDP/pyrecdp/primitives/llmutils/document/schema.py b/RecDP/pyrecdp/primitives/llmutils/document/schema.py new file mode 100644 index 000000000..1e0a73313 --- /dev/null +++ b/RecDP/pyrecdp/primitives/llmutils/document/schema.py @@ -0,0 +1,19 @@ +from dataclasses import dataclass, asdict + + +@dataclass +class Document: + """Class for storing a piece of text and associated metadata.""" + text: str + """String text.""" + metadata: dict + """Arbitrary metadata about the page content (e.g., source, relationships to other + documents, etc.). + """ + + @property + def __dict__(self): + return asdict(self) + + def json(self): + return str(self.__dict__) diff --git a/RecDP/pyrecdp/primitives/llmutils/document/writer.py b/RecDP/pyrecdp/primitives/llmutils/document/writer.py new file mode 100644 index 000000000..b86a011b3 --- /dev/null +++ b/RecDP/pyrecdp/primitives/llmutils/document/writer.py @@ -0,0 +1,19 @@ +import os + +from .schema import Document + + +class DocumentWriter: + def __init__(self, file: str): + self.file = file + + def __enter__(self): + self.writer = open(self.file, 'wb') + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + self.writer.close() + + def write(self, doc: Document): + if doc.text.strip() != "": + self.writer.write(str.encode(doc.json() + os.linesep)) diff --git a/RecDP/pyrecdp/primitives/llmutils/document_extractor.py b/RecDP/pyrecdp/primitives/llmutils/document_extractor.py new file mode 100644 index 000000000..2774d5d0b --- /dev/null +++ b/RecDP/pyrecdp/primitives/llmutils/document_extractor.py @@ -0,0 +1,69 @@ +from typing import Optional + +from pyrecdp.primitives.llmutils.document.extractor import DocumentExtractor +from pyrecdp.primitives.llmutils.document.reader import * +from pyrecdp.primitives.llmutils.document.writer import DocumentWriter + + +def pdf_to_text(in_file: str, out_file: str, password: str = None): + reader = PDFReader() + with DocumentWriter(out_file) as writer: + for doc in reader.load_data(Path(in_file), password): + writer.write(doc) + + +def docx_to_text(in_file: str, out_file: str): + reader = DocxReader() + with DocumentWriter(out_file) as writer: + for doc in reader.load_data(Path(in_file)): + writer.write(doc) + + +def image_to_text(in_file: str, out_file: str): + reader = ImageReader() + with DocumentWriter(out_file) as writer: + for doc in reader.load_data(Path(in_file)): + writer.write(doc) + + +def document_to_text(output_file: str, + input_dir: Optional[str] = None, + glob: str = "**/*.*", + input_files: Optional[List[str]] = None, + silent_errors: bool = False, + recursive: bool = False, + required_exts: Optional[List[str]] = None): + from pyrecdp.core.utils import Timer + with Timer(f"Document converter with args [input_dir= {input_dir}, glob={glob}, input_files={input_files}]"): + converter = DocumentExtractor( + output_file=output_file, + input_dir=input_dir, + glob=glob, + input_files=input_files, + silent_errors=silent_errors, + recursive=recursive, + required_exts=required_exts) + converter.execute() + + +if __name__ == '__main__': + import argparse + + parser = argparse.ArgumentParser() + parser.add_argument("-d", "--input_dir", dest="input_dir", type=str) + parser.add_argument("-g", "--glob", dest="glob", type=str, default="**/*.pdf") + parser.add_argument("-i", "--input_files", dest="input_files", type=str, nargs="*", default=None) + parser.add_argument("-o", "--output_file", dest="output_file", type=str) + parser.add_argument("-e", "--silent_errors", dest="silent_errors", default=False, type=bool) + parser.add_argument("-r", "--recursive", dest="recursive", type=bool, default=False) + parser.add_argument("-t", "--required_exts", dest="required_exts", type=str, nargs="*", default=None) + args = parser.parse_args() + + document_to_text( + output_file=args.output_file, + input_dir=args.input_dir, + glob=args.glob, + input_files=args.input_files, + silent_errors=args.silent_errors, + recursive=args.recursive, + required_exts=args.required_exts) diff --git a/RecDP/setup.py b/RecDP/setup.py index 4c4a000cb..672af4aca 100644 --- a/RecDP/setup.py +++ b/RecDP/setup.py @@ -81,5 +81,9 @@ "ray", "loguru", "detoxify", - "emoji==2.2.0" + "emoji==2.2.0", + "pypdf", + "python-docx", + "pdfminer", + "unstructured[ppt,pptx,xlsx]", ]) diff --git a/RecDP/tests/data/llm_data/document/english-and-korean.png b/RecDP/tests/data/llm_data/document/english-and-korean.png new file mode 100644 index 0000000000000000000000000000000000000000..4a54d93ff41d739c34b436a215931fa34086bea9 GIT binary patch literal 305401 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

W9?J#Q% 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 literal 0 HcmV?d00001 diff --git a/RecDP/tests/data/llm_data/document/handbook-872p.docx b/RecDP/tests/data/llm_data/document/handbook-872p.docx new file mode 100644 index 0000000000000000000000000000000000000000..c9a47b23687ecdfcd6773a71aa8a28ba8488d2e6 GIT binary patch literal 482883 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�L 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

BF#?VleyBKO`?J8Q?9v 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 z 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

`5B!F7dn-0rZhhxIKeWh0`p>sX9uNuk3^{%b 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 z zA>Ba^LI$J0BhdH|3f4(EME8Brb8UL)oCV~bCuT`svEzn(BZ`Lz&U42;Hc!7y`0T6I zWd70Fq+gT)l=FAmi=Ik72HN6nX1KDFchEAc&_dF=bnW zW&cP&W{qUp3gQ;W+GiXq(E?>Upg>ROSohtgc}BWjDIPq{+D7iTlU1A>(Sw`B6wY)d zWh&#w4SLvaG14Z#a|~L0FoyM0FbZf>G>&SOifONkT8V#hQ#bPNt0obuxK6?>22K0vs5;;X{*A%I2G*)%}G3piHMI@;t^EjvLp}N z0&DLpQbG3sqwWOE4&S}XF54&?Cd^N*N%CC`P(&jHgEL7qIv~-Nrl{H#n%c(KLTIrE zi!`u1-P!Fkq{ro2%gEwYShzO$d|8J;b*)?{TJU|W5t>MF997<@0s;t<_jK+zon&eZuRgJV_?c#Ad zBvk7Z##gl@+H`ztZIp#Z)Op(y9kt)#ux| zGh7DsDwrf+;Oj(Vd)x=F4B}1QB*?nh>IT%#e;5A+<02WV|HfuX%YP|{VL#0Ps>yb0 zqiSs0h3hklG)4w!uKg=Ra)h=8s6=XUe;C`$a+S-5<&G$az+yKK5Z0v7kfXpHHrp8F z-j`8%m`V6+z8~g_tDn5U#>?HANd>;~73iIypm8AIpDKdgJ=qK_ayAncQuqZY+Slt3$Y6L7sZ@B-mr1K`QLYk`N#}p0#ch!`RP-Z()UOP z-qe-KnKC;V{}EAkxdG?_$5eAm>{|$=-2|{barl3^7rsACdn-jZ;gCuiwkNZ$as(*4a)KWpO(_2g ze(D+@!7(K6$&tu*@8@c5d7^CGc0-#KgiX6C24@;!QcnJ1-Vcu=W+rkl#fwyo-0O&+XQC zWeo$!^^Zif5m#Heo&8 zq)bg$PTK>rwbs7BvBp!ed!H|N;UVTIdEtaz4;^pckAC{fe__t! zU`zrSt_+JPo{1R5PmJ(fN76EHU1>H%%nWzJQ5Vq~}7S`v==i zBZcJhRIlTLw*E}{ld$e1$l4_~d$VfSBG2P1~9nd&aRG`35@F&X)vf3eqH%GIuGgVo@=dDby&)2S@TcL)Iwys(l za@5v6SiY*X;6epUmzo>n1VW)^oLA0dN>P{A7~xcFc*ZC+78}l5ErEDWf)5sgHwuo< zdbX1A=Invg#%_RL&M%4LcfAwc9eJWi-#hSAyvy>D{VVtq2W(dkTGZNwW5<{6`Lk-wrk zXw0${ZF+ktoHD|go#OHnJ?f*B3Yt`HF2h zy;*Nic@J|Xo9k0?-Mi+HqYX^@D5^kYp3n(&Id^d^&q24d@dEVD``^=hO8#E3E3bY> zfap(wt=)qn*NuGQDwU^_8{Q3s&^YqXDCpn~1iU~RQhY))*Pb&c%te{@4_Aqdc_wlzTg zyuj&}_1GO|6%zO{X^f!}Znvt(Ya`Y5nj}j*S=a%TXAVSrm zKk^3iUhR67UIs;+kI&8^=e<1szva+|8esfN;;++X1~+;^2t@}uhUvLVa^9_Yp+HI@ zLf{UF&B59*ZK0S}9qWfht{F?NKg|>sU`8%UR>MDav}fB7+YC}P5lwjn_KKZMiR0t@ z@0pg?3|h2mFWDJ+P{Tv(TTc9PwGidk{=SORY~UH3yub|3FCy5A$64W-g(~4cZj)u5 z%|Bgp1ksH3pq~1wLd9%6r_wg+JcMfaihtNHL8SdQN*U*c)Wb8&%gsVAUI11F4NZQh zCsF9X{jpM|#&H~ZL=DH``Aa?SKXQw5iO~W?EACavP;8?jW^bCMePtdMl+vt52qb;0 zIN_T39|p` zRCpOtfga?c6E-CKfn|}`Kn+df)``RjCt)Ph0~*sv?JJU=J$Wk;3BFu+ZNZ&TB%|Dq zKVEyRZM8do@NFaq%Fh5>v7+F&eEVx$1V2YSR=9nN1Fbc&`pZV z*Qh>nZb4>ob-^wA3mmgn!7J7e0%Aa{8$>qAS4$vvT53+wEIGC@7B%H2uzJy$!I~ft z4|MPJI892S_up}`fJm}X+}m?*E-r!ghDwr7)N&|b!J)!v^T<;p zO7TKAxQzJ34s-NZ{P1Av(S`RDM96!x`b?Bbx|9WyL^|s@^hj8aH(bQ`yH5q!|hg zYDw5OT^92mi5vhszuzy(iF_LQE@x65c8dQ(y?U{4=30)!=>i@Ibp#~}7u=@Wmfv-E`f zU%?!r9Ddvv&^57}f|=3?8Y6OwG~i$<-RX%0VbpsILMCyKy%~tL(8DLEpp2%(2nbB) zUzm3emHu|kq&eyUSSqDQj%2lHx&_OL83lRhS>Pb9;^JDp0g})WVkn~j{O3v2I}*IE z8^GDgDgq&JB@&T!M*b<1KlV}cp~puTaJs?0A(Hn^fa>`ZS{eYF(d}iEQ9;kSVets%tNTW?6F&Y62eZ>JEQ`dyBt;aE9r z4ijiIY0RA$>YwkX)6cgM@1zZDR~$;1%$ z=yZ$@H6j_@_<3E8hAlL^`d&pd?zdv}dJOqaBQr2oArSaP=d{R6(ai#@BqL7ZDp+}J zxb{wgB8z(Jd|UUQ+XsA0PH=bx(%Z;4Vew#`B!JeCebxjCsWyoX-u%`%<@RyRhG(v7 zrps+RbUmSyuBZ!qAO}mz#|v`-OdQC(xn66n`dQrUHQx8P{tKxTAdItnG044tpN>VG zwZwhoWdmK^R!%GJq>w&Xh)_lN(B{*60R)BF8f_lZI~vq*eVeeW%emhHAJ=U>f`5lt zBp*i1O2yDnR`zVBkd6=k)fsn6>*a&2Q3nYdd72icFdqi~A-gyvt$fmsx*;-%?NU4C z*Sz@Ga+^|PY?dp5Z5_=uHY0|Hzk~<3v!)kL;+}|}e;di2QBhuE@&P|s46SMucP zC`Al@+gf#dW{~4)^(M$gr>+=1(4x)40kDs^9gVyoVa*JWQ!6XoAWJ2Cq@z zm#Wc8GSq*XqPk~4V$)=oY$RF)E9k`yt6PYAnKSo81}7$ZVSj3#H}aQU(7jN)G&G5z z(}fctGvBfY|JfU^tvwOLY)7V(`_Lzp2bMAr;V~V@Xe-Q9BKgHKg%*1xHk`Jy%oSmrQ_D?i$KCS!wUu`Jt>_u7dy}UzM+j8Gv_LCH?Mh zX}!PB3$$h2#ncKcZ!#>)oFgI*l6kf`i z)5W2X*ho1DwR+aA@ei60?=ek~!|*;8e>tiKWSE(y2tg|UUZc)+T_c>G&qjPOe)*%sj==_4ee}HnvTP?Doko$nYM@utjk%vkV${z!Ji+!+r zC1TJ`)}by5VIq37#+@^L0^*iXo4NXWs`I4Fcx$eyvTgdLVHds>o5ox=g}`K<8Z#v$ zqd;ZC(x%W4CW|IbwSd|QrROZ2vJ_Y1s{9o-dH02Vxjsl#eg1hvJ#he8P zV1pmDJH{%5AuZwP^Z)ItG;w=9=-Y1d`$J{pY?AWTkP z7(>dzzgpUH=CRt=q+geBO2!6?Tq2cOQ;7lkpfVcGVJ1!9KSYzXlVPx5f2YRA)CIV& zlExYBrVqb#O)2#{;yAf35$}eV^@_Xp_y^mQz-NA{Cd1F@J{JVRJZmV}0Mdzc ze%ym}&eg_MKbnxRkX?QI#}pPP7v07VY$KP;^K#cw=s75PH?_aJ43?i09bO&Yl?j@m zLPkr&IfXs51hY)+IZ>!*Z@?7ssy#hQ^ljZw$FUutqua&Sz;6&g0ID2MH_4?^u_EXduKbFEs>m zgF>BCnDfnOGddo!j4l}>wz$KhA%n|E^RY;rld~k(28UPLJd5u=k#cyFxiMoR$HZ7B zu{yrxFZl>3f{fKwg|24F;z__-C)p?i^UF5@rL3k#GW*&i;bbO#NfdyzO4T^qd)}`o z{Rk>wlBqZB_lWeGq&T-QtIPxbZ5paoUpma=N-vIZSSGVNviRzU4nGmeB(>O>ib#lX z?u$~qi_K%XPrO?UFO)E7&wlyW9$&B3Gw?GFUj7;ulT###p zm$LP0ncV2TPNjv2pZ$Hwi)W%qVTV~Kp*;QQ)Eq`UqGm-=iU)N4HDqgC(N9YbpmaTX z_cnb)Mk+KCiLOb=;^t1oR9>VR_sR(25sS;@rrKkb@YF->EBq;R`5J((`QMNLGyI9e zOOiOUe)W%KC`#j1kSiK5i~wTI-SOMU+a8^ugdG5F`J3ud$T9m{XSrjgdVczFfrP@a zigFWd8`*jh?mtR}P7A@leFdB;D1L9GZfgmfV$WY?%4f;>@>41^Z|me1;nFms*~4&b zKL|L;n02{#=GuZ){4XSzA<7#7g;~1E}X(RJ5v2>2Z zd|@MrX@D(?te9?Tmmxr|E~_swHn$mbJ&HNJpCztdLt>Y${p%0*#&Z(_Naioh{hCz+ ziIV?HU?8Y$h8M?|G(9U~gr_=I0BtFe7ac2+^eKF!p+h6Mc?GroRpS4JKu35LNf-P} zX4E(qm1I>ii5tj(2^iUUKQK1%j)UNvXySRs1&#>TmMeHifm^ODLzy($(>YLc#~X@g zqj(v0{#4yHjsJKB-6gPOCIZpVfOp^fQMRs!2}ju}O;PMO<9?NRi7>#!NKZzbz^efIRjz00llz6XJz1lcWER=SuOqa{2M+0V^Yoo6)z=JBJm3 zRM02*sJ>iU~+&NO9 zFpMOA{&09?VbSsL^vp3b5hvbUkWyHQTfKgE3?;cqQmp7tVYwJeyz1pBg{urfVbO0r z0XJfL(Wfly17)Nuo#0fgS}L>2g~`)~1e^AP+lzF*p+*)>dhCqxdeZMqcC^5<2wI_r zqH!WKfnT-shR|_Dck4L*MFyAZuy*-eReZ^+S5SB-T2z)TsYRp&Uk-o7A>rh`w(%N( z|CPV%|L^5+`}D38ORx_f_-Y&Iei=bzFNPiswB|+F&18Nh@V?ML6(vUTUeG8TN6sJm zN~J#)0QkMX-$l~6XRAWQD{JLX8EK>N&@b>x`qDGiL(|)+#a|pQOO$iX83O^k<6}#205<(St7l*k}4C8 zv_r~m*wb8p%DdPiT~%;MKS)F_`y}!oSPwM#d_h~DrvxrH2b*E8E;TcbNujY`7AhNG z0SZ$j9vA@*9`k!)>M7_kx{J;Inb%KkQKJ4;F7OsLZF~_YyW$ol0Gfhiuv{_o)#2JH zo&Uqxg(Y}t#12XV!P38qcbBFmjJy7>2TcvD?2BT1Cb*%js9eTwY>JD*TOk5a85T*S}DQ zshiC|v=08nt0{gyC=r|(KF-4=!s?oV5^gql4*F`}aC!4lQf|It{q!dL5ZW}vzXskg zZJ991{wTVDj*2drs)Tj8JS!P_z9w-cZ!E*UV^t z04@5KA<)%lP*-p5ly(XND)AWIUp+N3FLXbdcK)H}E+bHzP$Sd8aXO-z9%QPX&_0CO z+}Q3R@RAKKPcYb#VxM~KP#Xk%p9dXV36!igGz+6E39e%+hvW_B3*~f5Ho8LDhMCw< zK%XOeLKzUEMwwn6ETd<88+B%Ayh3HsAw$C=v|Nfkz^(zx-enAtYwO*k{joxu2^TFm zMwq-zgi~DEyrJ_5LB>@SS3(Oowyh1Jki+|V02+-@L8ziwuAq?`?B>SV%uqIe??ISw zM#0-YpGqAxI(|)jAo)aJFugqAXRxYhj$OIeWH7+1IZw&MHE35^i9~#7Jgggop@x|m z5=&w$)dV{J_-VPvg}H;p_$jrmFM*Fk^g8Oc_)ynCe`StEr^isXt?N8z>x;@iikp@T><*W+=d{W^;e)7OYK z<+LwrFo-TeRIzQ>wTnCkwNX?*f!szxu)Yjg=F3h8VVDUXFWDO8Zc)+q7`Ai7f{a!Q zd$EGZo@}~5o9@gDmGOe;a17gOqyW#ht0{M33V-JM`3sl9+P0yDkv}xIR#|9CgzS!O zmP46>P@`Syu)g}AvM(m_U$6RkT zZrxHnEn8x^y+x!o9i$n^OAv@je1#TOO1VE>x^As(lN9<)b?lJ) z;OIvT%>(>|6`;Lj*7{8_>-?*Q6;p9K;)lV&-BB|K2G9$G(E)r3!>F2eSaX?NP?7!x z{oUawRHJF`5(#H!0on3jgs~2F!Q+>I9xp!GNLbre`nSq&;|3$A@Q9fGffp2}syCod zF!h{cOn1WUMWib=t3=!v3QKeMhoB%3ukQZ+b{xK)8$#!Qs9v&%@m8n;`2B;i-SwAt zSi?Y0U0z&rC5#JGdsu9vG1``#xQ}GL%4*aJRDI>i>`(W#Z{t>|eZEMmJ@^N=jYa59 zu_{s9>5XnVv9M9AqMJHa<@E>SKPJ!R)WUi9DYDr|0bLVgR+sei$Mm|EjO{709gMrPix z&4?Zkng;gbvXdmriU<41o3ZG$a`MnFO!8Vc?RwYi#o(uEhvcV_7N}`fUr&Uuy~GmVwa?( z2;{}GZ<-)gR}P?QfwRB=K1JrLzqIgn8A`a1>F}XV|0m>D69R2ETLr_=FWBY!Flkm* zas}aC zClJRj$Z(onL*!WfNW`NbpmcQpjIDvHw|*LK5GyFW{Lo;XHOw=l_)*3t%B#cyDP zBPzb!Uy^>=TN$qsqQ(iu#16g*ppx~{Ok@guH3??-1U6`a^s^=F&Mz&Jes z*Yt2(T@;uF6)A1(i6&o47D3rNV%LOND@r{Bt)wSfeUX2wWo^w;lqsY#^|lJODchf3 zCcy3?_E-3a?=?7O^CVv*+YFkVFDzUp4k-EDSEyr$DzO0`v~cHB9s3`ADvrDR=%p2r zjAiFIEffx|@c>C)A&Aeum%tIA=GQyX3sL(z^gtH6(*XAs z4|_iDQG;wlp^CC2iP_(okU{)ct+*=x?_3fLKDZ!Fcj@{p-%8!Z$<`Br>k`}~_+NmG z(hsgUz7DJQRZzh|;U2!-nmJH30u0AaIN!iDZ;yVjVmM*>vLjKy))QvNr*I^I`t^4E zYA&+6B6l~#OI!#C@1C;(6?YHoYoOobRd`#RJ%AAtIWvjC&?7QtYnP*F`6B%J4+7~Q zxO(?U5B*}TOUuG5IC!Z}OP6}1y6Kc`RmvyO>Q~UzZN;Xq4>Nc1HHp93x8(+e=8SNC zJ@=p}&OmQR4C?b^1JI-3$(DMl;!_OEZ=c!@X zQ^X_ViJl3_2&+_7B3UJVC)p5w1WkmF5xshm9kg0LBh=CdH8n|{$3j}gtska-Z(>Ys zG6Hi0ZHNu()N0{ls(GR<^i+$QOZ8b0i`)Or;SuccJm8T10se_zRo#T$2=cmsf1Zn@ zic?s{3z@j2!fOrai$DL0Cg|w|3B5@Hj$Pqn&P!4k5ee_k!P25cL^n(we&y=jRyu-a z#gh_~d=5@7XcU8W-8dYJRHYV$;HLX(-Gi~DRQrHF0&fXR;aa~#;5JjU!clVZfIxX@ zI@r*2V$f5yFQCOAk286IyV**ga4I%z*#eO+LMB-TOw!1uutA)M+mZ=~`AT=5U*Jtc zi=`O7I~O=ySBil?-T{&!Y_I>7oLTz*oPV#h0&b%vTYTr&9WNIR<39)`>nD>LL{(l_ zF5u&I7|j#5qDIG4^Uz#+2WbRLD;HJOsuC#+q&|pJ=TbN(t}R)Is@y$iU*kNF@2D$z znzlKZiyq`NQzJ_J?Wc})fSP5j{zEtLRn#8jAtDDP2FO#~8fpd=ao@?-tg;>}O^nLv zR3U%|Oj@OhXixbE^Dj-s)-X{1^~`3lZJb{&(^9bGX!bN~PT11{7$;qr4BnU?6cQv`kww`T@bwsTA~Ka@2KS0rh)2_H?Kdy58#(2@VVbP z^R*47w$|o%_dx{iRd*I4`DY#J@!#K>;AjUW4#(1SR2v`hXi9H(nUO_@^O$q?mNQ%YSnlBdFR zEEWsbCi5<4)FY%!laU#o4M#(!b%GL#RHvw(I=*_E;-ym~^+510y*=7gO|;jvw#54& z#yq9-sSnR-&kKm;H((Ghx>}tFdAGl_;(xnfC428dx=8`LGjQ~mPcZan{v8kzculhk z_2d2I^B>W>$^9dO!eBs2Bl_M6A2&aTQ^w9!5DjXdLZhV$M+*KC!lI|cNGHa_Q>lOI zLp24`z!}w_;dzH~1hXF=u6Zyw<=^CHu(Cy0XkerZ1 zSbP5}wk+byiv(8OZb-9#Aqgf08p=I|IuxjZJj8?kgK+$P*}9>vg7)J-1|Nm$3s7yS zdDgZB`%rUpJ=eOrgvu35ZZk9P(Uq9~yTD$cYYZ`SFl(R=B~9@W0QVBTGF4e!g>oID z33)|udmubfqjp8#+!ExUwik?VFg>}9_$@~T=>Ot<;qJ-YP7w0@H@uhl=Oxeso*l5_ zDVfb%Ypmu<4rTHI6;2Mu@A|Phs@u=rWr;Q<1DPU&@Wb#L#`SO*^Hl5(VL zrMIPx6gZGfCXuOb##cYDJ4lG%GdT~KzJcf8*vM1U;{9RB4QCn2yUMieb*lv*?QGKK zY$E#xzI;E_Qui1<>se6HU6Es>erXB7Jg(>+jnB_F)i@dFj3M9RcX5zmqtPPEko2sL z;SuF2g)U2AOQy+8pB3gvJrW^9R<+bs`d|=JvtM?*{5Efk#sZ=}3fC9=(E0MVx?=n=;3<<|f;4 zh8Z!z2S%~mN`07mi;$8Ja`FD5Fd3GjFbPEzDD!<=)3H9ITJwYBLpCWDD(Oj;qO+ z;4KdazWy9eF0KCp>Awjk;+|=qv4Dc|BIA~Z=S#7GMup-QtmUFTGNpY6HcZrxYS_9j z(1aTzUl8_O)>Tk7d?14*EDjXu#}q5M+0wX4?#is3T|mc>yrsv^MZfNX;}f`tI9As< zRAiZhb)!3GxH|@Bck1X5apCf5SpBuS;iMS9V-B4~Ke@B>!tKhG+!#F<5PL}6DVyE0 zJeaFp&zzS)N%$gl|It15Lw}1F_F~{<==*50_E^wINDLU85Mg}6*`{uGa_XnlXz1rx z`OHHK*_(x&B1JDpFDDX*jM77AimwlUrbihL$2NhQL~-t6^az0}?iBjJic zX3`nmBUTL8bjXeM>T+X!yulony5-B^Phduxcd`w4$^}#Gg zn&t8!YCdYHv1flhb|Cz8awoTMwM5|fvSJ`=G?hin#3CJe!QMLGu~kJ~!W8%FWI(HR zu0LCT$rT3LZaJf3lph4 z6ISu*rS2=Ak!J5OE{n9&c19fuqFPYR7w}AaC#lb0=iBE9ggaEie?KV-1MD+(_-&E9 zSPGZ;A#;Po=`#QjR4oh;F_#(vnr8&GPr5TLiBF+6TsY&GOX+3ns)tOHkz8fPI)5>n zvDGX&wo+hV!vC%+FW-R<^+@lJZ7wKn>l{TD%c2mDRZi z1KKhrLSM#FNibYk(2e1~YOjx;=>Bg9LOvb?zd)z&KVx|GsXg`v=SX(b)0K1vOn+_H z`V0H848ktEeTmErjHnSUaUPrvCF)2*lwgk^56CO~$VCCy9)R2Zy$6{>1Uj!i+W?qL zCa#30nFYn);L})s9lU*&z{BUr;Z@LKC$!>`tfRH@j)2`$MXsqF5T8;bj44%eA}@t0 z$jr+1&Yqu>m8%7%U>9pAVJo7kX-RAM5}%J^hk({9fJM9rUC@~y)$h4p|8H79O!6)Z z2EDSBff*zG zrmP>x&^Jy^Y=Onij4~zNvX*F@u8j8r&qyJJu3XT&5$SBvVPh1NT*ZuI7jiJoD|lydF@e;Nb7>>7(( zCarLLJxuO4z7>sntR4*{W+TO>PrpVK9ahXeN7*>@hIjOlDzCz|htoFlv&X!z(P+uu zPvNO5K^0kEE|Qu*X!%^UgzIWYd==ILX3YeV(Z3xV_5?$~Cc{Pzb$)`Vh6rq(!H`ZLrEgaSy&7)V%ze9Qsit+^?!50W-Wi5XCoMycP zBrK$qSQy2*f~dt4Ic`xPWb+MN`+nrh_;#*w zxi<`m33g}roftXtDx!+0FV6uE%32$q%uJ;wRXDbrV39!JVe=MqjqhD`G9YRdmzu59 z-Rt8{hM2e^4`T1i`Hy_~865hUP0a z*b9c+o*uqK5l_Xwv6?;JGhH)5iK_vag)tFG;wf+=#e54w{-Ljm_mmz~<7h>$_g`9_ zHnt82el-^ISlXs+#iE_2gYjXy0cT*6KKHqK@-bv1u~#}M1oU5jYlD-X_l?$a+=iIxp9d82o4C3Za_S`M7q=0orL&Hm3w`@SF0~MHHICOpcgGxwqK7 z@q#^~IY5bbzC@_cf?0%y1$JLSgIm9LTdf~`;Lah(6ju=muqhn!F~`h9F+VJ<$Ly=_`ix)#EI(>F|9lZQ*z^%|ZQS z(;1p9EcD5#>0LBZmm-^MUVp@SYV+Uz#K*F7>DbVB_<3-5wf0kjbkiWiJc*6Yp%w`M zYA>=(Ma0J!}Bm{^L0TG9w3+Kq5E1kbGQCYgVdBa+nlm3VWu9Ok>_fCeN=VIir*t&n*s zGgSD@VdTn%xCmq`tyCFuy1hbO#s2>FuXP2+M8RF*Z_E!U27-!__INl78mIuWKis~AL)$Q;=J6H)v0=UDg42v?gWEDGOx`mo3pXHQAu})Js z@BguM&Eau51s%%-qvBMms6hO!z*9tsU&q+i2hqTuSZ4c4q2Q(OftT&0(zP6@ z`W6%5(#J!wOcsOY7Z`|FFsDM@$nTkC6*#g%j<@6dOoWa?dyGpB#9Zl!O6i!=?b1Dj zBVT-|Hz2C!mXCHh^KqJ?xq(mzWuJz-U*Aqyd@_89eGzL)7H2a<%Ojx{;r@<+OVB27 z23X3j3wDjvhx4BL=W6!OnyeUJ5kqUJ<@|f`K$#E!P_J{usf##!(tUZV31Ak*wF2X_ zvQLanMdQF5f7~itFdROu#y(D*|6&9Bn4P(7?zEsuOF+Npuf6yfj3_aQ5yti8>oh3Q zvWjh~vkWZ?A*FK{M*rHbZbIL1Y}I_+R2ybK!?=MMWqtK9Rhzg40OTs|b6$)C&u(~WdtgIye!nezMmu}{GUJ6epU4ZoZAc0=Lex+Z=E9E znV^>7+-h7rb$ig_!&qM0Sd6#x-k8o|q%eu87qAe)NsiIrCIvD32BSL8ymc+@dHUT2 zvz*3GFGFyaobf)JXX>Y<$2I7ivYz!X^Gt7dv-Zml={oJ z;ywJ7xFe$SG!=_k`DoE_fiD0Ju3l`)76+F=)h!^6J}jwvf)=GPX}mNg(DIj8?cRid zHzh)r?4C7+aF#ZW^T<7oOn0RryM5_Onyt8Q0u^p#utaEGBgvQH0Zws@9_W#j~xQCe{uOj!}ac@<0KYYu{uP~_^ zTBoK*RN-}+wj(Q!fIINRBsY~OQ%-?;_={NowB7=W|0mZ@cv(2wRohUnUT6{%RWB@` z3W#v~fkI4sBfTiBKIET_X%I{bE1lIG)NxjPE)}dg`IX5W#V>wgxY;u7L2(Jv9!d3< z0gh(1j-FQ&Fv@LdB6;mUkN5*`=S0W8UNeT=kUm$np+RD%Su75zBIv zv?_0z23kx_`ZO%y7fYO7!hjmQf1wwq2d@K}RRpGJBXGreefuyNV+F69?q919f1(O7 zQW|ZOH?GR~txZh+oh>hye=Z~m?2()BOZrxn;PR&G&c%9lmYwR3728sh`o2?ag0q3>QgI6Zeqi@wN=m1`@W11>87yq zWw9@bzLKcW#)c^LY-a3k>};j6E0)*48xWr?!WZpC?6>X@q8yjrcK7>obD#a<+sx`3 zpu+g4j12?RG{!_Z#fsylG~#!nLXSByLMAc(7AvIq#qpO&@$sEcdiA_N$PS9ig#wu| zs^fnwQg;^Fy7MIyAm$td}!%m}U{Zg+O0rT07V|dL-ly zv_~{z&QqPm8oK{Z_LZQLV)@?rq#Y%JoZJVlyN7$@B5hdzPsJ5>2rWP4eESmjGyZpR za;N^vJY!WS(a3+0K2X!LICpVez~Ijwp!q_KMCP_M&BL3%FN?l)A9JF8dD!d(?j7zw z9F5c{J|QTOe>F${O8caxp+K+T&r+j{Lj1@>7lOTzU$JyNG&I!x@n9r=<@EeF*Zq^a zRM`v+b&ctL0rwaRS&hKdls{GBEBN2k<+xu^5~BCMimUgHkjz>mFUHJqX7!qQElKfR%@SD?YfpCj*SP>Ab^`()I z%x}W4unsBx_>8MH@bIME@v)yL!0B&Rp@0pd+YH%C!aq@r1}*cgb##M%17I+HZv)$?HZ+xw$z z^6NnN&~M$=rG9@7d6W7E<#;N-gHS(WLmY0*2A=>fxgWWTjd zOON_!rPytMe4b1z8v80fo4$otIy}JvxNkQD6Gv>2&I8+$1;ty0+o&%syQY@eFMvqb z+~b#r=_kJpZhmoB>hY1TTf+SFbvL}tX*bQ^d3H;)Bd8CA=jZFashxTH2Ty zw#5*Oh*Bhd6Uassbj~aepHbK!&wsgXZnpjo?^`ZBQ9?Ha_#5%!8Psl{Zx}pxxutH1 zjLm;C3Xi_%N#jC9OPj}A5)fi)Qhq3KVgr^cBI35Mi|6#Du{o=L09JW= zIm8IHoI{KuQOlpKE3m~-n77TEp8%h`)_%MN@~oedpAb4St94RjzXqRiQ}|{w;|xs? zpx!~_o)bW@=o`eq69rq3B)<5eKg}!oK5l#3f?v`+oPQHV_lzNMtK2&jO z3Hpt9%SzH zXeBt;z}j0@*A%oKaP~}Sb4>OvWBv8V^A+CGfw%qW(s)nNG=pX6;w%|CRsd#+x}H&-%mZK)RPFHYV`ptNH{V>P1Xo0~W6fCg}dv zz&F?T#=>%<9cfO+mHTvjco!ewJ1(27EJig!x>L7d;glrvlM; znpI9%Ip9QSQ(topdvv6>Zx7&^l?oUrUYt_?*m9e{u9hH<(3XSgA}9+s!?57Dlc7GG ze&kOxw6^@G7A=GOci)!(*QxF$8IyE_(*C)X36y*ao9Z?*t~K*cfCSN-3KQfK|UH>QO0iF`o0qP zr(Ki13VWTY+7ZigoTtT$^!mO6IjpbsBQwEyas;I_c6E4#2ThP;L85}A5J5!W*lWdG z-shw{m%hUx_SaDSNuA1GSpL~IO6%QaqW5oV#Qy@yabcP0jX%0=6IqRKsi@v>rLAU0 znXNPA=($wLw@;A*#37s$E5j6J7~nGE&)*i$9gnxG5@yNOueb5*)a+d9VrW!+;^P3h@U8$Ua)05 z8v%?WkU)n()!@kWV<_qUgx(Ee`%F**LfD*+29HV?JpHw+X28gjNBJlap(LONQuEl! z-rRi`Dq|M}%%#N#J>p8K&s+0%&d@oJv5nz`tSL+lIeha(nrdc{nyZ$67-34{+pisF zARyi=GisX{WoMFP7~r7|&)qLbl56~^e#m=%OSmgR_Ck6TwzgLMiD)!wW>}@?^B`s6n_EUZZ2?F#WfFxQX+?rEclWnHdaSbsGTJeTdlq`q3cyPsN#sl3RRd3frt4MUQ&30Zr;I)7T z2muEWtrn`yIB?#4V0s1xtV^}9LySp-^q!g5J1mh@#~#T&+^hH`G)5O$v1@kt51@c- z3V*SQXIIgY!&iOstxcbQJ9<$}mMHZyn3ZwSDTdmmbbn#f9VPpB{Ia1UF^jxuoo1A- zOV=B%$_Gc1Ng|x(*4Hj|?llaOP#M0(J)?@xT!rikguXJ$54DSR@h`Fvqk3e1sp5*|c-KLUmG+^lr)Fp#(RaT&N**4kNGuu_@Nbu- z{*1n91je75#Xk96JFj$C-}Jwe60zYh9&(xARWI^s==}&yWx%tYASLSwyO=#2ak!j| z?JiwjT%`11(P}b3IO@HxUX+!w4iCW_T^^>w@C!rS3cSmK0r+x=H!DBHZ_1A7Xp+9{ zSJN(=o}0!!L7K1^bLF#d$nI4F+t%U;!}wi^Vl>00dv*8P*7%O%%?XTBIL0LF=dZhX z6qbI$W;P52$hFVcU;AORYNK;%a-!jl~iCyj`Ze6Hi#A3X&pY|*Q1(=qYajoFTqDk!_h0ID}bXtMCr;TK7;|@Pq_ch z)iy;gV1lm{6_-#^j*}1gPPOiUSB_-o4H$)$x)M;9ntfS5pSQvE>gr4v-q@J575T*K zQlaG~whQv3$A1|sr15IO*q>UiOfVnd39$2sPc6iOsalAu5LH^?xfJ z9TynvAKy9F8Ya_tHqMH*KFAHlwiwIHFe#-l?BAcx-+9oemXm5il|9W|%bNeBxb%fU z7I`xN)7sJ52q6i{D4neBZ9afmJ*yek7{5|piA29m;)T-+yv6U*E=3r|?U|IUp}sWs zwUXahHs8J<fMv-#k%bY3BoB~Z-aPS&1C_a z^YalH_L&V568_~-5wSopW%X}@Cb09CP}eCZ0i^HIKXck2sUC3DOw%>}QYIHEnXwnT zAQ_X<)_M1!-7y|1J?9ABRlWZ_G4^eQqndi_*R;9Toj3$fm$7pOd^TbhDRaLY8 zCU-Y@ow9GC`?OyzB5;R#&d^)Gx8e`GA3}XQ0+WSjJ{KfUtr@~z{~SNq--J3nypF;= z1?JgAw%kAuf)#cSV?|NCW*U7f?SVLajJGzBfpzI6HUW+Ub@5=E{|8ijiqT5N@_ z_)zD`tf-Aq45a$UhL}b=r64ixV?)BAy>aheeUkXIw~i45lZFSx4|NGi9$;+jT{9X} z+?yHsgKdDfNJ4fMPnL#i9}09>UN!l9Lri%#>Qp;-xzFcsH_+z9&OMlz_;$h*#YGJ4 z-hlyrOd;#$jbAYzRG6UmRqopXb$Pbp(Sh(Dvdy3jV&^h=IR%D0HYGKO>slAEOhslJmo ztR;*#e9lieFW;uYL}YT3LG&;ydJpFBp)fxK9HAx^HM5PUb*YU>XQ%km{p0%=tHP|4GNtM_m4}eK&qOhQCQ70ou=xUr z0#i77%@kP-puKAGo52qV;cjmbX5;BZ>wnN%tVgtXf+KK8HFk8JAMeU-1)U)S ztPk;Y-%Mgf+JxHOX*{iijJPnEY;Pq~?Gn3C-UM4ThQ#oG{)LOHXVU}zT<#^wsx)Y7 zLz6Y<{WFskyKj8grD47)_h+Ey27(Ht?=|cXo#0Z~{29Fy?S|I9Fe1dupmfU32^g;scFP1*dDgV+fU&s^R=R@0_SH1aL5qy!SROyTwW z>lJ%@j?!Rk!)m6nmlMufv@ZlbdrK$kUUS1Fi`U6zP3UKOS0X8Os#UPswcy05o3Gh15+}V*TNSH%Zoi+_6LX-(0VZpgkQgf)g$rqoXK!5 zx`XbWwLPUq0P)haxR_A+Hh-14o!CLjN1p+cntCB6RpBT$T-~TYK7QV-Uwa0}sM-4C z4xb959&Z@-qCg!9OT8d*hm()WPbpGzCIF56u+wKu7;Z&|sNV;9ednC=Ly8dm;@?OV z;_aBIbMe2uhU4WMAP_-&@DJM_)B}X<8kM#Z4+7@SiA=D`t;SJJI32D9vtERgGvy3PyWlbWJR?j3zWFbm0n^G zNr;GHwlkLK=>`_aojy{ZHymhI?=iCPHs0-3r;t3V#44J80>ec=udTWs5S(oKb=Att zT7c|BJ-nKdJINszIs%b*le+H^h-!SIru(hszAo9{Q1xQZo{wA}{EiCdM0028;NAgG z$XrWswG_D=u%YRw_>6tZ(Lb3E_iHq}5kYHM-#_VBpa$+_G1`w8j;T5L%rTV@9-gOWYf`o7=5)k5*V zg?i2kh;e?pxFe}yV|4{}rKN!EM^WSD&V*|!WEZw}q!wfr zxfZeAd}l{KR}iw`a2)i|4YhQz>5eM_+Y*2E1`<6MEoC-s4MAe43vNIN^*#&_lNxcv z*}9}NL`TXBg~KQLPH#8HThW;RO4tN)+Ns_kjoSYfzR=wO8g?ji!OUCnm^aa^3Clr9 zB-g@)pM066`1dQWhU1IcXjzFiK_LNW${vyi7Am7iw3wZCMocv?0AUQ5Zv3FYHna-} z@yrq8=h)W0B}c6%1iQ5sgRbV!F~t?a{F4&GX1rl_+VaWqMjs&e7>=WC#mIY*4exPt9UrE0t zJzJj@1mg)oq;Jx%%Op?8urHBoxZ?3}lzX3zNq9YE1nOIk2>$_$!QjQXG!7(eMU>( z7BjLK^BbSly!14v*$(-qA`&3sFLX7E+zRJzabhN~J)vT3~(_E*V0B%iID z@Z(8eson386%1@ICWi4M#HgVDVOy0EuuXlIK19`TEY{aSVs zesPu#S1%H_dR7jEzfbX4x)4G=kjMRcYMt+9SgI^$meyRe+i-K^+d^>Ba5Rfyft(7O zwnbL?KNwj)x%fP|0-qdBG79B`=b=4zJs436FXbC81EUytGjtS3TpL}**yUmepVt$?zMT)be zrg`pmZtc<2Z@M4i9Wh>F?ug_zCg}{VLalRbe80AJvf!A2)BWC<=anZaywyLsXDB`9 zSh1q&gY;0e>?)mAVai`I>+>^!0 zid;iXxPruKd>-I#pTtnC5jxd;Z-3IFyUv~Jg9weNJd__5zr;CG5bCfU|0Y9sMbh1e zqru;ynZ<6d7&b=KXy7vanKEayQ0u}Z66=*?`9Xvot}-8~AaXk}94#*uoRyxPlt>XQG6B1^$6>711S%^`_n>{s zd+r|Ht=lydHz@wXXeQM0ueiV$GjV9~1RUrKU=ABV;-m0?2n;r(BRGbW-!00$%Am&E zs95o)hDkJ9s>eTk%0paviXhRfB0o*$RTMLSY^jhOXp&{6Pn3nBHTmqNSrzt(j)cub zvzdBPcqBc%lh8dL+h!=`A@eJh7o9t#)GxN!Q{92MV#3DScAg+8W$Y3=wWZI3#vZiaT)1ZBf z5N`}>VPSp`q!kLg*oQ<_&Mw>xKdJLiAH{QlFgl zdxxyGNQD=GB{<=_DieN+$Mq(3-LH=L@(K!k&OMMv-t#xL9q64MP-8MkQM1am*;yE} z!Tn7}VLVz=tKY<%M=48?P9L3GWAkLlaak$fv<#uXvyu+hcma9^SVm!G;E8M>C6YVD zZ=hNW#|uh5(39^12_qp7j!?~wT0OQJ-xx_m`D6D+Oa}I4A|7Ba{;9B{LXqVOgG-j= zi~L9jn>==L2+-yHo|9YJlSnt;DZgAjD^q^3?*Tm&+59i8l1ZZp^>B!#=ZHC=X$(GL z%chwi(BWc>FIrBv4Hm1X{JEWT(lifL7P4ngLF-AczNoMJp7ni~nPA#QAaL;aC!o3f z<_r$GHaVjD#h;)3cD?~rNs$__eqmr+g?;05kEoq3ixAUs(uwv)Oz2!}n5?-u-}&|k z@dOg}7=8`k{bG|U&Dg&OhpYA%_p{SYvjvN&a4qYT+&&E;gg&W6$37W?WVmQGosCc+VeE+onH7d6$6J>w@w~z@5J9R zguGhY+dF-cZAHB@yo(AfMK^ugD(;@MPC!Ts)azwf$h5vHjhalWlWi@9NC=>t^~liv zB5epc#vywsJM83cXbZqbbEkaFh?|mY+LLRc*~*zW_*A@J34FDhoWmh!mm(8?#Fl`b zGLFy7fIIu{OM8z*>-)kZm&+k29H=dRo+N7Z&Iq9<`px%rk|7kULCNDG(L<$Um>QT~ zupE}J5b4)1_mJNb1X(`*A}vNU%%>;DN4n8kOf9u{aNq_g2bX)}M$x9b%NMUySLetG z`&)a1F&AqpoyVP?w65|NK!=@IIkFi1wNLj%kvz}RG29|@E~Npgg)?<3v@Gd~Y)NHH zcZF0xyr)5j#Rj&2jqI6U9O9K-a+;9w_QJWYk5$N<(``vMiIDR#38|Gwn zxLxZD-b28G>q{qZ~^PXOs@N(nvIEXmf zO#9r-P88J*+R)ZrIe|-Oj4xHEQonmUasj4ICKB_cgOU|s~;CKf$R z{F5f;cuZLDIV>OPc zEa`R>y4mB&&d}yKN_F3HN~m0GSl&Kld(k{VBrwYfSg@W`AV^q*XD7o_^ZYb&%rGK! zn1}UIxpsCd`weEns_*MN;+6xn)pq1%M}zt?9zT3rMw6B$vF>793~z+dW&?bOt`ame zp}kW};tVpc!cu*t9DxRzpBdPV2%kto<2XylrzBu9GR%)i^>-!PO1WSaKkC&8Y;B$| z59zst_`5{9w8%)hHD{|`@f2Z0gs$mmP5)AAsRgw&8(7$o2;F+HT9Oo{35$x7eeQ~c zf4b)Me%2_r+8i0%|NBSKp#K9&r(l9mI}&P_nN?YoEKe6Sq~e_CLO_pPfeNNq-wD4I zU@&MjhUH$MY5RC41A`PPtcL;5Ec?*~tveDDmTF=iJ)>P@N`-pAn;%OpX)}MfKP)2 zmL9ArM+g%dI4ie0U2K2`L3K$` zW~;294%oeSSFD}wTL3>w&oUXRAw-M(eA8@o1+n}6909+9Nu}6>F!P&5D%%2lzGmOg z%$QGC;8cI8&P=++0I))StCB>6>nTWSSizxl$ zWGVC9j)<({DyjHRd&!i70BaKKhJF7x0Va0XEvJ69#XD~q$>AtG;`3tF!4CZc^zj+P zff}08+;!*kQI#gSJU6zucNtU7w#+@MOFa_WKak$?$#0S$WDOgTnop$XlQO}XpCU5n z(m*)ca1ah>9E`xnv}L7yyI ze(%K*{S#Kuv>_Qjw(rVdD!;N~W;)J^VHeI&O)$sk+EnD+;0L1g#`7M2DQkQ`ES%dE zuqzC?RDt`vLI9gr%#W04x|o9I<_c|MU6osqG~}lgvbIRe>)iEYyj{@s7wXMG_~O=J zi(AE2==Hc!;I*0Ki&V`@OPES)pQCc_B&mp3t8dRei50-ex3$&t zo6ul6=^bI#k&z0r=hU&!6-CDdC|<)`_`+@T?__f0!R+MHdLS}#n4n@Ic<%?((@#UF zM-lJIgN%#LPX+|$zokMx)5@5;CUbg@Q{8>80g6s+S^wdo6R;Lh@^N(J5{15mBm5h> z^_GVSPa<&==L|1|ocIIilp~1Q-Q!`HLb+4#<$GKCMJrO-J+-wM|vbUcNn4ypzCH1kHq9${D zZ=x~dzTvcRK7mRB6`Q;On(yP{^J{QetL`2a%1y~Z`p!@fj zfh15u>LJWVy`kEl^*2;5fn_v>B|{Tj*jj)_QWBU|74IG(*l>P>ZY}F^VVRe+y77tR z*?97TC~tPh8^t=*>z}GuWp5(CjFV%k@6kq=&%ZSgw_hBTpCf+dl^lGc6BfsE%#(5# ze3G5`roO_mOr-C5PyVra+5L8!Q}g!L{4rB8rMe$@gS4;z!OWI$7|SP02~(D_HVYH? zlaqB3EhlK|{QzyE95W#CXAxT7f2>pga-z?wXbZZL^XcRXyp| zC5;wcOqIxwL<+x`P2B^y`hpb)m)f3lcQ1>Q=DT`DeTeHRrnfNBpvvg{aXx)5>2YUxmx4s}-K74}LhPu#*Fon{d1qE&|lf&H(1d2;e^Nj{(o#rxZ zQGQS+s%%Y=?!=$pMxR9Ur76wqw1%gN&Y7mK-T74V^T}l^Y|U(=R*PqP@sMuqI(QIc zM!$@D+q2wcK??jL%5e{ocxuZFTjyGesR=n+Qnd|-Enh6gPI&yE1Tq2%xjfk0eaR8FW)mMTuUpGlIA!>WB#eM9X&F`H43mQ&r+3gczm&P~lGWKJ zyu^6Hogr!4Ra60px^L)CqxGtvIvl2VY*|=S%FYHIG~J}gsuSYVz9At#k4)ZMLC08 zzGM#tGa}XvXD5KmE*IG+X;8y_U?-1SpDyKj8J*UvPAx77P@ETmCW=aqe(jq8D0hJV zUEiwMR33t+n8>m}jjb)W3LbDnpZBg`AJMEDZ!u-~I+L^DG<3c+^5{Yf#2R@)XTh&3Jde0nzZ`poQ~<-#Sc?Tv{Tr1XQZHMVgn!4`NZc6o@bCstbP z$^d(M=83%W%w~8-R=afW7UJ{Z9zCcq6HQB`CMy~Ll3S<%A&_OLh7GX~TlpR#-p;hL z4qta17ZaB+r@c~01%G9frp=t}jC`!Y{hkMVsjsJ=>cP&M_3yh;);i;?-;1&$<8>u2 zx|LfAw{?Fdlb?+JE2$XYJDmiTI^u2BxPO)Ne4!4$4PYPgZ0Vf{x1S5WhWKuX>+_x!NrjYCSxShANatZ7gt zXW|9xb*#xHQpyd>FK9N6LQPq;rGffgo`8R{rI_#4TWMJHQb|lm7?Hk?@TQ|q$|<9A zHI4;&Tsk^M_L9g-4{(vyd_N8`tjw%|UwFzX-~W8|n2s4W|GGTmHp|^11N~Ijp@ca| zbG1<&S83H`f^L?#i&MI-6)pE^(kqZZ!Wk{Agwyy-LtG*EQ~TrFTprS zRkXFRwe4*KGDz2nMh>ZdiSA2iPw4x-F4^&4424D_k_Qqc*>y}Av{ex?M^=KfKDeO$ zP_q)%U%v|Cr{IU+o61A$Oo(EvAWv)7zGd-!(Cg4z`gILu4U|1A;QV;p4YQp{MQx-~x7=6? z%$Ev_Z`fi#P;Oa(Btr)2TAR6KFgNXW!!wdW{@M*R;TV~O2S`s!{#@=8{=k63ygPv#$899(vvZt4i?K~AI8@% z^wZE}h0Si_UX6)k>Fwqy6Rf^~4DL&2mwp>MavC`1baCboF-`?D3a-n8)Mw53pB+6C zk{rXUEWZBPPm8^-GC8FX&%dL_W~M#I+tRH1Q=)6CyPg$iX&;e?Fo)9$cWk)D)eDn0 z0Pjm5F78p}A^%;9iE{$J7(*^RJuyR}DwFRJ!6>XC^4Fee`gtT0nXv)*wO|sWlXmM`)n-asgS{s5_LFE>7eNOe-NQ@inu4btA zflEp09R#(T1#R|4E?p0RQy>%Ssm`^XS7-id8^_Nkpu)z`GJ%PN| zllnaW`SFjNHf|M(O3#ZHib!b}yz!7K54s9g45lNC(cT2KB|ybBP?!zws9XKbqc@Rg zXaJF`vtra)8-+HmzXYA4tHz4&S#Uo&Qlg}zLbW?4}<^jp?bn{(O7dUH#Wn1Kd&BeHQ|3{Ix*`*}qg;Jkp$GY_~5E>x|7T7)) z=*PwmxBU}eV&!fIOS&dG^~fNl6eQRl^(v9aD=4)ssW2dVIWJj zox!Fg`%**I^W8$6cLmx zB#OU%P7Tex9o)JbeUV>QBgG|qo_I=X-Qgd)ie5}g{(z7#v-2|k z*d&GFz%#9tYv7 z{!8V>kps@)kDDD&DALfq_Psu*KN5avj<_{#(Vw-hy6K33recYtkSaFU>$PxiRL9cc zsGc=HYTS#9Gdi@h?pZtb6yp~3`WJ1+_{PhS1o>xVUDJaRwCHk!vpLqL}cjy zajLrPvTfE!XQPoxNw;#>#Adn@7>STR=xe+_)!d{02M8JpgrQ0{9Na3B>BqJ%;Qr4@$7T)!!p=_BNnNwj7pJJ$6w$ zw(>7%hMO}5W!cg!xE~V`K}EjZHz?+(NJ3eOx=d%(;nkZ8Ld0}39cbEvq>b@iBz!rF zw%u!hx*}D&)WRD(?;Zs(c4Z#~)MI4Ez>)Dzx>ST^2`%I|v4nqKEIekFp4@x} zvaJv@bm5OO35;BN?CTf14?K-N>~(#QDottTeWR}>i9)p|Qh&S$wlzztyQrIQk`8sA zlj+2hMCjsfAGGv6k0Xrus(z0 zS|;QMB7T%$Uo%tkBg$!S^TJ+6$p&BAkpWEL-EK{6aqpyQ7y&h;sZLG*y} zx5C$$gwlS5nVHy&S~BaAV``G8l>ScjT054Am4;zb5rZ(S^c8e6CjD2BQke3-kxWN) z7l^k^7RzM^bgyMU`M_b6c~~E~>UF&p&K(Xo4@j(pCHr_c=(N>YNh{-QJb6|=itrmT0o?aQT?UrZKg2#XE@NEIEQEJ%J6@t@e1 zI{q}NnS9A3-O?gUk{ zLL-cI*VHgPoj9d{js2BMMBDW2Dr+xYhFI=K!;fQ|1}5iq7+$vcOTX!evHao^DT^gl ziTD`<;uH~bQBgoldrb)Dx0}9iS%Juq!yeMq8hLG)o+_-g}kQQ7Vd4}jP9M>Unwa+HxV%*upii)kQ4A0Pc{{NdJ_KfMCp<-N29Wy)bxMCbu{gTedOl#>lpcx zk;>#D3s2Yw6D8<3ij(-no5~re+&z69AFONp$;qo! zZ`}ns!;KF1lOjbA|D9kHB-G3u?;}vhrE4QcV6Wzz6o#>`cJeXn$-0{;_fly}N}<FBazk&rkGipAsL2x@Y^ zU3{17*{UID*^4ty;6^g?DAHpFHW>7t;P2B##Xp6Jr-c%VN2bN&^PAFtk)CRU?DE6p z_x**f0gjinzs3}MSNin{QP|yYB*d;l={in z5f#n-=ibi5%R8U~JQz4H0~BWoX`M)ey)JpyxZs0-e}Zb9E;5fVHOK91g5FLYkO&H( z%g;P}c@zN%|BP$h5P7ljH(#vSAkdWSmKVyZZiGryxE$gWZTnhGmq?GymZqN{8>lRm zKYDSrDcD;4j^yNb8{Pwu2Di=1QA z)>wjh{AilmzWBC7gqCo@vuH^T)0#zkI3yLM5(1`Xv7{kHabIz5Z;E56j@^!PWISM* z1^vk0k%*sM3Y3ittN*sM-NG&kk~a)SCE95^_DrNj-*{dj?g59Hg!kVWO^pYR4SfYY7rca!H~HZ|Tl&Vj_O zNoiZuU%%%$RU~vxl@f-LoBZItDN4plGZ7k0C=v5GNnSzyZh(n@eo)}Y;_G3r-g^kA z+*4FF^tt+zaCfLI-lw32h0oTpveUa0>Jx>UNvHp*e?XgKlEu?Z6=TDJg|@8&w9 zvT8+N?hl`59KSI+7z4rX2$fo%L4CT~tYQW*ZE&eV{oac-{E17zM5V932Z;!TYz#}6 zD%B8@W>_ox_V;tET4lZdiAV!vvhAAlNT;;Ov*q0-5vn6wLiLUqr(6N&pQWX&V58I< z8<^*TB!QtjQMp?aszup(#@@ahCaK-Sf^dDam3o@h0y9kOZdr@_9`7hEH$TND^ zfr)#mt0|v~zvKmuP|$_4$U?*JW^eWZHoO5sx=^1z5CW{ro~VZ!T7L}U3GHsl&vMBy zejk1f2Uzo`PA z99nGRXuoq(xL7PhaDAYNRv?m2%mt}pKz%1Anmv@Y06KCqLk2h>F5KQq`s|n4YF39P zLar-n4CRsL(~;{#EIMIp7qEJ|buzYV^SreMc;A9DJ^+;##4_662p#$UHA8;Y`<{c; zx^;m?0@yAvH_iS)O7WE<#&|U3`%~GtVHz5D)j>}4GYEJEd_M#@W`3&tftvhsmrq(~ zEp4eze7lQ5>pXz6tz~SBCpozAt{9R7DFxkwm){exW>==4=ZqQFiZXnl(p%Y3Xq;1G zq*+h@#{3;-CT*a?f4>cw0apQ!dZuA6o{(rAq8lSn5EjH%8MmTxm8o?oll%z}eL9K$ z^P*H6L0-WW`hCLYzPTaZ6B$eg{Cbpu*A;{YxF8JhSkF)u!$}MU9KR!hxL4}H&fi&P zjz?@tY04}lCExOE>Phz)+bQK7!YN?C`5k9J!J-;((Xq}!8Y|Hu%70<>9o~x4kE#Ow zUK05Cdi+JjiYv(2R%j)t3gPnBh%J+bZ`BX2GQYa%RPDvQsxT*L|Bt0>46n55!CTw5 z&8@w)ZQHhOV{6;SmRs9)yR~h%-|2gO|IVK?Gf!qRb0@iz6lLo7H>c(BHsm!>3$6bP z*-mNYJg}$jkJ9Fe^tlFl{~jkV^p`*I{S(^$daVH);u#Uf*TC;Q%#pF6EC%K-7NKm{ z5+5)1Czd3fl)oFJ$~_2t{NMF7AxJN~lUb6KX0>GpZh&L~6X}8ke{hQV*~R`-h*8;e9>fQO5;X4WYQ;Wq~Iot&(%aZ_n?TTk&uDPx5s6E;fT6VA9UzX39S zpV%#@1GU}C>><)0CsG0$wqO|}ijgD3r`0-5m$n}j|FXms4v6wf{Br1_^IBb^N0@}>4UlT&MFT!gdcb_slxc;!S!NweGLe8S?&4Cx-0@I zd{2V(=Myyc4I8-GOXb2Z`!o;a`TH>q(%bwO5n;TtDvcy&hHDtT-6OPl*D!O*t;<&d zOnpuFO6?j|^1Sj$sJdw?NtxGSX913~j*NUc2drJ%^9mS$?N&k83j=qOvS z5s&T_$(@mH3u*3`_2<53_SKcP_ zs$KDHU1`lsXdP7xJkC%RX<||%wQQWdkzPhW@Lhu7rq`N3jC6!7m;1{O@Nj+&4O+Ok z{1E;2TIx6bLU|Q}E&RwA@2{nYUkAbcreE|YuwbIaLki8&HtM~A)37ry953@@qN?_x zP-Tu|P$Py(&9heDV<+q-fQ^ir@d6?1anF_2?u;l1Dwy9cLSjo@XDkQ1TdqbFX;1H* zOK?vSOVPN1y!V#9mU4al5HA^rK-O06hM?3c`@423Z;T_@%q7{_#R?6i*AFhS)o?T5 z-9pQO-aN~vYVTq#4bT0Lr>yhK$trFGm^Lt7*bJ_(I=`3X3AkJGN*!$^3ceXQzD>p;x)}Gq{rk+(ct*!rg&~I zB!dB8m&n6r+1P=)pu}Ko)f=hS1#poFTCr;WF_=1pbzGYsV*HX!L9B~2$uIxLZ#Ct3 zW7jmYX7HYxBvqSds;~4PH*x4EgbsFLy!Q|?Qmjp>RdV z^z3uxi;S|)t_1ny2JHV{_eUau-FTn%!v2pA4o?I^K#r^jTtj&f=AwRzZ0@~H>-|Jg z5K8HG0`ait6lZzb=`4%_P;K2M2lbN{cRmrwTDjv- z6Oy9TF1DQV*X&(-{`F^Kl|_b=8pv4xb+}l)xa*{vLjH^7Qcw@*S#7W`b^S#XjvQmK zw=onkpHUEL&Ix^`T7$8uPl5asW3CP_=eCmDdw;NRDyI522F(al!>HF8%Z^qXnFwM^ zt-5C3KSe1pO{_KeT$$FX<2~<_G*|4NdY+PH17)M8r9twP`AfT1K(Gdhx{{Pbuzsm0h!>vVkeu?3t3BP^ z+~3w8h*szYsLV^KHzU`!@<`Q+_MUzn&Mwh(hIu=aJBNg+`bkCNV{S0WuQ0Uk`r8|^UvIc1?1JMU! zHL7&^cx(+M#I*}RTfz0NR+e1rsJJmms2o9SSJnQVB-*W@&#uy^B_C`{$pLcE?l0$^ zbY!4;&F$-7*uhypM6VmWiz-Q5B@YPjFgQ3>;Nv&HKW~*&@74Ac1e>kweiP<=JEJ4; zjT_W!nTq4-09Tb1Qb-B|7x@!)OLsh6P0O#cBhT>cdAT}$Qpia%*mxTb z<_m+wP}<&(ez`@sc!mmFUQ1N^MwXL2+=C^Nmit%#<8QMzTsQN4;wdt={C1&?XGBlw zx9kC)#giq-Pgv)MK>&ZL7aFnyX90*DHV_t?MLEdN9G<{YEqy{ zq%2nfQ4`$CkBR=Q?| zBdG+J)Tn1h(3nNPOQ976k0dx=B&9HdHc%tj6&=ahh^_CW3uA$tP-SQZ%lps-dZY_Q zD#qG)sCss^`FQDsuo-KRb6A?VklhoDLtt(&lhYPAA10M#Q&agWyHGpnlp&yFYX3w| z;%y$xZP-31RxdUw`N{F(nc|tGd3PPNXj#0BM6nzL68$ZJesi02sJCUf?b-bU(?nDE zp33>yN=CgQ6+Xl<5K22h#}p>uWi}&XK362{jz=JDr=LU47p%gMC2p;DuNGV$e*wvK zGJ(TyH>FINF*2N_(769+yxxrSn z)Opv_eyBv9U>cWl**C4IQ5zg#m3GE{VOYL9Nekt|V?pK=Zxk(zOd-sr(D_qwAuC%k zo(Qtd0uT;}Y|Y&*y_`3{i!UL=wB`Z+q9l+)Pe&SAZ}z_#vq_b!inZF(vD6QzW#pmw zxzgPtI$6d+(i0%+w^B=p5ZSX>4-6%%E8+^nP61tD4f!5yT4Y7DUhOB&Bpm(4MxtPl zmuEqSZQ8`W=4g$QTTn>TfTny&Nl6cWSL@YY_oIV|Wq$1+Up`xPJ~Kjl3J}9lhxT1Z zUz8rY=Qxx7;Fb9`mJBaq&tTMtE5pqEoM84nVBn83PUx^s0cj#p3VDJm_#OK!oYfLR zR~*oW@>pQR#+}e?3Tk5r4AztP-Ac@6sTK~HrJ<oqNg4?TyhZ>%#`xK*x=wJ(Yrw z-?d+mUJ&CszYenc!ZkoKWmLsZ;tkZ4<8(}11&p-qI=;0;5)_7&rTCshY!SS_n@F!- zF*tY|wpfK7T8-P&{vId@V7BG-cz5CBc7lVf!^eUw)nxp#tku|ux}~*4*HX+&nZTI!6SO z9}rxvGvVJ3I7wgUdW=ss8jzcYf9yF4TFR36!&Jh%dTy-fh>Nm1V-9d@7kKl6*ON^6~ zZFcjZOM$N`Y1l;|Uz|-uUtM@J|CXuS&q%lX_9jP6k$tU8 zkeU{(p+nDm;vFCJ+bFL0U#i_!hvz!RC36YtPJ%+1l9io~` zYJZk|4gc$)V~;gH>I3v^c2JMhA1&r`mD8&yt;lpuE}|>)D18?zVJA61L52d30A*UJDR%By?T1@#GfEDr=NXln zOE6mkLP2ZZWRZEl@P%O;+A9nS+Q>nrUS_Zc)%kcXJo6MnE(A6EhT19WZ`RG0Jj#7V`0 zU1Mk!!Vx(TUr|tiJS*1-R76BY$t64y0=AwniZbny_snpfE> z%}u6d|HtId2e|!X*%@b?>7v6N`;oXd(0Lxn6PDj-RH-yY-zkOC1$;U$3e&3nnuJ!I zRx`eMDi+aco}+^Oje;XuRLG7W1{Ei%F7^${x!ZOy7~I>1QmREma28n7Qp3Ar?N#go z{_^wCr)!As8#Ur{P&g!!|u!=PG+8;x?nMM@NPEg z$u$a#q0|tJy?in>*0^z-$+rg&_l<^P&)g6bGf1M0~lK=KqXFF&pljieR zM1Oxv`i<_CP1iz!ZLMgKpqgf12Ckq9&B<{^Em!!lELL^d12_r3x7rCa3&Wk;yd;s$Ww(Bv8~fZ+ANG0n^*aw{#=wxlD?GOzs8G%5FEZ{%ZI(a8%c9!;0Z7KY}5 zc0f9D)u|0EW_?hn?DxM0v!zGU_uw2CV%qkGVFCDJiLFHpN@7`*cuU6grxJ zY?j-CK{~Zs8>YG7_}VzuXp*p3dSMZyPGpj-IDE^+b>c~vi9m&u89HLU@sE1tOoV)N z9V$5WNSJZkZX{U7s})qIHoBPf-nU5R#h-=&L|pTZ2YHtyi;(wC9=kdYPj;ELI>PMh z&HJ67ik9j0-SM{Zkg!;X956wN;?SSZ(<`CG1o7Z5Og$8uP= zpZ{=s6TTk^`+aY}`n>5U66-8q2ljT{U&0vu9a6a`BzCco!vQGhEPXfHEzaO22AT9I zC`>Gv>S`jPNh?%O%~40jAgz>mC%v?b64V{o4!kNg?PSDrZjckxqX7E-@T=LB3czOn z%4zOfQGN3qPt)+JiTq7$JCl!sCjSm*VVnu=TCm9)ad7vPat~Wzs!uM&mB%43 zS%a5fmTePr54Ty5?Din`C`vKx45=Zd0;2443IZT#qlW$6DaiC%5C_^wWb7&7Ht8@F zj7BE)$W%939P4-DWN`%xy$ja9qt9z)E|*#Mz;RWbamA8U!r5&0n3J5oa?pn~*GvWE z6fr>=w?$N;9SV`xlHPn-|BMWjP zDbD?w347x1v+DoC)WnjyDufk_WvF**V?u8f6=I6kB1%Ih3&Ch~YY80|5;%i`B4pL& z0rfU}0R8PN@da4|{K^2&tSi16u?mjXu*?EA>#;h*3gr5~#&w%WoRppkS|Xl!R&YZY9YY zPUUcB#3gE_|I}HLEKrBh$*D>x8q{UoSzERE)6!IRucrCnVSZh zMc^sMXxW-Bnuh}|SwyKH&k180nGS5S$_ew&0Gr{~HnXFYw8zYat?R>0o1$c2XeohB5VL z_zL&Jq!3a}M4~AvgPO0PmK?{hpe7MH7ml!g;>DRy(~gNSZ$6^bgjUZ%B^&Q15)9%h zgE}BA&16FP30HzI zei60hb+wKd?^sJt3p(@Sp8~((nDFm$(!}4Jx%437)EF$C^9N2JD*R;piQHTt>h>WH zXXIoMX-2XMFgJ*VF4Yn%{U}c4xN`t>Eb7P{JxPW_GVfP&W$NKZtp6~n(hG);RHZFu z-p6K9ouG>A%Y2n|Ch|r#r!O=}VTqa}7`xHsNjp5y>62xjAb)fJVxKz>8+?~v2x>kP zxkEYAJZ%VYGu>O|K6385VL4&yOH2q0g&0JkrDOrDU7w$8WyWu5R-okPTH5)v=uo+e z08Se3e>uv@R6urMC{H`yN-}!APy=3qNwi_J+$UB>vOJrxLi}%DdgULSn3TkAC*>*n zhpiq$7h^eET1U=0tbBJcv{SNcN0TKO8y~IcRXxtX=3k5e;oPIQoyug7!X5ue+1d&Q z7VPD}b5a)B4guxG57@I!93HwV?S=z*3~j3nkHRJ@Ncnk2u@(p+b(bI4e4by(NIF~> z<#7XpEkyBD-?(vm$*#_yEE!MdpSHIsQ4WzwROoW*?BvC9>?gKwG#^~;FN9y7S>&EL zz$<5qfEUIMFaC;tjIN|)-H7Dsnb*D{saL}qNtbO7G^karELAT-%aBk*@j#_MllhdX z0Jr?-A5yz9Ugj()m*EU(A4Y*SyuO(xD{9U^mt;r>HjwVQ-(U@Wxntq+YQGgcPV}iT zYT9itOwXGQN1)JG_Yz)!#L8GL>rnc)&e66$)NHR(KoOSl!2XFI&V~07p1O1)i(wC` z%>jfXx|(Q7Z_(#|OIDEaiK`)RevEx}L>8?Mt#e=zc|y8XaZ~w3BvrXEd5TtD(0b${ zmr*HUuCUwsv|}|2R11{40+s_ssp1IaQC0j{aNn~zW`axzTWn%>9O<%%3x#`&8@+gd z8Lp1@tcYD0Mx9<0hK*hOVgm(~Q4!|Lb2Gv0Xg~S6&hfD^0&SQrJ~|&dDG)q^Z+Y&v zojO?@74FggKIM~$Rke`PLe`_bkGl4VWrZ1>B1}Y=!HtOSR%U0sinO6#Q%+{Pp{j4W z%7sP7`6d#~H{KZnep{Xv9@LZn*Y=jNSF7Ko>6f4zqD)#~IhX?Wnf{v&x6dwx21R(M zZCg3k*;yy4#7?`oewYdeE#hy9etnbnpcu*BC1e#I;6?$lLdYi5*V{etR)K06)C5yv zSug{^rp|6>q{!@-8)-l+-YCI7C(8n33U6>02*z~csw38=k42Q{18AkWvE}q<=S$=a zVH%N$jK}zK0+cqLgQSe&uA%-qN{!kGqczc)prM#kG9pfJFv)Dm#26qEpw)U>$?p{M z4wu6qpogb}+0O2hKX%IAA7o^%lRJk(R; zkiJALlAEIB0@-N$_aGtnxM_rkX1?R3 zP1Kkb-8mgSV!-xKjk?R|s+@c%+g7JSuX>S-Ph)UL-$>lLi9UrJ1K7kC7+m$mR^d+D zfeF_urYLq-sJ3{^fj)Hm&B*9jKv=66)Zda7j}^sP)a*z~>)Sr$!RiltlAip=ctfa1 za?8qx1P3{yIN}8{$Sh~cCHDO2<|$+blh~~ge~xdM?XS9(=Q40OhT0KgUa8sB{2q8l zTcWwR^kX{(;gY~Gtxm@YPSd2xQ+Y62sRT10N_@c9r3R!lyEL&W1-g336&Phlnv>>B zd2EBa>LUIh9gN5=yQ2aZ*-{?aB$Jep)`V4BBXc%M3?zCDXKh&Jy$@v1e_G4(2=}UC zU4!qvC~+&n(#vE+inPavGxkiOVykKnP23%_@ir`*hdU_>~<+pY4}p> zfD8vPjC$s`^6NjqWk_3h-4crs2QZf6v7pbG&v99iB~}8V&-Y;HDcYyh(OO?Psnggj zL%+kKL*)#g5J?a?H3LKFAN(N9tLIfkBDciArb=`0z^=eq3$K*Bk%kORialoYa8ZKJ zKn7zTBM$^CoQH1Pm~Q>>fqc&Up7rn%F2lr{{#X{OTmrM;0XfKILBY+W88$H)J@lfc z>WpbIE(wh&+rMGNWW7fv(&Uj8UA&=9MIq7>+~j#Ewa@iH-+Y@ZMxj&F^4Fv}BuCNr zpybbRuQu<&`_o0z1a0zAYHB4ZF7?)T<6Lp$i*qH!`*NO}QN)SG6|BFNQJ&q}47EgW z<5K!#=n`S16XMT}@pMjvQ>mkdILC~yGdgXe3N8;|XGa&GAODU2UVb9-&ja9aNW|S( zT|BQd4qs~W6+IA({37Te6|`BX@>oBWD3cP1*`qgvI`W>tku~lZVORfryc%mgYmGoY z`e4L(*>5F2t`M`A_>m)-I3l{bZN(!r8oMD-@=BTqC9i3wRH=+;i(L{wJNwBjG~2-;KWsukl{+x%+9=^n|Q z>}aUk#Xp2vL8=I=GSlO9TwAALhbGsNk0jKOBeP|y$r-()BBooj-Q*E8;T$ij>N1jp zWjF~Z#-b*J8v?R5)@JbBsg~}ljY{`mS|>!zy2>0QXs zbbaJ`KE9&7okoy*t!E<6)#QTnCNxI=Af<9`bz*4C%#`&zj>GuJFkQYwM8p=mylVT7 zV&T`Ptxuz=n5?WY8dQjaJFJ>@w}i2jI^|5Tw3oECpdR$~xfgX?4DVbh^gNg)%QS@J zVB_{0-UBpm43@ywUk+bFnzW2G*e(0UO3c!Dq3dR1!h???b^Lp50sOxREFj|zuYx=~ zo=EU~E?9D1N9$@{`?0~2gTUU9)gQ~_5SYx%?lwQ!+_f_ERAcOwlE<2Ci~Ed}Y9{7_ zK^iHfwnE3~EYP=S#?A16tykVax4v%7=xES9HnUHi9>;r@JwXe(b^e^+I_I1IwW3)m zNo}79?vT>M#FKV7n_(*4-4{lo!JLYDWt6fQAey}M_QneY7wLZM(1TF_kO+D`tVb5% zTms6USadXT1u2A5JjHTF+;#+g>uY+UTw|n7=oyE=2liim!|eX*AmC^T5KkSMDlWb# zQx7j6q6?%}9y3&}7}Sl+(8FY1Jj^{bCRZ5e3gGKPB>K_xeV*M-{4`GvJ_8SANe!7L znk$MI@C-;R4j0IZDVojW1d6o!9jtNh7=}_!=Z2LV7g`bbZ}Ld1ty{#EMz8jEp|B%) zw|)&j&v;5-n|JBw7$7cgqrqur(+-)fhlfiYmwi^3m0#v-8JMlQt)QUjRj~}a_E1XF zvnuHF-I7Rp0qoP5xyxMg@JrELTYS;k>s>=Z0SpQVBT!q0(JWm>obC0#qs{$bvqZY3-*#-tWB&i z`@>*U83qDKm!|6aSdYoMzJMdt{G8-|J*3qaCtdmIXti@`V!bfMuPxnN(V{8pnBDjc zx5Pr5-GslCIpQnI;okczZX@E=^&}E7_)wCYyiM~hvyXvyK-weSSUydj;_kI{c6j{> zCbPPOJe3tA*zFd$*_r*~=`!k^&Vo)cDQY7Uw61?=C}CvwrulARx)6Y-A1nc=LiI^) z%Ad^FYm*){1>H)2a-TJMN7ZzcF-a1PR2o$H#rPkrJ%oAu-zgDtE!Q4HE|KP-_a3q3 z`!_^>)$e;m-qG(O$_A#$GDQ*WL0MP{ZCTvd3L~bTGR9d$(&_v3*gw0RTrO(t0ZYIq;4B)pe_l>0Yk@g7Rzl44Vx_$&cbZRxfQ z#`ZGOk1DQ9E76=ymh6Oz`dPdu$LwH#M8K0LU}XMA!@rRk+BWfZ2ut6gL>B{g*V9C< z>9S`gC_xgnf1n8oM0fX% zT>SDk7~TI}P9>Bo{u{ZNo@T|(Il^|4dM=LIR+BU>at(Q{ zrz9kSb!QxHwn$xijj*+kZEdAOX{VXho`-`^808Jh%1*Jy_9EfZnhdUtWl1Myj>wji z!O_MlPvYJmcLYeldagTQyJO;?hNMrRv{4w?<=m916xpwa_5D_z-kMK--Jet+?1KB5O&}X2Yrn)@m=-SLh z;3Ao3i*rvxcaV^I0TxTBFoOKUwmn!-(vR0WxH$8}ZwX~YNDxNCf>(udY%`fYy1;=? z3oa1QP-4RiVLqBFVu+8pqUhrbsM*wtco5cVV^O^Pm$Kd@_-M54du^re7pKk4qFy z({B^CSYUx902iO&kB_c^(3Jx-dny9kf{xjX$xR`aF5lKS@2hKyzs_`V&$|XFk3{C) z4rifq${HS9U~T0Ti+I~m4K-RDg(@_@oe-czDNZG7M zf=dT{W~ly|#WrQlrF!lBoxa8dFKw$dM^$Z21Cz-P?xggxdVV4VX`T;2i;$jAPZcON z=_zsSPfxRxI?i5qjP1Ud2*1WC)KW&CZc@#?Bery6!U*_cdoXo2H++b>^qd{J@pC<2 zUc-J+eIx&E;jfD!$nIV`USd?BWL%}>Q3|D&mNpi0sZru0**!E(q@Xgom@Cd~YNbd+ z>lu)*Uu5`1X6DlELy)UDh2XgobnSO0zo!(H!_1~&e&Wd4GK4Lj@Gl&pgSnaizGNwJ zh0-#UCgRA*WVk+#8pm*B&xIv)qJdTqcdaPu8N!-7bCL|?tKx@YpFFriQ5|VVs^p2` zD+j1$1qj9045@f3Put7=jxzQ1iL|{94}|tU07&iW&HFi-D!;A-y|A-BMpx)#t`Z(c zUGSBS<9a|!yrz-IjHzcy)$OT{uomwZ~4EHAg+z zwj%IYwDpBUhC5&-+iN;YWQFcdNf`!{?0`+qy~DulZ+BPu0VUMN?mR?h<5*r15n)2y za9C5xB`q{n9R-;S2<36>QT}b+pp3=)6UI#!C|!(WdbxJ$hf>*}w;cdG1E;j&Vh{lI zriii9ke5LtrLBH^nH}ND|8Nxk2-D7t%61sw-x#K{)GFI>9~FCv!Qxw1tav@mHM23onn)FAmu;`M5gYjM5)jDq7ySfc#jc-iUB1sW@ZNIMbTD)b3<<9{ zn~KDcTe4Z5ql4()hUv;wNb0d&{tEEl=3CBFe3u5L#qu5NTR==IxGzBo}ooi zh5pCtyRusnj&RSd>@N)VTok?$GDmBozE7DsAu#W2a4NWp*tiF zx9eezxo_=8^$F^oPPK2Wu)C_P+jk^c{}J_b;AB3t8ejqxC)Q>^OA`1IDXEIcZ=GPo*;K;L`fI)5hMb zT`liYc|Y|X>+cS(PL^1hg9IPggdtqbY#qPg-9o2~*VQlK;|mii4n3$Z z#K(pbVz<?9>>;hPCQ#i|?Njk!%_siK%q%6IlQ}&h@ zD1k5drODt7b)-0TJh)l?f=puK zL`!r-%G}Oaf@X%X(cZ>XsKN%v!7-Sx6KPyI7#RU3d+QoJW0c3yksT9foa+(ntxjh& zr8IJ2(H>hs*z1$kJiJ9MAulBmQg3DkEjYv^HXU8X+mPVOfkKF<5zI0g$lg`tzjbKE zu{2w&REQIUBBa)X{{ToL9|KQTBBD?enLm5PZun!$r;(ROX+pxZMI*h{dcR6$MB z9K37x7wqx6zo0M)FdO&)WL3U;6~Y5Ar$=BC&8rQv56f!PuGVeLxy2>BBX<=b?+4eY zEmF?)RAyj5?UFI#6pZO;(I!XAZ|Z6>1Xc%nX!ZG6j>;;W? z9&NH?6^spz$rCp#NsK{rQj210r7nICUuqNK`G9q|v(&kvwZ{z^0vDLmKqB`!4N)w& zm!0-8-cQ^oqZMzvl6i~;h#ATrlG`yn1<0CGr|npLBM-bKoUstxC}Ugk_0LO4IeF0- zCi&pQ@oa-Ji>``e>4?4*r{)^qXsOd`mT3`4W$JH_e6wO}G8)F$U8_t(emple#(2|1 zeeZawYpC9R#b&&<);tP~%(mL2kpee)+|>eGTV9^NK}YVIrP04TZ&(k8Sm8iG3=Why zKn=xpARiF+L9{ooB|nE826!cjdK`3RR*){Z>;ZVa1MuY}_x1o-`-9gV@Wd6l17Z^6 zMxGA`n1)(_q@28-6AFo|TA)w>k6XpHp&)|FAZj0AKOX)IVANKaZQunWyPgmy~ z#`b9X%c0z%XWTFhguUF4lvMnXc;k0)-pK3vmv_wA@^OF=f)@^YPt^vSN`6N+X9gwI z?vVes$Od?QE6p`4LM=P$3`{blW;v4s?Jn4wR_8AY#GA^O`*c%r`iY5ZsOGG2s=E7f z4ZEeOcBo5clZPbRs_+7pBdXP^-D@U` zJC5&GKUN1d?)AQ~IzKKqBe-}yd^{ap0Nr}~kJEVh01_I(f1H5vCAbvg!~Bj{=4%{`opHPnA{0)SHYa zU~&HIk7Skf#k-&pnJ2bVaHB(=7D0GJh>QxB%qkwNL*#qbK5LW6fXPWcO& zs6lNS2Drv*YCMuf~hEqN?n^q2J_gaIIDxx@Rske!Jf?x zkd=vI33joLWI|59s}Z6vy2D1&oMLK9NS-5QeCTgDPt&5JSs!A#TKgpYZHiYUBaOXr z72TRB65;>25ej5)wNX5M{9XdQy6%~F$%8sRa|7ecT%hs)v8YVvytU69lJI^e>)$Grr;8h?@%=Wk{Ko6M6gP|{6u>S{ZA zb&H`p&r7)2cS zXRHWIh6QxGqsBM9Mp^abSai|p#45Ag87S9}QptWujjwBGIO$CQ{5)aLO zZ;%vnD72NTu*@o?2n}4HwX*e)rnDT2YYxy0lVHVzaMBFR2|K)V%eW4<0nPP|m-E+P z&W~2Mvh_mxvqgm2(MqM17?s&1Rq^~*u-eG-mrGAU#cCl9`^aUhQgP?3az(Bm!}fUV zvL=YUrwukWffLwSGNheQ5V=|I|om_l>1w5IL&x0IIESO09RAeN>`CVjDSk~r*I zf251ZSy;JbCnFglWP8j@wuXzC;BP zTHEH<1ix5_sP2On%BNlG^=ZHe@zvw#ntaixpzPzcaC^9^&qXqTq6 zL#C z3iC;@NOX(E6qw%>1=%7YsTMLP3qO~y!P5K4oAJJS9_BWfrqpYJQeZxTa8O11v9P-X z=F>+%`$)fB_&^AVPC7xsZx^KFUUQt`t1{PyRhT?GEVkN{`4%P8ys`nUBmrRg~4R&Nx9JsrT4jmS_$+1e3;H*_crFp$dMvMmgs|v31=TS?hV5tL9oI zLKPHv91xmQ8JhF!qIz}tPvxlMDVhW4Al-_ERxTJ@S_o$02xy#qHQ#`>0Fh!2UE*c3=mIMORTTwx$pxF%iW zUx7G772KA6NAEHT?8>N^W~)Oy6Jt)5wj2WdCYY~es79nls3c6jv*(P1ZVCIdW;&8( z-&Lm(?y)EkEA*r%wVG9|(T=&(-2ysa%ZuB>a-nHlamthiMaPJr3S$qy1~0SHnnij` zW*(LzhFq%WqG|l=HwS8IG5vgN^XT!Nli1ew`+IR5`O|xN0)RV0q+bLus%Fd&KR3M1 zraStcdxr<{S-?*#Nsxh`o5M(MeL>XGv(+RTaCmb=B$*Q$2Gw7n8tdOnjRQoQB^Hl| zISl_8`b4lkq&0vDNmmTKNQ;F%MDIB#@eJQ+In&nyboJs}>lju0m ziS+mT&rsv*4U=OwM91>&&)}&5`>@%~A_aNbu+UwTS5naM$#2T!?um|nOCOQR3_?NR z2A!t>kb0~n+nLaG!FUOaJOMdmrD_J5MiJ*Be6qno6Xj-JSYad&&QfLwOy8E=h^9z^ zO+Yf0`ZQ2?rlMv;|9Cbcf<*<5wS)g$E5)m|D_hpMd!~6bmXN-=j!5|J$gNmX3Rny&qL^R-&SC{9`JVQv!J3Ayxke?gU*a{Z7WvsR7n=;>g8`8M4cs)kVOKyx#H zO+n*gm`FBmL%)4xO(^Xh2({GOonv(uG|=X^x4g%}bNSTzYssFxp~JaCT=r50YFt*0 z!M4lP)8%vz#wR!i9zfVKAlWGFU@&2cJ`+&8{d~W8c>*b6)!hYMWUsvwI){zs7AsU$+$Jauaf7D;S0S{)vN&#Z zMNNQ2t>Ca`70S$qtI`l+if3SU>8VBeJzxQ>Xd;Ah(Ht4g4uk!AE-B1E?muQVCtaTV zrw@cev_U^GL`ONtEC`Nbh<{ddNP6;;-auGR{(?~D(T`FGZwJz5bhy%@ZJdE0sTRB{ z8lf8nG_W4s)R4mEQc*%L`7WXB8!iF7+Se@@BZch^umtDC%*+DqLY#s-5~s(CO2N4% zj&U~hfFfZKrIco_=}gU(A%%4aC{h@}9~Fl^_@5R&_i(uLLll@9+vtq5(q@sPou%;1 zb-xA_r^FVyvixXLu^XY%eEZ)fqu#-`V&bv^Q~_vgbFaphGf%&}mrFxHl_Zh9v&zg4 zIU#F8{N8Tjc_C|^>#3v27&S52|5&O)IDMw6iX?#*=92$-Tb$PlK898~t>*IS^-Ix{ zvqF~s=!5-iWv0Rn?|9TZTxstgE$)kOhY|TG%AuvajG{jD_~u{Cg76IxILp!^<^S z=`DVxE1!w(Pwin2%6b?BFGU4i^#P``qgjiWmQOA4JA|n%&=U*-Gl^HknB)g*smknB zt!NOuQu>f7{S8%lvF&2~M3rPle3Zuy*KvQImh1(GzF@Rd|5<1jig%~vz1LDZ-=BXV z(mH-l)&z8}kUw0mR3BaaPWn4;N^c&njadG=V}9}YK9jv(OF4fr{_Vom`@-bi@agiy zj47BcU5{h$j`mKe^m(E-58hA;U8zLu+4?7ecgF`W%6wJNZCUQ)jP_PYuU(>FXugO$js!?uQo{@z9Ek1RxLCr81RmZlXva3iC@ zJSg9}ok35PceE%bf^IZlOwIpjI>+e9nzjpP;!Ki>ZQHh;OeVH%+qP}nnAn)uw(U$N z#@GG4>-(EtE8XXuI(1j=ecihVh#BeUuC`9io;gCp5b1shc=r%oc?mN-jgj2?0yfM) zx1%)*;sQ_| zr*W1-i!i1D$otA}*tEYupkInY><%IdmK{=NgD3T;DfgbTF`Vj{vS9vE;hglF3iSK; z&0Ck z&UT*eQAF$PaR6vHUtKqvF3)C(KSMyDKbnd_|&KO8yS3F_FDFW}*o9H}>oP~YV5Yi2O zoR@^Gl-g~oqQx2P-v)56w4d{|!w7Q%f+rw1BHVop%7rm${!arMI_V@ovOHFC4LS-1 ztJP4a3|x`L&S6Lw!^AN^7#OAuW~&hdl2q$N@{QiV>Se;M%XCpj8WR)9vy9Im<;l3` zxD<|}B#Kew!JOztc2fXCiVzA)&z_>ewLT5ch?vPJcfc+>i5S(kkr*_zhTt z5i7esGvHu9mpgR6@x1wn3ifP4mRp+U_6UNylj_76^v8#3ZM zZt%$sVDE-w&wEit#@^9PQD@lQ$Mfq*JX6++kkLjiGNdk4jHNBqU`SSV{eol;^BC2N z{H@i)RQ4m!6sgR?PcmYmJ2-O0yeUPHXT3RcmJ8MxeDh#K$dn zJpHc)nBiz7jLyPojP)v2_Z#btf0YtDH@R(KES(LfOP6yjh!hE{B#U}!F5TJs37hfw z)e_>pVg=Q+>0fw5D?+!~-A|>n^?HzBcQ;r3E1*(jNX%!hNg3bvaxvmN}vyJEW6=u{_x1bGb=I}+2+%Y=;jb8rckbb zirJ6S{A?04u#oRSS#*4v{H$^5NCF8;l9?OFr^0?*TaP4rnTzb;5-kCDE0X^#{Zv9` z5PC%sIOc}oF=zA&d!q?_BSTwT2}Upm5eOt=rDCqd3BnMHCQc7-8TkKh?F9Sd0zLV` zz)tsd{iR|T9&GM1e^u}pDC;`P?D0sfROGm`GHkKf0M4g@YN1U~KZYG0bNlTsDAtQdJMhU@Y$2l)Av zLJB{^iFk^T)3ID2aYWmtK+wp%!SpB}llD3yImKxh*uHJ!?#%*k8|Onx(6~TdQGV}! z$1BWrZ{=*UZ_-C!Jgz%WxbtUvs#wo#=?@&$jmNEkWv8UU`CN9ap>R`Wbp$@P4+KhH zw-!iFPeDFwgOUUB#bv)cb8=b`?yJ?FJvcoeDV`b?sFz8*h{9n~by$ zl>ck-16+tq*8Nf`fqbO3RR9zOE`MzwqP+o->6mo$b1AwrOqdR4ew)gE`1kur_wYx^ zDMoW8{V(OJQS+1l1D>zXPPeXgW|G&7>h?u0sM}L6n_Djy1h2FES#D&sl z`FYgA+n$P(U7fEOuJ}W~@QCYdBQw;10{=UrMimZf^{3}4_2V<-)>t-#oe8;v@GamI zHEMl>t%k$s7;0ZwN^q;h` z$llkJ-BM3b-m|GJD{@r656{>5N9Y)HFB3PtUlQ1Dok!}DRq}fUi%sN8?hT3prLPgk zy%-kn1r&V>Y!z3_2fcTsE*BwFqfY+~o$zmH!%{{ZaD{uFQya%UNzmu4U} zI!e%vix#MaqvU>vo9t#qt6Z#-x|1aC`$(Sp_UT@@H)By2=uIem!!+^BxNU1C(;Dpe z4dGvAd5n}l1gUe{Y0onO3Kopc5{3fzX6iK)Qw6R~s2rz>-P+~OLEX^}y!BOclFOt6(&hWzZ%k3*hSUK#_J!z6}mUxN@WjhTy=BaPp{ zJeN=t7G%koxalbw3&LeNSe-BzJQ=~=s5j8u&z`| zp{rT5*Imjm_jdxN8ee6l7OLbKq!t*JSwUOF)w5(w=HI|cwkYfC_!(yzI1MQ$eNPe7lC$=&TD-3!L79@&_k;nr^*FI}p=N}Usl#K76&h;NFcCsqp;n8_k z?kAg&ORh4N{4sjp`M%>5 zjbT;|ox^%x=2%^3fb~LKYHTf~Dw6Tb_9aW{==t*aLTt|;?uq)kytd7!DaSGC3;Rm> z)o4&$U-e}Y)oe0ZkDAX_$6;$04THQ4J_x7CRW#T+r-jiUj|cY{AboN@SaX&aR^*!VS zu4SBXuZtN^mu;u`(U-em0|;mJDCQ4bukp$zLfy!4wpZ7pekv={y0z7m`G%(61d=m8 zh=PXk&k%(&!X_X$^tR)_6#!`DR8T?rv|Nb&oa3>G3fj ze+Q);7=ZU(@GCP04My^iZVonMCj0Z^(x^bLT0|_IgA-tf#&;&AT;gJPLwN|dp?Z1U z7ktR`2llXo9Tf`sPoP$`%Ai5NW^Q=bK{NUOw^m|QG^uKJO?d*QLz8qEZ>7}I;fi|Z zoGB}SX3BKus)r~ldLr>oWrvP3nf5z|ol!iXH}}$~k9U;y`8hKTWZnx1lN^2A-hB2= zpAHUA>9BUZdkdMz&HzF)M7M#m$kY|ZxSjlr>~fVnw1fOJX5bbL$AWs;{zq!@)>$zB>7GS;hop6#|n4H20szR#p` zH|)1kK!;A?pV5(ak0-1MogGkPji=je^OB-Uc#CV23n{-47s0YdDXlhiwvf6_h!1sR zc=x8~Dqf;yH1=oBJd1+Z&EYIz&Lagr6sII3tJTc&pH@jgcexv6ZH zvoNm)X)BiW}o&6!yGVcy*|qE@kDV8vyWKt3q)!sJ=Ck-Du4(;eF)L6kz}l}!`XgYRU!b#y5-!b_nn>KeI_*Q8djx*1tfOUK-Ku^T`-;_-Xh8d-U%OdPRKW5&96G48Omb?xd3wz=uc!M|B> zfc&=xf#_7D(U2VS(2LK`;cThKxw=x)EyQoo3MSlfu6IR^x8_@_k2^V6&1A*4B zE5`2M*QmIXHTf3%@P!8x5mBGz1rg@}OUO3Qm@fQ`u*Tx)t1K_U$%sWrK%fLYd+{v}hVFvETh@GwU}#|^Q^wu8brXJNL zx#yF~6MzbSF=Edd-M_R4`+EQ}ygnzMiD$3FX4#P63tHc0*meh{gz&TrD?F{Ul53?V zaZZC|*2}&ZN?lSONG3uP3Q@2Wl$A8{Cbh3scPsHg@apysl=9|Pg<5W64LR7BL{i3! z|NHUGog+?-jtOq(#ZL3DT8zJtTBkU}@*65Il#q5M1;n2z!z15T0%5}F#WK68Hm+9| zd8blX7GqKqX4mvgDi0t@M;R4a^p~mpliobpRp#gV$kux&;;-tHd#!&;0XGkzNXP$N z6o^*na+BatXeYf>`#mT7ZkB#;l~VTFs6tURGp%)-qZ3P8YteKHuu5LAt8D&lW%%kJ z7%aDBUXZmDLgvo~`=l_E({(}*Fgsawo*)}Ao-7K1ry%z@6v8r;5)HQTn3 z`vfPDyGBuEt>Iz0tcZSE)2deV)Z*=wqbfVt?<;6;@t~WjjjL!)el!I*$E;*io-wS(qzUxxRuoWVU{NSlJne0)cg7{;kfdW3pup zQMGTlQSW_e+Ulh(C{O>U&bWE?h2L&2rPWAysz0e#MGBKrc+{|P z8tG6Voxe*nZ6m8LmJ~x}NzLV1t4>$*JR@TE0a)b*FCCdUQffmlNj;beMCBu@`rjml zoVfAa#Y)S6-yv_M_{uW-o7q>W{wb#^eiPxu%=>#2ALHl3y{gH6bwG{;ntrwr>_fmB z`ALR&0rrpFX6l5BaG6bh&fv8sn%{i0Wpgn z0YfI>zDixTtCg&Sh}Oe;TbDp@3lR|qFm%DeP0H}jBVgfNhMZxT(L-ee#`Fl&3^WoM z!wo`gh|ITAJrgudHF35vm&SWp`d;SPJvHw`I6aAsg!vNehm@MjVn@SJ&YM4i8vOxO)SIa>i#*m$|+ew4cQPB6|KZCqEeoS%!1Hljt zVcrZq5|5I;X<^fKya#lrfCC|Ie+sXai;M2TOxR)`@AuJ;#7COAttavFm zVExkFMrqyzpu3MyicX~c%``t7s3WxPTbC37w(j5Yf>s_jFD)Vr5f_GWc3WYbWH!OvDMtgDeo_cm8jyikOIS(Y$cq(12guci`C?z~QCUdyy4(x3v1^ zt2~G}3v7M`m#pn2P(f3HICieQ%6b(Y83s)fkcYmQ-H!E#yQ5fvRmPXu0>d|RyE%_l-&qrRcCgNXh! z+gu-Qy&%)4dwU0?ZXt&T(B+kY#RKT`3lylD<-)Q>UA@ZApVf?tMR&E1S}ry$GVWt) zkssP?`#;OX*G#~`VgEn}`)>pFJ}|qyACxDa{#!bSw>JQU(Jf8a?jMn$h3-%7+4yzD z7K4e{g)v#9i!F5(C)>@&YMQ@Ht(S6DFs|AKbX)j#ptye~0U;Uc6NN~@a3YMUQ=}-3 z{W`6aaR#|XoGUrH=q5HtGtzXR{Pxs20mGD0yfGxP9>q?n&5NK_!Oz+>=L%;MITEX! zRhCS`m)Rl>1(*%fCQQF*(U6GlX3n(`jOc(kd8|N`k&&ZvV6#tTnvNV-_v`4=X3MQ|H0@bUwOL%fm_Mrzh+%7y3i4>{ z2JD-3Ch4qeb#pNo|-|hqLol)ayWW)9mW9x0yuFJ6YcFlyERB(1aL#FvQ z@Nr5c8(MmYtIygj2r1OF@R)&WB^i~OQet!sbDzX*0U)sLFie{!niwX-(cIR!8o#jv zwU%=F&*DQ@hCrIT1IqK_;H}mRD@-&{7o$b1J&IkI>PLVGTBOUDr>oh5L+ zLBEQx$g4bcr5!!)l)Z1OIUCx69%iPAQ@Pq4WH5IEEv_bSux74$>ycyjW0J2OWId1b zB=FyAffD4OLWXuV*P5Qfw>82q=B+&kuAVpz0+_BnlLld!2T(0a?AH5soefn~i|%rJ z9EYfPZ7Af{$xv9Ved4d*V+SocL#WH^*{wyGyn>d#)CX}D>%6a0DG_Tr)yfV$$1th^ zgSV$YkJ7H;voil8$0^V0^{*U0mfH_g&46DL-Uc@)J(X{@97dWZ{&Lej+Ql%XX{2y5 z>)0&`I2cEpX=fg|Ly>#OM^kETvG1EkkO1Vw173B4KHxHu=3IBwbzoH zU^%=*@J0t9CPuN1V9Jb(2~{^5>OmyX@yciK9lg_bzaxUm^;g006mA15Ds*`(5E#}6 z0>g~z0IG2xS{Nu42gPFuz}pdsyUp<+e8feO2m)}x5D-KF6hL&?`lj{a-Sh5X92L-& zxq>*q3qbdnWB^c7NIaR(_PID9Y);JqIzk07sh=vJ+23?+-oC#6y(NjDhZl&cWspd- zvTKMF&yl>edOM0POl&+MCu|Z(4b`m_ZXjwZM&DFm-e{)-C-s+ zZ{WpaZ@1IPE__#mO%%1^v*uNkA)U+X-5x*cjkquj)H?|52pcZJcs{vEGn=u%tFeH! z$=>u0$E8t_DLV%r;8AF-vo^FwL460@Lg(+kRX$~85@c?1 zI1_`l2I?qtE<%?DRSz_u@1XFux)HS)vO_iWM#&zz{Y1oGrF~uWk;tEGw3?PLk125} ztsRp#c%PZcGM$rWGui^}UWs%$RBXTREF9ZTh`mS)+jIdzL(>N3XT-HRaD6aB2MiPp z&URC}|Rh`v9T&Tl+I)bm`U^GC|PP1R^0au-ac5l`$pat<5ei z38TbZS=2f$TW3f+8H#9(OzDhkIp3Qxa2%5K0J{}p>MnP@K0$FSGqyF3kvsX(THGyl zDl3)+o&ljC0a?I#eAo1=v{~ek?1V|Nf-OyIJ=3EqN3TNGK#Ers5B>;Jzmwzl+3jAJ zxis`p)O}Q`@MOgFKhzD04dU4(&)>zw6>x=5mx~h+jzfU}{6?@of2;26laD1#S+c`mcGef%Jqy0&PaYQ=<2KCLBj zZNkJEyb$=W{L8nZNL~gX#lM?Z^|E6!%SM5AQ!?yalBEBaCRTdstM^aHt_3NdeSYco z$_QZMw?t-U2boK`e1dp&gxS5ELbC#MJwV_)cec)i>^z#hg+&gcH=ib|zqw=xR+x@@CXpp%Y$wCXSKK&mx=9%Gj(Dc7_}B(-)I){ufL3lXv2& z{$sr2W=*{F9>2f6VsM&JNFlAd-&fUSRI4#iQ+PN7iAzVzsO2rIu~ySoh5l720Y4#j zT8_Ff>K*Ad@)CMRHe4ECDKSCiv1R3q2DPuBd?|Td2Fxqi;Xh6)`$H>lXEXLX6ye~4 zplI%^2Tx}wt}yQ4LV?v6)8@kO8m|O!VS2zPF`MS=Md2FU&C5)*imBY>PI4TGqEph8 zZPFA>b$%;Vo16`Of19L&l@O{Jf33<9OMRN2L~y5)7Wyu_Ln z@`(K|n!W{ro;mc!co-f*GD)eVZq1{TzH{-3#YC^5Ss>#Ee@Z8ajsy}5S=>@MvWve- zYaF<^;4OS-3sTllX(nMiDN!1DiA>yuW25Q<$F7Yn-vWFuwB-s3qV?+lCz;)Qt>Nd8 z!SNh&0r-SbBw73QU69R@eNLf4soTb66=pMkw-TcfQ;E7gn%X|k0#>PoxD5|a&>-Ag z(Lj%nDDBXqJ<7_Yji>BCrKQww0{v&Q;QlpH`e6~r*}UXBPnC%UT(&%&6wK(1jrPmg z4?antsT{6LATuB-Y7YLjo4l7$rd_4JV=a3PBD!~+XVIn@8t59>JSSlzVp(JCo)}!J zj<7=y09@5yNv2(SU%L+k)*cJJTP*c3{B~ydt@)C- zc|*sHvvCD$3Y?e~l~lfu81fH9h5c}$vP*|#1mYdUV{+x2%R~t|={ zbqTqU<$yv}9y{HhK0V~W+@ABV6Sef*;+O-DEV2tYJxnZ(rZC4KewXNp8{$Uj`F|aF zxD00i_5F60MI7#QTfJ&c6~FvBD$|0ZW0dupnS6c*b`U4=k0vF8{sdb687zagHFW$Z zJpVw|zF{^i+T&W4^HHB}6!{Hehu0Nr8-0l!^6sC0+myJfGiX5|gQk?^{%7MQL;+rUQ*e_~$HU>dfpU&#hji>=0I=BI z_x1XM>oxXcuKPo&c`CA-`|5V{`Z+z?@%I!;v;mD>@Y)|u^2cv!M174=Vp{xyHo|+6mdhC4%F#w+L|8=1`Fs7qs}1R#5gG5rTT27=j>UTPx| z4rbCLr(6&$KRm1yJd%~6#&x}GWU7&Mh?+Cd#|Wia6Q<(d5?Uo`@rCUAQTJoUWz0@L zCJ^fxT6fvuSsl&N&QY;EUG(o%|(_y5L*CWL%M1tRd|!b5cs4yA5+o8U@MRGzLWakDxd4=q(IrJ>1Z;l?I<#}zuWRIpw)oidyj(S8S&)Bj5u zj(_}9cxa(W0}QQ3Z%OS%606LRxck&XTxOiYrt{%((O%aGdIw4jWg1yU9M82ttKuQ|rK=0ks z>I`C|w;+4@d@5^?de{EnH1@0=+PAi<8X&pjT@Kb}a}uAS4$izS#Pp1NW>ugb0oY-E zw>W5crD(d?s-F8tue^rS!1q7B=?iNbF@M1>eJ}Y#6nA2I-$=oKn)%y1%aU@>F?L|6 z?bA&q5kh3P2^DO>S80@#lB3P{c9Y%n0pfvUq=y%|L3#|8z#?X&4l0mOo zw=q)9klE<@gm0mQ1LeCFPZ`Y3-c4z6eYD6hZIf)}*gBiC7kq)S+Rtc9;hI#lEhU<1 zYwPca+#awL8-4X*d=rW_dvnX*qp-Y=jQlE} z7~)o607aVBwWn8~kx<>Qv}rWJh>%nxqV6)QY7hx(z)3%cuuBznY^~kyiWx^l$yjzd6dh zFhROopd5dV@QVmaM)k|*F-%hk^lDyQJ1pJ3{Y9*Q{7lp24(i2M zKkA+nJfESI0*$jW*A?>&=XiMB>ag3%r-N%|^RMZ%l#q^_JHRHWUkq=5ts*~m+PQL7 z$^R*C%Qi|{OX9T<>Xq9=LNp5t)Xsm6Zi}&PY?Q{&GhNm|VJ5PsEr|zm-+O6Wl~Q5i zio|estZPmb3J)KCi#RY550qJSN^ekDN=f^n0S!_Glodr+J4uhd7;>R<&W>;kBR?c% zWbXv!sV7GB7&&EkS-E3S^ucZ3$9>l;{tmrH^h={M|iy`K+jlicWlD}}G29xB3q zdjNU~Ae){TvuR+z46WA{&&AehEB&yu=A%!G5vlmY&!u|pbcQaJRZDcDl(vMMoY`q{ zM1HbX|Ax^nLAjHBlH-q!jQd3mJ+hyS=g}T7+=mA6oz;j04R|68xI@cmL~Qi*-1ETGL)C;L)a<|J-&aCkK5NJZlgcQirHtRsodpY% zZbtxd!+C7~-dY|j*&?pPyevKWNt8t6YV{)ja4(=j0Bl<|QLYKq(a62d(M1;aE?H3|RPdv?>wna#OJAhuML~wlkOj#u;kQlf z>!1x|R8$m(!p|QDzZNet)>V&xdXr$Z;NloLfff+^2_byXYot!_CyYbNeYiDrmY~2) z66LXOpbJ)ZE8h0lal`4iFGohISOP0;1@lBi2s9V#+WKug$qA;)Ebw|mXDqMNtySvaPAc-OA7 zyd#`0MNl;vFCKN1Hi_byMHoZKX0GeSiZ<# zqg$T(w*6sWlCzgE$Wh)1_%m{Pw}fN`XyFe0lPNzfzwwmQ8QY9~+}*HbtM8w$50@Fq zSrXEJ{{^KN64}>E4atEP$zQbO<@ESS5RF49`x>L?JTPIhtUO2ahC`2zp`na&k&W4Z z7;r_!Ru5k?`>#;T-r`-G!wy_!FHRt*7q71gt3IDcwW?4D^=?1l8G;kys;iBQwo}JC ziu~&D`NKMkcDc>ZVf^l!?5H=XKo6IpJ0Oec;Qf|}p}l0|B_=HvLj}jUC1;)1HuM$-h=512zHnZ)Fe!-*=%gx9QV z^pn3sf%M$Y|A@Tqtg@7WwAv7rWl*_U8X4J7#neyEf~d~8s~AmDWy@h8w$c1%a>2ys zknlgo3lZNlMN85+2Bq_QV%wtF{1Ke3zsT}DR+BzcR>K54R%-Zl{S#!Wag--V+b_fl z*&zK9IqP!M(Ar0vSwe9DSe2*>^lY`4*yaz1ab3PkZN!?|640aaR9nI*oNY)4sSMZB zfllsniIv6j{&I{nBLABn#HWKM@d*@QS^fH6!@NQg$*Ij z=_T?)X1JT;E*5tGInj?0nRGD#n|ri7|MOR61im{)^}B+DfJq>9#N;Vy@oSEyE$8Lz zcgj>UU8$2vRx{!ji|_rcJjBl@qp=cg>F!oqW{un;cRJLF&E=>(pX5VkXma0Y^?WdN zvUPH{a>Ty=<;`u}OmAn){%p{psYuw@`F}{iB=+V4kkYmVN5)ou+|%&jY_6o zt9=XV2yH{?KRKg4nPk3nKvb{~%#e?SFa>bF+3m_o>N*s?AE(Puszfm`|B>^x?V zhQZ{rdlj>sm8$A)B$@}G5UDNXZ+>Iz(4*0TU`AP6MFxc+@$_rjlI-?x*|dAN;!JG& z@4T{TsI+3?lP`+Wx$ zOURt^*Z(3EsxlENKEBsqV`Pp7 zXe3O^Y9@l=_V-WfE2r(P;4QCle0$R@2+!9SfFXSWr>E=Nr^>l&$=jG!I#eTVw@%R- zJ+M$R=f8F#@(1YNfOJLcUaw++l~paPOwfOBzLaZ_rKfY`n82M*jQbmd=9UMTW*`Z|TOk~aTbKmV zBx{H{or{HZB9BJdMk1qu#$Pl;ll2*`SNtqX-l%K#(pdK0-(GTfP@`+_ zMoaaU_m5Z8Hmk$M@c+Pr8Y>D5rw*I7k6)$C;<^MfqGxc8NM#Zdtp-6h2)ccwAd4+$ z;BTN+m+Yg^c&>{p)I^&p?((L*I8@CJu3H}(-JYEA7p{@8e5B~9M0;7}&HiG`cNLCU zZc8$7EF+pj1MfijM{W#wSG46PRN#9(LVZ@)R+cOm!8+rgh_(p})}orAB%#$xdWgL4 zEAWuc)`~DDw9Mr?5{gvs`)mH6ltLF!`$r9nq!b=r=f$J=#)Wg^`C!my=i_TAoV)4R zxPe@hRQsXlQ0@CDzi%u+P??ls_TrufPo?C`osgGmU2P|4>R%-Vfjeq)!f4sple}7N z#?4@lt-1Sig#0xGgP81jcfSQXjiRuYFpU;0SEVo|OP;i!Hfv0IHE3(z^SiS7YTQcc z`mU?j%X7ggV?SyZ=%#;wN^r8d9a9{g{7b-hSPkxm$;4N<&KX^AVYfS~*=dp}!HHQj z=@V?zA<}6;)HWG!x!qIB5p$({*m#sZeh2-hm#+R`f*FIg@r-)S&!SJEh? z!X}!Q^2hh^r&n_D*a+Z~>XX2J^p4!Tqi?D?bvZh8hsF!p#CJpPN7rBHR1_`#kq%~Q zP9iCJdaw~KhG?TU5+>m(K-8qV?IJgqC`@4 zl>y2|k|IIFar4T(xCNo&Moq$EOGLSaI_)m0yLKlV+mLnFcp9ExO>r-M91_1?fV(o~ z+9$Q~;^;VZgy+(%^L zW|52G8s$)Jyw%;jBfXF~fr0O4Fwpv6VR942fhFwo15ar*vaF@iP<;;2}#QQL*9JQ*0HbW5eWv=Z%H&|vE!p;xsV!VpI zML$onC-YfqV$ybseaEU6!@VoFo1f%mw`c0$Ii^jDGqdro*Ewjbvgev~tQKeEE?0}0 z-t9_X{PA9{8=*D~-!^a;mN_Ey?H_9PJru%W{ijiLnN2c(O;7%MP2yuIOy4i=F^A>d zdkTGSmZBwY1!sUL_|xmF{8B9xxlt&oPWX(%NoGGYSCv+$>!pDM82j1(tzuU;%jQbX z)HG^Zb;~|R&L+2AqlTyU<+}nszEI5G*1ECKuiUHBgAg$Ks|9q+UdFE9~z$gwa&t3;<+S9CE5_EjPzfiZ4koeZkpO8*Z z@psDwrW}LN>r6#aC}o7AsH4@Vtg}O38H*!=N@uT5n}>H!Z6Gq*0xPWg?_QnX3txc4 zL;5YAGYSVB(Ku9=S^_^{RKL@EO@dn6=~nVg$*7choGmZ6^VbIC2kdNN8#FW2x`m?I z*=-5ilZS3cwm5Q(%F%%ruL0}R#g)!CyC(@XTM4(pu)BY8b6e003`J7}^8m_}ov3dd zIF+uR3vs0fly`Fe>0Ft>n{6SeLf$lW?1-=mv{4_sNPV5u_Nx&?d0oe9l zl7mp$$nmahj#OcbBd?U++BFsYCyG)j%vBQtnpB9+ZFB}(U=P|v(E=(DQY|%uNXB0}m4&ju#4)@xo1?QJ zo}%h_b+CkrHg6tdi|B22dH>h1ObkW%hM^}fyIr-xsJoH7L3d{Y_&NrFBlXJL^TFET zdwYxL>n2(bG_8;-KR@BybhKddD>H6;D-5VfWZX$7SIlQY|DhLd2MkJN48KhFV{HL}cpnG*D!h2q#ujEew^wkK zr-tV$%0g6*{`cVm`9^=X5GFp_5fy>4d*G-Ks_GQ7m@%}%P6YVsTTtFKGz9%7b2k1o z|8+BV){K=eM!a(JG3hV4ne2P}O4W3|L75qcVks$ZBU3dw=Ta-_s{_EwwL_q2|Mx5` zY61CN3t9n$oE&LDGo=TE-q=AY|75}CZ=&5Y;471V{DT0Z1!*A697*$=Gv|H+#~d9^ zlvNKPfgQ``ve_Ef3~lu(@U2T5o(QBKn1bd9$Q=Xi-|@5zeyk&Z^?o@xCF;Q4+41$o zB(gXBcah=e)(wsOL6-waF8dc`G zu3Hn=kaC;e1UM5R1#q<5+`~JPl}#i*{NfhCxbb;|?z0Ma5f;W$CR*U&cUe8%mn~6_ zUz}JrK%1bd0D;c-Q6NQa0VdfqF7ohM6-Q!m4PR^(>`r?>mS_9zt%}<(P?PpSIJ;2Lm%oBcVZE$IBT_apT(#!S z5yuT-zWF^^3~U4H-Xnb~&l$awm7~;B9-lYW4ir44tx;YN{}u;mZ_{<7xuaNG*OxLs ze>oyyuMUExP1yCAvJQ|F?`c*G)Xw4t}RGm(EB@QFDB&gv5O*9Ke|Ni@J% z#xsZpyqMsagTPr;>C|lMi?z!Kb4%>T=RrUigaCN`i31-7Q>Tx|*L%K*@B(_VcfEiU z18oIj!&Wdz2=t~A?*W0Bt4t^VAuCQmDp69I-!9^R;d9kfx1EU0xqz`Xdp5DRZCoJF zv4SAr^FG`)Z6)ycJR&&03@BlZ{`d??%&pAOuXvhHyi+|WScHCQxDF~hG)z{DbPRyo zq^4gOV^NGB$kX6qiWE={?hr7Or-Kx~8YEU%+G5 zFUIwMJ3NxwNZo+8znpKUx;MTUh1%Q!!*PmYhjf{t$-IZqZr3<`_o+A_j$5Eb1C3R9 zEO-8#WD)$yEIV?Mrcn56GY%6uRy`7clW^n@kL5&?F;g zTH!{ohf9I-JF_~}x9z?-gIy&ZOHA%}+YkR0_s1t)RS0i4Sp|U2M^s$i`>n>!-RHyO zSpn|%jO%OqH$c{$@TmWn15b>ijmI`(ommytwuNYUeeH;JoGt&3zgU(0SK3iainZ2*+H9Lc9G;L>l;>LQQlaFiX^Lp0k1H5>qA`6C2!^1f>hE&` z+Y8alt)4Fjfs&rXX$f+CQo)3(%7hA$ye6wP6|?Q3G1DCKT$^$Ae*v4xxC|) z)hAa!mfieJG9nu`@M68h^Q`4r#{r*aidzuy=DY>vM#bcB_AB>Clh5p<>^K(pTkmRN zpOm`Y(&C%Iz%c1QJ4yVLO87D~{6CtmF}$)SNXPb#t%)Kk>`DjgYiXnVnW6Gn-LC`| zl~?$~iKxtl>1U*sb8X|t$EJf>seMkp>x|VD%XXCjOZO$PdiqoSl^6lf(V)u-%2G=9 z_K=`~GgC#Xfg+a1Q1*{J{I$=-l~l0|awOH=Y$XEmQR;Np%b}pt_?oDuoNp(85$p~~ zJN&Q{yCS%?R5z1a5C+R#sT7YA_ff>9+9Y{7IR|p@Tt{ccD8K_`)SSx|K9xvGRhD3YjJ=__0&l z-)qOVs+bN-IJ~YJI>Sl-2p1yPz{1T{?hE@W{<*=o*@jcrr0f|T!Xox^|2{z}3)gU8 zr$u%m>xyCHL7gwFY#Y)>`MtK11}FqmhV)Hwv8&0KZJ2;Y%c-FY<4+{bQ?UVc8-B7q zb}CJ<)f32RS|CF-V_W3r;Y3M~P_RYf9BnNug7zw!MRUC{F*2&}J_LYz7j#!p7|gqY z#y9QA1+xpnxGJR&AoO}|m5`x2StEV-Sx`9-Ehi(bOdws zl!y@BsHkVRnRzkhwwub5kX~hnqNkgTs41>)iLYlUuZ220n2Uhu%o5Ng+`MYo2-3~r z3GOTDrr2ImT7Tm*m==Pv1UJsV)44|?3J?B!Ag-+?iQW0fPSsZ-)a4Qa6g_?%b!K0l z>PW;)Dl^y6^RxK1w@!g$-FFA4Vim>V=OBfkDW7kolCt~y`Lv|$(`_UN-;9CUZP7<} zYgP2S;(XkzTs^l%kCs0}O-3P(+nHQLiB`7C6Qq#pjT;SZ4kli_R~3o@3!(?Dz|3Dmh&uunihw z3-H8S1I%wCuX%v4X7S64z4-^+KyGV}SqzKV|BM?D;P|CfB4$Q& z5l(gjL4MGbgdCOvuz4vEq|0)o-tLZI{y4(%7FV>^QEiEv8 zxnc3=U$gXrGKQ-cbMF+fTE%d;R&TZ-$C$*qQ}+ie*6CZDV<~sD6wefFp@m}; zZp|4+t~A`2H=wa+24XAm(@}&xmR#|fuwaR@WL_YK=c06UlJx^O(MW^!nkUWrZP04yir)|P$7p5oBk4*qJGb1k6SzZB0-tUua|Oqe=6y;@`k;d1V4#C? z1W=p{9LWltw9z*t`)JZi@492)Ym)n5;4k|b#xS@2hU7tr0eJSuc9TadT8$w8k_O-oFO?zsZBK`L8a~9s*O=*@gk<3Rh1CN~JWU7sC?i!=5ZqarQcEnM{ z#q`|T{A(b@bJIarkE!I(JTXK1i|TI^@5?uP4hJmID!xw@J*OVT^eCvKSWycZtZ2L6 zkqV(@#~T%7?RAaV8C@a8N8ofK+kYrdil~|MFU#hro?x)y8_P+Z5oQbKFxnVnlRX3m z0{XS7i9^3#Mz^tgXq{o^805{=UHOTUin)5@oF532V8yBTrUsNyE0KNh-3oK1MC?_Y zib@&k1-LX%33M^c5b!kz8HU-H>ZigayVz`DeN7i(i*S6^sc-b682_(v+u^mAhJkW8 z@ha;9Mh{Kft%>CM-VSLI16%ymHNW}aGK{Dr^K7)p?hk2*CR|s)zK<0@K*~=<^#3*= ziOm8tzfOH2%aM;`?c?9?uB$Iaior(U@Rmv4HU`l8WUY+yQhnuxDD+8I!?y#jt$<{g zPE6R}e#U{qzUC!LoP$G}ysvWGQs_$OdTFQQdLSB{$ zUHZNH)JpKd!g=jfYBKZd7+WePV*np;R6Tq{G}G&UaOJny zTLwRJmf{fC8oy3sf$d#Rd+)4XhwB9q&(d;j1wXKLfU^7B6p@Qn3qLNK0;SWFWU!_j z5|Q4M-k8m|O@kY9ey09GoU;Y1qNX&E;K{CNqp|#qPYfoB=JvyK)Z!}lKCiX+d$KZO zC6x|&NLJ_X|2Fs7+PVM6kwGv#_I2cH*xb|il{BE&*}X#vS8zeh>I{_riqtM6R-bLlZX={YyZVjHX#Cc4>LcOA0 zjxz{P-Z6L)yn5<>L2cy>?cVE{;+Q3m)z}#ssU}bxC4oC;rB-_}wISRWVA<6S5zc^` zs7`6kl}IAJMGb`{W|C;rer?#8C;JD}h*1U=Dk{L+@wZd$p0-B>Ul)6G4B68a{5h%N z+fHak3dNlP4v+JXFo@F%UMW$^HEc-pvPE0V{g54bAyq|`>{Hq|E6hQGqh1f&C!EMT zewn5}2P`)`^Ob9+9!{eEDA-YwWE^CiQT-&@sNs@78~#k%n)A1d|F9`X+31>F%OP|k zvpk1XP8O`cY=$M_8GwByxO|sMwk@G<&GhPAF&W9TR zHN&0SNk!K^TXgu#`N4WGRdS=a`_sO4T7lpb+Kw*i7|$J3PRJ+=P4(Na8SehFdyiaG**m^0Uwy+h`+8o zgnW90PrF%SBWy2$l6nbT>QaQH)sPIH>^^AC5t85AAk8D&P(nnlMc;Q(lcHgmo(C{> z+(W@6+KdBEP1@5q10~2PV?Xy(1!PE-(1Kd?mCbb2h30770j^pJ@>LiK=Qdj<0NC#% z&_6o!9%c-dRh~pu@jR6{6FR=;IOG1eUB`v*J1VUZ9hH9u=B2nDBS-UDBb>jg6XOwm zrf88sCI)A%oYwCYjopK|!Fx)y)vG#HOfPh{J-;Bku|PQbbzp-%Bh?!gAKja0onO&( z&k$o}Xoe&TfzKv8(0){?PHdyUR4m0T!-*Aj$YmDGaCrA!?YXijh$JZ#;@5jtT1v{3HoG5D^ z^R6&^1;LVFomHk4-d%I$H;0-n-ZG^; z&<(__+`9o~+Nv&tK?mIaAU?8g22Hn=Wbw?DCy!sp@}01%lqZZhwFcmD7@v@0``eN9 z6De`k^qFb~ftq$KjkEd3+2t4VeLv^O)I%+lCb$MDdvlr1X=t86DD>PAM}p3*dAldQo-M_?7(jY8MVs%^-!YJmSUK<1x)H)v1oFdKmr{ zE4S9tLMi_VT#NDJM>5Lmk`!UFu_mtRn7_j_a;T>VxfG!>MzjvqWZO|cu`rV*8PD9W zZjaY`;g4s)APE3zS&0s+=g4upQe0y6Ui%Q}N>aXfPa=Af8V6xWkU}vR<9+k)MioHx zG#}%dKCVg#%N_?CB)UktKl`>nc3hII+A46UE9JlubS@t@e<`EtnZJ+#6SL+lFM0@E z_K>4Bf9!O%zz`m!pDi%tE^x%%ea~J-$v{rCUNIvSfaSS^-Kth9GLzZYLd{Su^o<^c zmi!g~_m>wgI%!5I&e$pngA_ZNRU~17SHvV|hiu{*wR&%!$H(sm3@-A@zWK#!15@UD zF1+(xHc83jDwTo}GN)Y4y$)SYXNXem{7Wol+jnY^T>EpOl!`OBMW&<8l%-&0jcTIf zfly?06Pc>VUF)2G@Z)$uq4As6HRza&7+jb)vVYWU{rqhe^eX0fC-ipL8}rLm*u&=S zfHV?zbm_Hgp`s4}=>a4MMIg~MdEms(6mc-R00C9|()0JBK5Admz&I9-Nh`FHDyq-` z{i{APk})^lMzZgekHfWghiqtmYUhaFo{p{#Eykv7rB{>4kiVXkDtwu8QFTZ+Q-#~Cjz{t#6A4f(K~rhl-)fA&4@g32S2R8k zW5W=~Wb=2s&U=n?F-OI%bw1NZf6LvW|90S(i+wEli57=14M)W1>U()$yxy7r$?AW- z1)s)wLCJh98N4h=fn!<&7BTo5lQB{?DXgltK+j?KXf}~7| z=8k;LLFIYg;QCi^|AvVFRF3SR=Ti!qTFRC%MO9#yfk2jatWvOkz!7o!3I!BZ&V+4OwSMJ=RqqEU{@VIut1_7CR@+|O`tY1WhBjiLb%y?&+>6v>`KouD zJ0*I4%$g<9`&411;dZfeIj9pKLW;x9TgEFRso>U3U&P*Q^Snkg`yB?sb>|cb5ouTJ zcGKPtB3s*hKr{Q>ecJ7nhroIK#kK?Z0Fh6ir=M+Jb7k02eY5?9^hX;@7SbU2BTvo^ zPcX39p2Y0M<60e0el5>Qj3HvlwMTti%VLhpWw=L-l6PMdc=1w|^-1aqNP8!D5z(me zitC{Az|Y9HqqucFf4J+}U4xySla@CJ;~hZ_#ADjKo9<9omM5iDU(PVk&uLL-ZN$Np z3COKK6z_z11QhK&9dB2|qTbrb6Xh&{+@Jy7+7kva*;yY@!3r;2yD8uraPe87&3RHMb@cUh3(^R^@ks#tJUO8vtgs_(S@Q!#d=#?)H|vFH zZn`btdiNnC;97tz=F?W=EZzOR^;o_5b_>ZX$<+BZi-OO-h!GvC2-C-^6O^jc*Y9A> z9ZH{&DKZ#_jKHU%u*d*1U1IT{_YklLD{2 z5&$(HL{87b<;!k3Zvl~z4(x9ZR1^D7*q;PFk`uC9QT&PL?-T~E5hRzd{=R3AF8n@+ zAFl=R8~vgcweJ)l4>H^|v0)BcErZ}zSZ(br`{XiYl^+xiE)k@cYZId8S+(s9F{0kK z5_7df2OYEisn}Lq(Hx+~jjjbVPF*Row>|;e=Q*lefCVNWN9clk< zXIRj&{oo-t`Y1{GvEjWu0C>so8xUym{)|irz9_QZ0P6T?j(|F4@>|Z-2cost%g{j% zRHIH0a1@?UMuYv~f?pX4tLvg~*E@(?XGy5Rdha6H<+csun;;AFusDf>+9TzwStk?+ zjrvPS^{wV{uZ%53ew2S(RQ`7DL-ro4yT>GqX2BC$a2~DU@u1m*cokoDaO10`ejplL zBSbapb3e*YwmU-uuwraUuN@6}7W~}BL8@6!rpR+rt;|;w?itMYalQIAcrHLD^Z1Gd z9PEfF-$9=+u|WV*g+L+H2a6m+oU~pJ*}IGw=RpTRAjuMha)5Ry*S>R@sCODH6NO9SOVR!f+{IMBtTFvBdR_>V2}Cm8_fuFPuSbEg63L%j|jB9xLx%=2i;#44*RpqI)o zAQF2OCf5lbQNc5?t?oGj>wu-o3}K0$9Z!P0<;J>Oy#P-y`@g%V>jJvvR6Lvh66#%M z)j|;p>xBkOOkZ7J0o9UG*lzMUNXx?knL95I64XWe?G%nnhk~G8$?zsbY8))sMM~{! z;m@j~k1KVvlNUWr#D6Jko(Wyrd{h9i5i=2%J;ScTWhtn739 zBG+|9RQl8|aPIFsy=7nxxK26c2>j*0QZ~alztqsXcX!AVLQlYn+x=;{mggfaq<~HB z=JgI`;5=uZ!z(YYp=I0Fz6lZ#w{q5hUDu@@gZ{IiwSnk_w;eCwzT((!oUTh z)uVx@-S81L%UkhDW5NaE@H3*XG~wj$;sV(j9Qdk}kf%AX^7#h^<3o8J?xnKEhUD|| zDe!3OldU{4W-7tNN8x-c&q!T$wdDgI@87Gb)~k^^J%pKAJXn4U{metzPOkvv@NGH4 zb8OJsX_B{XwAVyllx6GtuH?RbXZ(RI9%WhaL#Qyc8iM|y^=JmbnBZ@c{k_IgJo{%|a!U^@^@;#w|>6)&o|tQ_CJzJ#q0I2w$v8W~Xx-n|F=O{ZL)lVhfr z-op-+i_CZ$;{l6PBsBy-FSED5zhaPj+MW-i7`@o}r>hhB;J6pXqaQS8GQ77^gL2GC z_4k2#0;b-Ud_C}~&>$-L-pg8G{ZH2f(p%7N!uP#-WO8R;58{g7VX;3~hF0eBRvkUD z^52JD*3>;YgOxgoS>!&Z-9$gC0x%d)w?0~Lt^Hr-k7L9i-@m&$f3LT}Z7tE5a=zf{ z6h<*Is@j)WC3$8@{>IqN_NS8nB*yVijYUCkXFL1fuBZI-E@00@xsr;`kzoWs+5JIA zSu2&7s!|a{aFfq6?6xvv2k-bbsO^;@r`>q9{CA5}ft*@*&m-j@{4_GknyHMPv2+|C z7Ccp-SakR}r+x7}S8N3_zC8GMO><2G0h{@_pY>^>14Nr}Nu9xuTiB^qca7i|iDlZZ z=@}91{ywxvepsgp8JZ98*OdWpRAAMsoM~3ptJ`nhV-(r)m%0SC*p{ZF zhA+@AE3;s6>N`e7TB}f^8&tuXv8kt-g?J;HExu>Ij35 z8fZSoCb%<{tJ8MA!p-N86iKdgu7f4Sy<}6TKWd{9-gibFmdINCcj7wlTfcvY0tj{g zSjgX?VJOu=WP~tqUQ`LzM)uv!!J}*Y_%q$9V+&&5oWQ^7c9ikq!|Qy(t*gq}1z8M) zBk@-d_GRm~&~3H(P>?Jdo*~@eN4jB;@tn){W1{*3%K`3qri|s=R=zQxl7k+F7xPZs z@hGuf{?v+v@th5j%JW`*Eh0OEv(=BA^~VC~o=3F=)#5)YCT?sjM9yuvjN~lGSKMRP z?R_5?BWbe9j#d=PR|9m2g4FJz`LK|GC5`{cHz?_@6z`CUP}Rg%mV1mRk|j6i*NhK( zoWRFQygL4)fh0TBDF_p6D)xTta5X&yR`tUk5|sf;h|87b{QbEyU}q`3wwOmjeWad~ zX<6ZRHQ*QUlksY7zd{o?Hb6=#827~yORB#(Vintn0cFKKkeUY6;{s*?V|c3q$tK6^C-wxFIJ7XvS*ppi9Melb)QSO z!_&JSteL5jeC{>@|3wc140c5`zlYvp568k}4iBtG%%xFiwxIT0FPv(KXUtu1CC}I( z=A=-+@vnCwoBVTNe-rxXq6v%c8=ffkMgHW7220@ln9;W1>O7aB%;v#sh7Fyyo85HJ z&clP=8FT#3&lPW;Sa*?j`}y8EabKL_UiWyV>~mD@kgtjVX~D%T$MTey!p+Et*QS&C zP5!5?iQnP*=s$eWY9@HomXOK5D~sHeAuc~qB2$85C$im=kLiDbU$Nb`=k>)UoBhHz6jGjCyyg&LA@F;Z$G_j{1&3lHG8W`H7 z*kug2n4d22$1tNpvA8|J8Lm@YY#DBPQdEjgJl*tsAwRpVC)$${3ZYr_?S4B%D)4%u z^4lT+plxzaBwFtCh@=`eo)}oEwI;FxNJ3ZR>J+AmrE>yuuf%?S>+zK6^ov*XcI;US zXBdl`{PrZ%KsBM@bIEcBqmfRLf_1Jo-WQnTGI=pEa6)O$aoP5G`Q1@X-VF;1ShLM1 zHEsip4kn*JzL(K2Z1C$CiKVY|AbL1cPfM$abZ5P>2zXPvN4WbXY zSxjBf4^Kv0y$RVhN%^KvpgRoo(SA)5YOBfN=5ownU)o@JcPzBNn-=I`>aLuE+q_1- zCD*G>^y(%`48Q7fryitH-})il%_ncLzgGpReo!>5i1A%vLjS=A zd{PEAlJaW#pR>hdp?yLIsGc98G|_{y7lBhl|LiuQOJ7}}FCP&<>NdqdRg+1Mip`aT zL&|x#MS?(Nh`}OKs|#*$CzAeE^;I&4r%clryiMkn2DQD!WKD8!J=k$?2K1EzK@-je z0S-5j!-lhiM8f2&s_WgcyI1F`<32|CD!)C?)n4h-dqw@_1I0@V0NnMSBWq9aE5=2bzw4dtGq7_N9ga{dha23&O3HN|WyhtChhI*=3-Z z0;#QaU>l*y2zR&nh7*5uwoL5)i7#_cv@}1F|EKaR((YY!gus%qT&mfUO%w+{DuSCo zD{eJMz%R(c3_}2xKQu)?vD36$Sgi61uW1Vx*^-5GOGz;7T63%2XQ_{9OQ1%m!i1az z{eg8zkP0>meE|f_=OjhyXD}E(GBk>_l1|^1U|BF-do^!wJk!aY7}_+McLr&VjnER! zb{`VMC;2X2D2&23pT`V?2&d3<-c>z5Rsa=#PI#UK0|-FDBP{2)RL6DU30J!)9LCCy zvBi)P?yg;$LBU|S&VAd}ii=PacQD+yXuiP0x}i-J@qnVA(+?g63=Yp2+6EMdnnre8 z7T}959BH$n`C8+H{9C9Mjy?G@Xi|;_v~k`4syrvEMVibM^ziutqgBa#{loUdk7mu% z`j&%`^U>RWBUQo8_4RJh3^=$_r{|2wC^ttu8FU^N#7v4W8mf!LE4#6;;9+vshRsZT zfdA;(FTn#EZT&EhiLu>pi{~HBmxFh-vhwkl-J4Tc(Ee*rT6ic&di)1 zww`c;_rH8s1g3?xV+0wnXGgK=KFt3D#W;W((|NnTY5$jGK{Em~%sC7fo!AJ2*CUmf zQxJ9;AL9{C5nq4wRtxQ#K3LiWvj@ggYGVN60UKdiNZ`m3HBt^Myt3#FlTX-#c$1pH zUi^+^kb`+oym}uu+IRTNe8+h-h6tXG2~<$_3f=4)ReuIAm*${${UArGw*g6C1`Z98 zf(s{2^{ZL@@qQjV|1Gp&>w z%%$D$<0b^263xNUV0CE$uOPAl9V#=hxa*n=9}Q#Vqh6nJEWxn8?QBnX_4dLB zp-sd4|4QSLT6Ra5NnRYO&$aG{avKN2pz%yyqIxwHmR>U9(a6PrW)^rqsWaOXLoGJ2 z>=3d}DR+*({K5D*z-@MLtd9KG@r)D;*yGhy|6cQm zenJ$Z`3ot-+P42kwF?jUkjVE{slH1bA7Ly+62niW?;tchx$$A#BzRP`i3khzAx$Ov z)I`X7%E%kYLSsaxV$rUd4hMreVf~XBcEybw>#WT)zeb{|aHFv1qjn*6v^aCdbvSkL zJg~pwITBaLTcNX>)uAa{?3n6cJ(jB4i7caM6b^@!xh;JCj|q0eL1myp)M|GWU> zAJG}<73l3$KmA#q#48>zemf~5@Fc?;zjukhXaFRrEP3IXd?9=D z-P?z+e52XSg4%w457~laAy6zCm@Mr7?HC~=5j{M0Z+WV@i^JXB13Dl};7{F4+?gfF z+-ok!Sdnw3ua(56Chxoe&)}i286p|8!zZf~PN}!U8GK)H@NFf$Sm}Y5wX=_T8ZxrJ zn>WXlx=r7Tyl90773wQC+q31+rebHx>-7P3PrgGn~|EMN981vR*;vqWBEI+|PfI=2)h zT*VuYnthpQ8waQ1Q0)_KXT%ui1Wu6x!3-24C+NH99;_f zT{P)#qEo&}%@9gkAg<*JbJ+RG0669HrcB@a+VY8Ci}w^IemKP=&Ynk#vK@1=zJaA= zrw!e3dM_j7Go3NiCe5>$o@!$K^zCB%>JGUkixMTOSo~s~ zy@m@Iq7jY8w`9b#K+Q*R%fkUi@eo;q6`^=Qj|OqZ>Tv}Z`Fg)2#0abbZhV2UG4T$b z{OKBjRQ{%5%hBgkm?LR@0m<^zm>_BKf_8&BF?&#=O)}HbYPFbJMW1FE}0(k|3b-b&^gRSi=g#Oo$ zln>j_4uN+&M%;@Pkc+Reu90>N4-xwkmFV@)tm(@s?;;~kwFUQ`2xf9g0vw)VzG329 zVX&Ixm899md_(-?!bjI1zo<)#qZGcId@s>hxcp%q8r@#vqOV4$=k;UE;uA?=#9Fw) z3Emw&ocf!IL#Ea#H=*b}PZ)ho_ zoS1bm%%J17bU6IFBQ;BuIUAbsAW1&HCFgH5P<1>u{!n@nP{NGj*8{xhzVhj6ecmP} z&`e*zMtsH7K(1pqoauyZUW3oFt*GB96C2&|7~jm!XLLQEMaUR9X*siI!q6t&u?+ye zk%$OA*}|b#`KQ78CQ)FVIRNm$nWi*OarU2>ufJ7Xb9^&`UCh}O{{raSr-l9oI$MU7 zU-J935ORehjq59hBKCw1CBo*oi!URPdTqpJDrQRaH>JWjtZT|W+=cmnINTr4c8jpx z`*G{?Hgk4*p?TM2a8alw^0~JoV=aaw4-@p+l4?>$2)neCOUB}(;tk~!c0uBAmRY--A_<1{G1brS4!Qic}$JCsU>m$iUcp)nYp zZqoZl)zC&_K^_vY@P6$iEU(TR8tLilF%e$0KXH!C&eR|SyctvTjea5pk zIttMc%Qp$Vf{JfCzcRxQ<@yrQCztwEMNRh$>fY%KT`$dj*^-(IC@FPgus;$4IwR}k zN&yX48{9v(xPin4!}hlcD>4g>XN=}|z{Be}iD)~;ZnYIRUm~X9Yma35#{`tsf2hD& zQ*73s-(T5f{ysPSQix42NRfHc(TBe=y>P{GIy_FUxWzKoa+cW>c3Dsn2oB1h^Dl@N zX-ZXah!5QVH|}V3bJh^3#S8?S%6z5|rj)SqZRS+fb%6jma=lCjQZ!in_JbQrLg>uo zN98JJ6|-1or48*$v7{SMxF1sW8UzO?br9HSUSk4Ps#m)U;+fy|^BR=&C=gT0 zsT2+D3;SdOb-JRzE3NP zxO9I044exqz+5O0Pqp$qe>a33e25HSD|Et`v&SD{H|{XqoQCT8sHX(as#Q~uC<|@J zIIlCYyu#fU_04J4F?hkpNF?P+1<;NjZ z!g-LALR6{4ZzU0BzR!O%Gbzjv$oA{S0etQF=nna_OTXmz?UouG>g~6}dwn)r^JTxM&pw*D5^wA@8GRm^%QfME#;JdC- z?4~N;G*G+lAa{D->7=Gym6~0_)MA(uvghZj;LkiXTq_jYYGf9S4Cx6~wG{yz)+5@a15r@mA1nETG6DDGqgSr*NFQwV zF12hY#7`s$H~d3%FyE_Hs1B`@J(Zj;-5iR_TU4}KVgv@IB}4ik3Hw=>Dceqe_wxNY zw~pqJR1EnJ>2*61INJn`K0GVUQ(Nu4IqR&cDXlteoVyi4_%F*2)3%sjT3Dhv=7%4~ zs2tj3bt1K($@e{fNZpQMPqik6Q>*W3Q#I43rrg$V+80KJ(knMJoGm)@C_CdVgo~W( zP`b>8-Ul6xiZBJ&s|VMvjf24a@n7?R5xU1G&Mg7tR5cdMv&j4zu3GCrYMJ=FQLL&A zmYG_l#41^Wxg(Wcs8opQ$CVHN;kAX6fvTlE-Q!m4!aA_DF5+>}X`6d~OLB`3B=0)8 zUed(9fjUFsK&c=&2F-y-$B$#WE9u;;EgCqrV7$A-=YQRUNG4IsdJz#b3s>Z5|1k2y z?nqJTYLkPWtPV-}D0VWXw6NtmmlnYDTlKsct7}QrnSjZVLrNJgXZRUigI9i3?pjID z4mbcZf+y|t;5YQtir-tN8wBmU?bZJMf?cj^OV#X$n+gpi)844?Rz*>caXty6tMOW? zAM@q;v;puW5uI#8BS%FkpAM@ybMe0<48h*)T{RbDlqw$PedwaisW)B7dYuHk-!Tj2 zyEnq7={z1k@eRjs;G@RH9q{y=REVHX@kWSRS*Z$~I4ar#~hg+Bok-^DX%vYDVxNnRy+>UCr?%o+Or%Ka4G-(Y8;u zk(nQttxmHXb=+EtFQO#mxNnHse&duqnPT2F3vM?8bts4S`GI;|JbKxG{VPYYjTK;+ z2~DoQ&1B~I22S>U-Q%tWQo?A%{L^U9axRP%ng%?GJNv1!hZh)2oSL@=A@Fn=egnL0(MK1G~T7JJ*Z6iaL zo%xQuENczoP%ZFZNRokB&ofp9%$wC&$P;nBE_51ODeM8MU#h_5`YLXgF}e7CqMgO9 z^L}0bam);$xi<=E0A{JlFYN%|0jj+wvQeR?F{Cp)Hir}KLLfoiXe2ys4sfpoD0l*& z65RiKs>Fr@1^Ea3Env+4TR((K;2`efyceM32tskjxi}89#T4FL5?&z0eevZz)0dZl zQuE}}NZ#z|S>OsSP&RsiAwg0ZkSO=vHb5sshK80;SkGQt%xR4GBQW(C;-P*?aw1WwzNys z=$&Ic5+SL3h#TP% zKqjLnnL)Jp3B~f(mt>7FhKP{K!_no4R7SMfh`XXLpT7tX|Jp(uiIuBxgjECoTr`(B zBWi?ISKOc1D3cC9z^Hhq6d08a z3v3L%q2;A|R|1l)6+%|nN~I)o4yHj#*qsr%SCJ_kFLif#j%hm6dApHFXGTy}_|IEg z#UoZYE?1{?p`X5xUicEf^u=b)^5kBj1}V$>=X@;;P~kvmWXP^#OFtIqC&fvH^o&EC zt9XVFnE66_WVF(CJ8P8NuwMf@Qcl{PPrHwY4GbjNnlHX(h8=wGA8pqP7;J5>i&Kt! zF5xBQf-Zzmxce>J02{8QsJX5l7OpwU0f8e^<3Kw`KZa&2gUHQ<0IdEJ>HRSuS;h;b zPzuT8RcNnOP_RMy^;<9e+i(mXze<-jZy&f4$g2abVSK-jV&&5bw*~Hhmx5E@O!-G= z2J}<9H~QSyK+Y!LPencwVEJ4-gEVw$zL)KsH~FQ# z?w&jN!l|+ER-_w?sV|V)O%yLy^|T65Jj{jR=@Vw{&vpN3wOh2(=ctWXB}~QNkUvLN zM!tqQ1Q;xn>Y1&s@WuKrS#O~A41R6(Z6iG1-(99uCk5EQ2-ehwnr7bW{T##FJVw(f4kI6mQNhZirN_E@ zZn4R~NjDHwQL-po_t!2XPRKQ5W{}tU$E3V7$CAtfN0SL`c?<~|fe{ekGqEEyf?O$M zlk*=|mn{r7!_EdbPmSoB<+s+p5EqJqXi=1B&A1V`kDtPUwOv3j|p&L;efsI+G!uc?hsFLX6a z+gm&VGa>9~LJ{w0$`;?jVv%w#z;EF@P>)DJS&nmF)b&19o31uVrW-=c{TxWn=GZ3B zd+P|*+K_Hecr55mvv`~n6GKpKOB@rwD==%C85+0?$rJ?VQFJ91z$Xab5`{)d>j7TG zUc^+)S!Mi$NWnw>R*%q3Dqfb3Y?pgMfmDUK*8sE{jzM3}G5Hz@dxal!zP#Ga{$RA5 z>dn5wcqg8SvMf{X%&19i4T0_~BL?hKoUd@nNU=5U*3*>h)pnQH8(9jI6$w1&`3F50 z_c6UBRkjAdzGkl?=4_^;WFmpp??!8%IFzHpL_I6_EpjL4^J!CluTq5|dxQkFhDZS~ zJ$tU2zDEl3Is*z6PC}w{Mb?IC7I(8ueKBJGEZxisA znJ48^RrtnzJM*}1Wm(Sw#p<@q_AidlGH`ZB>1DwcAo3}PP4p8L{qTt+c;q~U;wdZb zQ;Z9jh6Ur6$x-XoQ6Ql)2UnSyk6!RS`;}8uw<&CXHU8~EzI*>*{4iT~=0s~i!3G1m zhW|dDq1ti(;5~J9C6e@zT7SP#+Vrht>!!a_R%qU+=*`#{oO%w*A^KSycXFi^pNp^e7X6E|I)swKqL1J9Za1MhO?QY9=ARXKAchad}Tpx z-rtf@MPWjVl7YgLU7A&`O1S|HGI>xr*Bx@5T59f6Z@R+iJo$+6&=yxkltQI^dj&;= zb{sy71n%EvEIvp+v~V_C`3#{F>%Sl@xQx*XyYrpSf(g*xDBI-YN$u^xmG>waop zf*%k*0!4V=RWUqz8-Mv03|%H8x6RcNy2})9p=Ys!4fGXV{7!C|oUBGB{AOS2{7oY2 znb|SKhS(||FE>6sZi+zaZvyu}Gk_dENqO3~l~PgUL4DxTTE2CKskQUF5cj@!Ih-Jmzr}tEyC#xdZ9mt&E2y%?+TX!v;T0FAvwBMJH=zw7fMw5(|y^udHxz(%(|XUc0- z7~w*NXUJtp@=^Lua{-tMPT1v*R5vXS85Mm$C3^;I5u1+r^D7Rt+#)}C5e}F`8S8m3 zmj3)y*i=Djx>fe#VKf)Vx}VjK2iD2vlGN)Wud8M=T@TJTrP*KT^JXh z)ZRWDTQ-9mJvVquMCGUPmIPlQUk-bA6=B(+XIzRt{P%B#XSpOUgS%-3zvxEzc`{)P z4@T%=jy4;y^J|;0X~8F-qu!UTny`-kw!@ryb0eCn`KdK}Peu?@EPY5jtqB!$N`rjR%)TRQPEn8gkp-$5wpeNZ+oh>FvlNCz}EZaGU z{jNiac1Kuc81qr7UxvQDc*W$K$DCLU^Se&+Kdor0dlhP65lT0{q}#VyU`_s8Oc|@- zo$PWkKGafItQcxJNiy9QMAlR(s8^S~kpCg+8lx-gn&!l|ZJSSQ+qP}nnAj8Bww+9D z+qN^|ck_OKZ`Qi&=IqnmwY#gTf5slk@jnS+yFNtt{V@zO^I@j5Z-C|(2$V(j4S22s>zJ%t~s7;JYXIQ$QXbaC>fy=aRj>V!3 zE-}vPpF)X7_Axpmm!3ZMYiA*Xk@06yKFSfB9$6L+D2Nxl$^#$ZzDyYu1MK|=se)bvq6Y-kuQ`k zl-l*nJ2QVC-4&jpIdae)c^nv^Pwmp%+7uu%e$9XlDK?6lRX8%eE!GTz&cyk|L!F5n z-@>mh$9gwmGk4QHXL&gXfBk{|&)k0XK5dqyKJoue3a9at1; z0xdlnK|rlfqNB!{Z09gOCreyMJ`E)Pme>12JBkMbRmwB^XJ`A`(J~q@nJ_v%WZ!t-EH_ocX=A4-{2R zABZ^pVhQPiSA=5jR5V)&ejh>{!5HHXQ8&J^sJv78*s1NOC{rx|ImR$Ahj(Ihnm=EC zvy`}K_8`4Jg)%==EWL=0%5->xxTrSJ^rj-6M?!t}eH}ZxFE)>ms0)SOl1%tdn($g@ zRF+;W^KY_W8Z^Ij{KfBvrRd&WAEYl7A&Ax8hag_xp=hGf=OE>4J#41~-LuP5wq>^z*9N&;Fi+&QK z@S#Hvv2=!POGa#aHW9EqiV|Uj=0^Dt2CGSZF4X}HvGms$?`<4Cj2Js5vfNt>=e$Al z7AB*d{{B~1n+9k0dkf{!q6%*n93Q(R~?Zry=kV^$Vo)^IB_ z*#<2J{f~&2+HABF9E|x1B|&iUQJDiV!;hZv(3GDV+v(qCQ^{ZZK>Y|7 zjfbG4gt|;PSMfYMX2|;n9W)k|%{buBVTo)zS)#VDt`31~if)Po!n30bJ}w`&BLbm2 zQX#(NJh21$=xwN~Y96=9{rfUHu!GK+6M`+efri~~BaTNc-wjcvby>o&Z!r>EyO zk5cUuGF3mNCo#kDsu!ayE;r8U1c_5U!}P{~H)i4P=k*4znp0`Zu?n*K2`fWL-Dn3X zT@`$X*9pIsIKtQ!@v4kLFn&aPyN{Q$88;eJzxY(*=1JY-f5T-hegBL5jy0l)J|I}F z0cEPLsEUSmDvQJ|QMVR5F> zX(Tiud93I*S5niSFjaC}J4Y~{^yN6Y$!>T>)zn)HSb7McHX_s|;RFi*K!Y|x#|G*7 zXOQX3XB*Tl#C@f0n1uz}gGQ9;jipbmywM(%F5(}jBfkOZk^NTxhp!mvkFa(* z^EMQ%1LIzDH$5hUY(_CR#a?KnF(Ov~wwX5V?b(N44)}vYKHo{KIZ}BLJg3O958>vM zdqBAM+82&L+Ji%V7l{W`ha=-LvfOowx!L5r~bh&*%!aE#RLi3v3^#2DS>K+O;*QQ zn_Z(XII`gEU;U#lg}){-m;M!lpH`qZ8Lt7L%qVxck zs*)z^|F)vhaR!D`@6GVRi%7XGSe;BU2a#XokjRC<0T*rOU79|c_=CD7^qflloPQPD zBF*rbV4t3{+kvW7XdmWmR+WuqRWKCnkb628P8u>{sk{CO6#=chXH* zePCy2yK9#b82dotHbaq~YT2uj&E-fnpwK=Sbg$j_FkQ^hynMxj6a>%UU=*n$?Ak_Y zH_%aYjbV=G#pfJ!v}2Cs6w@Y)!+Fc@py171fPnw{)wRhq8C-ZGP3>z3bzBe3Uq8!5 zSfkq!t1}1WL6ST;Q;Dt*IigX$|I6Kao#?is%(G&gN*33r@?X>Q9!FYcFjDg0zX70< zn-+*L6L!KjEF)<58@t1L;oC~ef$YEUzhti>%bw}W$R9Z?#M5}+gW+5Z9%MLipRpf2 z<~BzwD~!?4;aWgEAvX=4tm6wob@pGExe-^@eIm|~^9T9bP%e>?Kr9!t?nW3m?%RbVu4vvtF ztw@CaKfo^vAorC%935myL4d#=f3BV1p;1bc{vgYmmO|2AYqlG0I=mh$f`zZVTkfsR8%!#SjpmH%E$jm6@GsnOS#?H9<98O< z>Js&dgAi>0PLfA0XRg5o>P|J3a#zz$*Isg(CD|q(43uT7&fz5!%5Wv3OHKm=- zB#nbYKcXAznU1z#$+L@jH^v3tP_AJZS|zWz(MuO{Q9}%#7%^YtP^EO99I&bsw0NT6 z_;BSFi`%I=%SIME%~ch+nzxH)yG11cvHUr9(iYX-3~vGs+H&x!KvtND5sfV>;;>9w zpt8fKy$VS7#rrtaDYlK~Ouup-;##6Td%Icp3s(FpRr$=^_Y+DrS7FW=t#Is2bdipu zl+^ah6JK>uCW!d_>o)MM0B)EP!0WM|>K{zdPWUq++f4c^J*49%hciqFi2XL@CnY}H z=7zv=Kw&{}KIGD1T{?ZJZ0C{t*0-23c&8rJNEa9NR+x`5{Kk434z;$@x5|XuMTiOm ziAh{9>&Z2#VlcaGXbK!=88hImEN>)%p6k%x+9o;QYs%_(SihOyAtavhm#enx80>H2 z_qc?eymnjQM$-7X-~d-@a-49=`Jv`?^EGXqeTjYN$+c-L=NGEvkJDyXJ4qR(sori& zpx9I7oX`;(I1g5b&bA2^iR+U@d=da3`J-!|8ny$sxDSeyS}4X(63Z(iyzT=w-E2{# z9>D1%&lxrP^d}d~YBj|v%UV4q_0(*Fpj@&=6|DKy3}U_;R3)n@j9J~SpYk@CgUng{ z)Q``%BOZnn^FQo0hrST&U5uR{rn;F|MUF`EiEU_7%4a4_8uURO!zPv*Qw$rrzq^)I zz{;kJR6S`H%cR~;=_nCnsVibV)RV&x>CqnRI$~5EeYTwhnd$tqn9Zf`wH~)0MK%zM zxO7GPTl6<$$M4`PNOf~>9XTM^BUHsFOX3C(mQiqShP+Wwti9L~Ykv-hx`~}W@L$x_ zDq+tpI^*8SEf8mA$Jye|^?=HrD<=7SxXvn~)HK+9ui%uY=^Y*R}r-0&2t z`-m%hIXx8J7Ab+t4jd<+Lc9l2?5UD#Vad)Wj8 z#itzRn91su`*n8YhA-~H40s$ut61q-2L<)b4~{)@&1kgLuA0#>8bpom3oL{dJ`kZd z0qr#j!C*Q?sCa-2M3l-?+`E^Hzn2l2)JYz6F9Fc(B>cgXEZlgP=UDGp z^}(7MX+U`p+ldiAx+3YiD>8NXwBBEd#-78q24I0VQBPq_LUqCv`S;dm_Kb!$6P&#l zFWZCH!kno7PC=k4(_iZ6A@dkWz&jpK^EDuj>QRPnZ`vJWz@H1vX(gmC&+s_DW|Bd@ z0m231(bSwqJ=kqJ|J;%K7itxB5jrP!U)mKwn9>vm!gjqQ*I}HZ_Tt9jc5vxws%)ZS z)AApweKtj!hIkWl^Y(pqm0)poHf6G)JE?KSl|%${5SFfKNU!@f6ud?1KYIL zbS(k>sU2M@e-4NH?SGfeujwoEAq-q|7)u#@k@w(9k|(^i_Bt{hR=-(kh)n3h6FW`K z{kl>oe|bG3y1OC>UgCgiwW;i-Cvm`@wX@xxCyY_nusD9^v^D(Ptks`sTK^ronD}Dv z0Yog*coB$h7R^IUl4Wk1H^vYqL*t1Z`eiEAx93Gc;xOG{_-J6a>!BmEN92W1Thv_$ zA?RR=`!e0Ra=qA?u&a387xM4HFU7hTJ0L5MS)$XCvk@zMNG$>#J2X6n@R>YIWJ^P) z{ziy^yWbYq!v>-{=2}^#k_fm`pf*GQbbZl3;?^!`(L5_TFVAC~t#Rd~7I1}j7 z*Y>)p9hHm$N;BGa?SD6{9ZB(@QXo@``cfa2wa4*vngk09`x|q5c{H28UyrWye$_ zzkMYb>#|_gH(ZLci26LSCrD)5=EB)L6#u#s@a%IS`{~;IWpd)aMGVy-czzc&uDBQ2 zGHFG~Inuu#9T~R|p6?{v*!6^4tio?glm1@4O4L4I&z$EdC}vI5W)7Zw3e??k#V{x2AhC%``i*P zMMU<@H&#YyE0YBOsvNugi!w=|DNPE^ym_=z39!~kM`y{PUCIfsS}vU&^$dUNFPDd5~3da3agNYiyf1Fb9hEhoL9zvFGZAK5ki+yulYa2;ls(y6Tx%=8SqeZqY^NX^d+F`*<&Gst{N-_1s> zn`Yi>el>xf;^QhoA6@6|p=V||=lpTP`?@!&4T;<}%(KMJB+V=`M?bxxZvJh$pV%Cj z3h0xt-Et)zO$*N0FBs3xT7EwCu^ z-V#!hm9xzo?w}XJv_s_n4Iw`P%<*P(qBuA{gq4yTVsnSxR9l0$^5YS^n3YY-o$Ww! z0fNvfv-zsNV(t?)6zeCV_xb=W1dvDKYUoX!R_uyOj-jEw#=r}%1_(7e()B#!nz$>m zm%;NaZP~gd43)1y(UNma8QbJF&ep)fpDF6CDFDBKg9F%_YXa14Z(RxV@vbFK*`DOx<#;?#vIEcNkoG}TBF?TL@e((1BNm2O$A+O#3SN#}eZ zBOCnbo-)mWpX-^u5&mB{JB=O>6N6DGo-{$o@b7~fV!fpKd(|sUsgc>YTs`~ z;*?Jrqaz5jjL0*gd8D1uyDr693!OR|B9^4T=ZRI@W>ObVyhz4M%Q;}2K49yQ**;xG zE{pKo=|@?Y2A33(;wk>%LVoTVspSyLC8|(d~Z-?a}5GLu#o};5EuG>|0JHivtVRZy&{~>Pib#!g`X6!Jlxb zUg4#e@jHg=vOmdGsC-O71L#gPW6BSO&lUU;7gfQ^Q23lO8)hE!gG$YMNyv-7OJ!QY z^Q<_ugTC%bAqIart(I`wUk`doCqL06)crS;p#k2$C9^#-FAAw);FITBNk+soeR8ik z^X#yr-fQCcBd@6R(I@N!GP!n(vZN;ER(LfwPh0x9AEXqPi732?bF&x9%evnT+S3K5 za@y{6io7pRuTWSR-}f#`0h?V?&~x za+0EqEdlp_R4xZ7}@f=4H);AqlmAy&tKha=ZvIFgOmttnu!-w&JWF{wE@AMnw~B$V{VdM%_!#vuQaG z8%w39^&BZ0tjULef#0Ye!Z6Ho|M*x{hvLOddJ}79rekkkU|t`%0>HEY`@>uWzL`ge zov=`wf4bjx00RS_wqX2^oyGP~IWqDpGdm{@JCFsNbTNTaTM(RXd3+j+(YZ-$&fP*B zHIP3OocoH1sSqMmRVe>J{d|G;j)1dx3yz7i`~x(25^6=Jt>PBCBOlg7czm`>^`?3L zEWe7;IjSVg>4%ccqp;Iu|JN<{wQ4R4%)pn8=ENr;7hlPBBJ zu}4$!O%B8v7ph40GBK>HhEUw^>WAB>15$=KD!919;Wdv&i^ja|;%@Jb-C%WBrMJC(|1O#AoSP)3z^Kdp6HnvD}aH>5PW z+-?*ksXzmG zV_FbsOSteXp@VJ{!nKU4ed27$2J_z<(6gW88};>;=v+*24};t!!1Jy#aE%G@J|xjx zJp{Mcy-)8>7@tI4JVGeD^I&)0_L86c)76lj#T@t2UHxTqQ$9Ywm56$eHBb|FqWPaz z$e+MaE5rFT;(PrpcL1}`f2XtXhvKx2@fw|0f;@+#uYxT5XC=XU5+QBrt;VTCQaSh6 z5@n!(VVh}r65~<86w2jMLD93Q=q-W1%$v#?&&v5*%!j02eZw?zQN}#o9gAI1p||lK z_xl9LU--limh|{z1*oW)xC%IHK9 zD_t>rAyf8)<5JRmQ}A_XM$So&^!xuy7tVq!(SW)P2#73&qKzfAy{bdubnIu5`R;sU zrK5-vvgy*1F=Lb1;CiHLaUu8gO#XLgB9Sh)iW1_X@?o*Xyt;sFj2Fa0sh;>5b;Z=x zl@=r*~?T3%F~ViKP{f~wm6H%O}v8H4Lbum9J2*89JsI!881%X#Iyd9kqj zo5e6ke-=t_k0qE&%K^9dU4u%1ahTov%jcQ93=cEk;OYKQ?T^6xUvpPPcgX|+bYL}?t z?=g+Z%dC?UWcEVgWDFZGdN@{H<9>|Vgj;oMd3$a~&G*~Z1T=nV@T()o16B?k?H_`CxPAh%`;Q%kzYkAJ}v@X4GC2CCWxgFY{ zq{|g-wJuPK!UBDO*;tFk~{HERm1} zoj34!$+0xDGE|d)#x#{J(e~o4nWd>cyvNiJ^p9k3x>A$jqlBL(gE;{F2}Xe}_^R~r zeKZJQAqcn@%DGQn!F4fcxUj6Z$Xjq2Zu^JM?1ZI)040q})u5x;pp0?0o3!bW-cXYK zzF>@!-cia2?)6k)w9CnXqA416L!Ds3X!P?ke{)^!SMI|sS;}9!@+8|~V4JsP2OW&lEA&s#<6wg1T=1DO-(2bOt`sNlHxI_^YaQdafe;s9 zs@yYODv2j!ah21s-d8qG0*J~|=P1Taa)~1is;>s;o$m^5-7;{x5_r*MMvg$-gG;&4}7ib%uFm=(nQ%3?2jDF&pv!n4-*&*lmu$ZBjrRkzFeS&Gm|VZ!aPw zCQZNiIKKz!D^-s>J~*P3kgl6hHvMQAWDY)-c$7TGlwvsO4^F(o<%r8eq9})g2xA*A z{_fkxv3iniN{^{-=QO)K#--h$cV~=N56Tt3W%dWJul7_qTY~i3VlW%B0d4EtPIarN zaHWX*!j)o$si9fAKiHTwdE$@!YP-ZXdb$k99rZQt&^s($hVaJ_)IioS2mtX^L(j z*(++lk&A_yv(N7TAbvhCgzk));& zb(&({^NRb@l}Hg8oJ%MIU=DcyzeamZWb12|SUg46gAOh<^DEA!1Ol4@XPk$mM(1T5 zNPc2YXu+^3()z03A8dkTJSpy(Lof)iC195-q<@*w9Efh~Fe`1^|C-Wxr2PKtHF;vmER5CLFW1PQoerqc)MGgJ40^j4SJV^K6d9xYWb?Mdco=S6~& zQq0bA&uRD;C5Zo8O>anuJ&#+7EeB^8P8b<$Cm3i3t46hO0m(i{Pz0XWvYNV1vn2{* zTf^#$?WfZ}L`51~vSHX*Y39p1nu4U>)$curFZ*2O~0Eea9J?g^26ymgb95lY@5ZMM7LI0l`Gle69|=C!lH8Vc^tfAzm4DBs~5#TN1xgNWqaFSi?5s7$6 z*}<5>P==u-U@^O!W@zIsPc&=S>PPWTCeig$mSO$7n%Q9U;Fn0nlK7zE9{qBULDN0g znC8Sgq!%biooON9%hU}CHt*1sBQk)^fySbct7F56rBrCNm61rzeM_W=^xu$+iC4gZ z{dfw#huj!LcCS}QF>QXF!L~ecvx+wESesi-bKRIc2OJo)c8p^!!}`t8yF12>_Nvz_ z%1M2a7D223w%<9SnkMFviq&{9eX-IF=MB9v4|WY0wG5Zut#)+qCdZ9rQe72HNa3PU zg0ReEX`|!&eik~$)9GV8)atoMkXi|WDH2YXi3tjV?+V2@pk2Kt@DFcmKHL=6?)oya(d*aMS;j`^UCPAiP!!~Ql``-7WrBi_8P~IIS4TcF0}m9jYwdhxy>ZO zytM4S;9AIEzyZutU&C2Eabv;`%2~R)Z~XVnF7(4+cpE#Vbv6X%elUhaM>nIovTH|B z`|YoL+=EhftW=7Gwj!a79Mw-`v($IdBaEDfdRiE$hi#M7*L(`~c6^6_lR~8kBl_cv z4oVy_c>-O1;2_Y9_vovQMi}h@SI0pOxu*<)HC-kmF}Y#C0_U%mgaO9rAA~8R0C$3F zdcD)wa|5Mo`Rn3}BGT_VyW!oDeBjw}JepS%=h;kE{_5ZDb!Q;ah#I{qII<~QY8?!R zP9*CR6~Uh8)vOx(md2xtMD;*yLg&{!qtwL)s#$Oo=*ma`xLYZnkl|`0 z7`UkU8!_;2?Ome>vSf|8MoSwlOxp1$jts0ymDvDJ-cz@1*b>*A@}O{W9EKLys-li7 zznzenEUqAqh5gR}rvC$iec#8b6d0wjrMo0&r4uLnZ9NcYu912qxxDu=F_e-GbY)!Y zJnT_LiorBf9-8-cD~{6dZ;zOukQMA}!u$-$W;P{4G`~VpaxwM=>0->WW(d(&t0lyv zsF1wU>-~voRs}C?Z|ph1$bHenxoQu6Q4%OJW>rUD2VH&n zlT>AlW;~SUdRm)sRp;0X`^CuT+eZq$QFIE9p#mCV&cJ$E9!??Z02W$SB`Tb(-TKo& zqeArzuKodBTm29*l-&PL$;=99XElE5#|~w*b9EuT)}o~JZ3OQyj%;Bxk(Ip7O#R}c z-fYTb6_q~8o4&R`F)7`=&a1VVns~V)&lNMR@Ipfsm7pi8DI!(Zeo+!U7DJjdNoqZp zA+Q}1P-GStIgPwtmFG9|PsrV(^psv2D*bP-eCyj?^+8ZZx`7v<)2h039rcXB9**zw z+~5lc7ytcY6?e=Ppg%0J!?3CQf`rsZV2+_Zy4y0U|QHJ z;3#@MW@!!773s3RYEr;c(LsXu(i8lfI0K*e%K?2H%+nTSEj<%O)c?mM{$mN$_LqaC`6rH2gX^`M5c9ceSbPb#gz>UL%cGE$94c>_JEQNBnE{1*TIP z{_8JUbkxQR7p@OrF)hCMGrlr8Oc%pLqczn)ux;W>ii}M+14Ra#U=?^F3TP`y1%>=R zwjqa4T53AjyK?QQ5Xyc{bj?COuAz3af{1dxH!my8g;}aVh2$LR2uP%kX*OJ9zt!2No0a$MkF;H22Ldzr`$_lygv48%-PPJ_Y zzr)Ra59z;pC$o|OKuTxp7nUv7S&NhMQB^%*E|zpF5_pQ) zWFNeE22JJ-f$v-%n0$6{!Q8nd%pf2N_=qUs{Z?YO-k5y$_K1!h_158a z8N(IkFi#qYgq8(U)g|rN@^)hBtKc=qJMr`0JKq<^y(3Fv*@8bN-1ZH>HYsp0f1(@& zr4D1YMw*NO*iL(% zVrrFvq)X3k2_W zRw?%MUk2wdL06?vI2tEiP#!~mgIC&!|b*B!j^BgyA>35DDiK6ssT zv*x6z5($PiG3uUSL=}y41 zp=9`pI2WuBJP<@5weBV>7Mk`=ZJ~)U-UQWhCy8~G=ozbWq~esGV(fR~r5uROIW>wU ziWD1FFsVEJDM7_vjv3a+pLjU&)`aa|gWmOQZfFoS? zUtd7veO-ubay*-=b(HWQ3Dhl%R`}TjK zkJNJIE3X%pi_tniSWlrZE@^6QG;W?=VZlJ=?+DCW#sFohI`2#$ADBR5FFnl{2pYE; z?jG8ID`=GI5xfyypqasdE<$&SH>OPNSl;`5?eu<-tp1pY;DF|@w0I?$PScfy$U4fxl_bteFp-~Q%j zG1mq_kM)&8eFfdj8ndJKdl}3p3wKw;?@@6W?to~02oIo!XqEpGj6W&y^Jvh0&)4<; z5OlnQs{yZJs~f#zg)f$M+#dKtMdsWJ&Rkgb2?6XU2+n6C6hPv2)4MnpwE0Rdy_n#F zjRgINk+xlzPs%*n7iV+j=8tuq*Xdq4!{}FVZjKuyWsW*H40b-uP!v4&>sk7zFy5K7 z`0TVg1{WyD7)>x(44f`XB~=(owpN<|^Smnz(9Bux9d$}7PS_@KvzDg@p z2k%8^1csa;y)?I1t!4@rk>9M~PdoJjhS~L?XQNI^dtNA$LM60e-5I@o*`|`%rjHmt zLP|-m8lmysah1}un1g$3)@kjrLD#=ts=X$}@ zQN8aaTrEWk>1+`8sio!;(Ao~E>${l%A$H-vCO|f=aNp1=96;v9efQK4a5w5TkC|!6 zIg0RVHyTOSlf;AVR^2T?tOS1cg1sM_pD3zxgglJ^91hMohew`s{;Z;ludBDa<3B?Y zGU3|oZ&R*(*e~wvyZ!j8NP6vSdS3_z=^rLlrLC`iOM@MF8L#hGz4U`=c3U4 zS#dm3DYXV?j>1-R(z<538fhenaGjO`6m|!HT|$t;v7u6SqwPnISj!WQ-TFFy<$J%} z%&|qd*Q#bqf*b$`U_6nnSXs(QuFqaXRYs0?h=IC2h)r?$iD}UUn{OO~0%u5ds{D=n z?>TWKCVbQuSu2koacOPzF_5X-{==KrLXnwM(jT~>XFCf*lG2q19uhjB5SbQM)Nyoi zod;8?8j}%dxYeF7^T(tn&5FlIDyAMo#DLPco!O4_sRwmP=3X(ThnB;aixd9%-4_^! z?oh;Cu3Xq>KG3d8{>K;_16~GI&1F{pjx@+5iYX+isL){i@6Vib(qHQb|2tQjXL#jjQr3J=Z4@)M_r#H4kl@D{qn|Fe%f@*2U=dx2@BM z3^MU4Vb4`>(`^C!;VxBp`g)xo4ehTrQ40!ZMevaO$dR9ztkC6GXd~0yP$mX!#3w5gtpNK4 z*FCgy)75^sXbJtI{z)SmdiS5pd^ma3P;=%!Eur5Ff4x4 z+0(S(KRjMEyvpHjdx|${SM2QWIy5+fd}Mpwh(BYxvJRhd9w7)ovybBj;tGy=fB;7W z{31xkiTGqyf;iWty!`a#ulo%4{4L*yU&k4NjTB8ZZ>zFI0<7UB=s4zv7V3)q(j52} zz+CQXk3+6>Id7}(f`y`=BSpfzi`Kpk5B1iueN%wf8*a0SrQa7fj%XJt*dk@e!DFd? zN0er&tQhpME*X?wS->~yw@9-fBYfPcrlvM>a@&lm(ECRR{kWFN<3?hkyy@fH5{-vW z!b%j`$NQGvd5Ybxowo=W+~^^BhBOSUfgw@?DXrNdXd^UiJQVFeX6fQMihaph1$lM3 zg#%+pYsiAOMUdxY!y`^f%7U6yneYpx0<_{YJBYxefMdIQP^qZ(edK{(Sw^ntY;i3@ z?5p@PHBO=pi0`H$AS3y#XnI;*-nhkJX<4gpGBp=M2TPH+^VWCoRp+R8B8?67P3UQR zZ#1Q(h~Zi*M#1b(6Lg%BIC1jT&ztVj<9(Tj7!BV!me#kw7_DA@>)Dwv-G@z^`|AlKtM~=o4RL?U0>VPG>ijzV0oHvhsB6ff6aR zp?pnj|Gy#r7bhlYAX)6>)YmJ&k}D_bnj+-Qdzbo7HMR4siatyH)Hq*k;N73B9pKX= zJpWb5X_H%Hcg+{gFH?AtSy}n8aeD6aM<*dJX)i(!j#UE^V9x=nYgf6+xzW4J5svMD1yO zr0qnL@K$YN<8eG7&_L$B8|u#XoaG<3=t-ZTJ+Z1>P;ErUJitl7^nupl3PY7FKGk;G z7WKC?i6h3tw8BHK+U@U94T;Gv1*+kZSIuv;%!Z<7%7L?%>FDw9@{#R$5_j!J6H~NL zVAYgPhBaNc_lUVpNj!3HcZ1(IoX5U9Sq@)gk}kf;-68oG2a4yHkTCG98iaMbU!q61 zT{XSUgCby4iZXAthf<$~P?)nu#5hkRL!n}@&@ovZ@OMh6Fe1_LIuYx=_P=Y>8|Js@ zJTH&l)$rhu6rf!m4(;_szGkDuAu($J2_Dp9vzHV%N4o?A0b^)8W7Z45aJr8tl+27? z(^h)WsB>wj*(*Gjx7C@hFURAi!=Sx;d4AE0Mu(HQi;18a`@fUnJi*F;=|YZ_J~=^| z{R7P4-zCEATdBhu$Sjtr^o<%Cw_P?oSf9k;|4mJBE&pl3k6Ff9&^!Ui$)2JkU`D^ijxLJ}YEM z#FO=!b+ers|C*aQqBp&QXrS{`!2h)SqmK`QwL!gZZ%N43bK>1BW8CV|mIb+P_%k*- zSXabp;W#-Pjb;}DD@N~jzbee*FBI61fC#R<@&GsfWJpHuwvgwOiOwkbg*blkZ46&d z?t${3KV)%DbFt!ka#GY(tUklD4U`gTXop6nmouxv6dy=vq4Y7bc|WoD&rR4=1JSV# zwdL0pP!%+$GG{xD8n1of*q-KV8uQK!p5W4itL%5gnr3aP2&Y8N$Fs9qhvnn+TY%f!1jQ#SB; zoB3Hchw|!#mk=SM|I|QGFu)lBgY$}f_Kj%bLfUlmvuJbIB6-*97K;&ZhGhilpyoJ1vz5>34y6oR7-ycA55@R5K4ua?a<};Ct4F zG}x>2^L~o?EIAT2%RG(dRe$Bzy;~lMg#l^;)C8hFn_#6~FBTU&dxmKSa^vymcCHux zbsjjN*`H!dC^MMI(n)sJS{aZS#{M@MCARodOh7w7vf4+k)JIg9ia7)9y4hP=^IscQ z$gez401~{d-iC7V*pib0@^$0w?#%1Xb0#_MUYRf!gJjGEL=_PKTBq`*3WK0Qw9tx1 zP6QZmr=V0c!$^Yx@w?g78Rymc5N090co#%OVk?edioD+(GE1Zek?G$>di$MiNKldK zPR32$+M+21--7%Q28%C|RL6WX9YUi_q=z>u6!UgoZdyYcuRz!=sZzptUf78L26mKj z{lc1XC7C!C=Nk{z6wP9WxiBLm?@@f)`VsT5>fo;ZI9U(mU)QvAFDSpG3p8Um>?&y6 zXE2dlR!wur8z?i?Pa)cd4?F8~hVW;-kfJ^XBEV|f;k+jV*xOhWYOE1oy#P-pzSyr1J&K$3cT%uHfiam{YZoQ_aboFL zF!hTPK6aXp%}Ts|HDgH-mHgK8@bcX}dw>jg` zg4Uf2?fS?zGSr`Hc$vou_~LssaihM zY@KTC1DPvN%Q94}rK;yajuMhWR}D3vv)_|Q8Mey4Cs8cuC}2@O))6Y>kR1m>pR{D6aL5n!E2lGWZ{CzMIgqM=(H zH2D@ySkat+67rI#4lMySUYzMui4U_D|+XG0(A9KdQ%kL-Rvu1hyz(BV6+HLAI zit#L7*0}mp9x>Cq8ic%)5FXzjkVde8(oGolb03VybPq>3w8}naT)LIfJM82<1FwphLe3qpXHUkTf<0IgK&K>@+s1D-bM zdU&w;`g`b;=LQfyQzv6+C+5<+YZ$^tXPDQpA}jfjbSmuPYG(wjW%8C~oF>tP2kM@l zMFp(+WV^|13}37vX9&cKO92KJQU}siupF(5>KJ;!h<-9O2&JVgjcg>ScZCM~u(@$P z`4BulPm;wJSrf@ogR}v_7qtVpicKEW{7rRPqPds)~*+9lsOouktkgE=Uq9Ym8pA)oBwZ z>u{m8WEG+*)nx7SFLZBHK8W;FD|_E)y|;sFzg(m8 zI$*|QA4H{>s(@oA6SBw@H}xqrMh1oeL`iavqJPk7lKT)WEbXbg&-!&<>xf~P9M?3GQ&KKR4+UaLE$abycJkvN=y5XeU1Wb{m9q~;20M) zrIg!7#YBHD{ScRnp}z;%2awQHb(E=zvXU93N+aA#R7k@hnVpKGvgbc^N|n`v$x1U^ zv5P_p=pjevqVl%*5NU!qy`3$j3g_55yQB93WZzaL|Ne>_BxYz|pBCYQDoa)q4gD3FR@9`813(NXO#c?vYd|Q9~G(T<`{GY7Hb7x(%V1Nq)w6!1co9V}oK@ zQBNg=*D&8HM(87(v{+p7%VOqyxjQp4D&@gW=Dq~j5;wIoVCE$*pVWb5j7@ULA0gX==l!fV@OxIb$!BK1p5i%Td;Q#=08-jN zgbTNy%wUlB@@2{Bd<5a$UukAX^WC#cEucDQzqW>=A%Qg?06s)7*YlJw79%b4a(;D4 zdHJbCfVf!ueCR_Uqib*H8X7*NR$k0-D1-zH`Bb|YyNWi7u+2T|7SSzhR5Cq1*kUtN zwYA@7)-L_>u3?fg@`8nIMyEz&45b?>Ij{sQ#dTAr0gs)ozW(0N8M4{J(lE&uSqaCS zyeF?^V&kq(p9wPz%Cwta6j9PBB*%3RN8##Tbn^9 zhRL#053GiU-c$8pEr0pJ{7IWpQkg1g!zC!8rWalwg5V_9fdnBQ#;Cte()(@}wwDuw z?jOI)%e*7lNu@8ap=VtlxVJ#;=6b2L(ecy%5tq)0_U|Mzx7Gu z$BT7knva<%foT$Samfb7kzyZmpEPBsN7^&Y&CsLLEGEbJk}`5;UzX7)-OPmw%rW=2 zIEd7agd%lA??E*qMonGqwu00XAs_RJqXR3Lbgb*0>sw;JsG6%{wryQ8)43;CHMZuN z``f&FWBsm?&tPkuURc>RW3H5i$l?;{QTNGSt6URQ*!k zA4XfM5{-V7WE2WNm1jA>Pe@1rd`}JKBav^|QzOy|vD_;BwPFZtglN@sg zh1rE&V^g^ZAth=8p4%Cm&SVjSyg48TWu9EmNE@>eA)S>elbmf0r7--{)RoMX%OFuT z*@aqhoaTx3L$Fdr|2fcg`a&k+X`7WWUP(sp>CBE7Axl6^ADxkD#k4js<+ZBzZ3c_* zm+_=ME^8E5nr>VCGaqApeS>>1YoiQXbR1Pii6xbrf%d4Ns&iaV7|J?$oI*0zNRXMb ztSO12%qWjcF3f?Nz@hynwY1^9WVTytT01Q8GQjEh>p8{{VC*;bB?k3y&FYZ<>u=9= zswAC|WsO=E5_H~;-s@~aB(xjn&bkmb|&^pgl+J}sB zeh%TA_$0aBq9^~Hs&Ur&NF4|J>cc_vK40ht8vgKBRn3@x#J~-es4r6i+|t@-V(`oN z{;!gtA1VGtWS@xNBuTb-B+9yKOCQgr+lmHZcm9XztI*r=f!}5Whky;q#8@YQTHtB9 z((xABVwnjL>dV$~v70u#>cM^YFoQ5WXyz`sh!gi`HP|;M1BV00Uk?jG-=5DhJ8qP< zTHi~uC*x>qTDMR(O@-*;Um%D-1O7>FAE?z4>=1#u)*NO&6ldXMNtr58W9^@m z4Kxtg7q@0yyvh?@2#FOITWo78s?#yp`Wl|Xgu^FnuZ%deA?k^gnE`S za!Gx}`fByce|<`53FufwvWr{t^Ug~iu(yv8(cH`|n7ZSSPMq9PF*cjKLL!q%7?B3l z=*TAUL0!1G!B(WP(wSW1Q8W)ljE%J+*;UB^K>}7ao;R5D$tn?yhi+JXf{wx zM-r5*IEZ;ph}n1w0os&>k0I$~%QEsHl_UXw)Xzq|Q-9KqxZF4F`Vr8B+eAT_#-DW7 zURbWM{zDw^Y37;`$m~0z*>7bD*PLJ&0{|`!MC;yy;9e%& z`-m`Zy`nBjx1Eb(Te%_Z6gCJMrw3!6C$Pu&73*jZonnc^NR8y0Q?ZCavA2bY`r0n( zfQ0bMDA{?uPAwZRO((=J`kM`tkJ?;e4!W?)a!|S4q$!e0uC~lT47z8)d~u$pAKk$j z39G94nbAz`bTa!}3aQQkj%Xs!bcC&!@`pHRAZld44y+&_5$_M^8mTzCGhP<{x z%fbS(s6PLBX?!TOn!sR}pYT3xxLXwcd0|Of+rM))#pC3Y?@am~@IpF6W-T{h`KoWo z^D)npiJPk*KK~l9tT}B~BeHHAy@aDoDmLcFcdkNYhoP8rBYFi_iUwQg@x_aBo;Qq{ zWgo&%Ty@|i5$dUT7;f7M?iJF;O5ji2zDt!&N$s;)haj$BhCGlhs^P!lwf)HM$WWs%Rl8 z?-;rU`zZkMEMgm`X+42G)_UNcoyt0o@uRBeGm!{n56i%^(u!`CS1&D0L4HSoF-?;X zw?vL+7V#`;W#S5vc7U9Rnog)tVjsdU4za3u+{D5CyKoeR1dV!|r5E_SDFI4#Ug20T zRDZSyywbKA3~5wR)u=P?lZ}?W1XVXaFexp8QfxWo4$f0jaThP1Sa!Ae3X@K}QU{?% zFoeHmTUF2ACC1_A9%Jm1IzUe+oOQmZO0c8fdD2{_^tX~ivA81T0V!6e-Pz~uwaSGj zC)0Bz{h1I#&_-VO&W2C!#BAdGJ>qP3ImErhvI z)|eAv4=LZHlioqYZUA%dU(rly9ac!HxSZ~#9IqSPQlfifGgB{$XnhQg{xcO|Zz~8S0v=cP69q@A zr=FOC9iQtL*tRi((y0P>-U#LT&ZEbQkN`1{c4XNHkCV(wCCwnWGh)5NSHr;YL*0;I zx0}bsmdcC1Z%hf6&$Cr_wGJM~u2)ZfdM_AP+ zk)5+17PG>Fdf`6e1FLQEKLq*U&-5Lp(cQYE(^Vp3*wMF&jQ zV#WL08x(4gM|F719@gI>PjTVKc@*<-;eD{v1qB>;g3r_^gg;mFS4*wQv6HBxR3C-E znN%Dn*Wnhve4R+KdpXQFE)ACM*g+lr-YT%|Nb8V&@$hNdA>vNS&!NGY?05XBUPrUTtlib?pr;EuZDKg>MKa3IH7U>{)tv zl8B-zEbA#Kx#t^H&>OlNGLin~AYw`2HowkfrYs!=QH`5vF-w`AtFTEbnOpLFD94$p z$O7+Og^0#?>}iNr&8BgfJY%ak=~IkTOoQn4^Da#=kE(R2&p{gG^uwu`Uo9$fdsEse5qANNvjE#B2e!>!(aeEk(d zq)2jQ(?-^7+}a%*q~Ro~CjcA^bfm=to7t+RK34QSM@T!)M`eZe*9Cy$9v1g}yDv-e z#sFbH{syhCzO8*4aEnAkv%sD~4nY4^gf=$1h~y|JBT6z$%I8Gt&@g||vxa<9T-lVL zOnh&RyX2}$1|wnqEAEfzlJ^V*+YH3xC>;ChfF#W4+w z65oLtGzAu&=4g-Zf~YT^1kSZS1veqOHUBr!^wPS?JYXCYjR-g%Tp={h)t#1+#599` z268SiRvLUzOj{u!xNp+gZ$l13%x99;X3Mv;HOnVmXLI9Gn5W}31>u?t;5H%qA0ZoK zm2AoeUsT*-oG6Wv^>27Pv5)1`|>~u$Uv6aFqEHP*uO^VKoaUhVzG+ z(w2VJF_=+IiwJX{SG$TieM11E=s%b8znq-ipXP>g3cO9}YF>YV@%IAAaDa>0pHNye!WAH$d>et7gOMsBhh5r?`Es#=t% zKlgpa@*2&jro2-o-kPcpU}Lfh#daaBs8yINA*Hb-Rx!+If90$L1jErqbt^b{*qZJdxZF*p+iAFZ z;&dmgEbGG{Ue^-$Irt(?rGN7v^YoEzcmWeYY3BxF@cO`4b_c) zon8+vW|>BuIeYmKmd}4wY0pXVxhTMnFQ;Wao-VSS20f$1z0V8yr+YzPj~^n`y4Wyt1aO62hk}Ec5x#yar8s#E<|OQy|a}^c2Y#XKPa@Q&)P>6^U(SJHsgD;J90b-mJT%s9z*YC}OOLM49KB1YKbMAdFvO8D zW{cl4A`@KNA^MKi*0xL??@qX2B1YbPkndwec|B~gb+kza3h9lTWNRXqlgaz*q{txa z?7VtWg_G=AL@g*YE$25sWOvZFaSI>ku+5)BE+nW{5*w33X1Q>YNifshqSnWPK^rUC z|UPfQ$%v~ zk@Hl+M5OW~kz95pM*6`jO%>^Mn7g|NEju)h$U$h9B^hUnMUsPQ_O|)=iYqpl;4f(E z*%!Pv?l?xvKL>OSM3vQ4UW1y2eyD_v)rH<4_u?W=So6aeo!BNadoM0*QW>)}WWi1_ zYI2vp6Sr6(nE>TOfM^2k&!^h2u9J!VU6=5`$v0cow3CA=3Fc1T4^JmiOExZ$wF%#} zyDKJ_rwQjy2Y*6-3qLsP^DDKH}m4R&!PGmT73tBlBSIk(C#B6 zv}ynA-vgre{pRM^PHwK)t$LjD#bYU&?_f*w**MH>mw>l!RxGt5yNpr)TJY8sxrA6Z z(Dcig-TF3Ys!tLk)+M(UYAL$12M11c=g($An3Yr zq7hn!!Hsn^a+TzyWK5Dz30;f5g-x`YF_5j!c00+x0bl5gnh4 z8ccrd+q*7({UqsG`*(A&G61+D`ttDZV#5h*L)x~chSrvDQ`f7#5F|nuD0Oa~<+cXw>SeqIY)bvBw4nH;RqUK~S(oRC?Vq{blw6WM1!)etz4W6Kv;r4@)tn z|K9s95?2_B9*Y6PMKAEV(&~kfr-aRB6AacNsvA zZ2pA8MCN5Pn5-~C=^1WqMDg|w^|S&dTr!bmHVkx=_-zsz61{7WqHI0A*?vWev_{^x zy?!+N+FK)S+#`aM;3res@ImV;vL-3Yi>|7o`~~-vHy;fN!?4M>0OmYRE7!F==Bmo} z%U>vW5|Q8L7xscI-vgK1M~;Z87Jvjw{yvT_9?~~Prr@Vge;hMP5Tx|j>r3xgvm70_ zDJ_YI;A>%3XR}U|H+H3+?`%wZ^%`0w*2~Q5iYzub_P0Pt>GrBx;_hd$cM= zi7G=fbc3c&bA2xkO@SL|4ANUH+E2i&9$Ub~m64)p;hWH3u z0g%77&^2k{lV4j&Slh+N%p@p18sy@=oj*>j&vYK!T#@r|%@Qzx|l=d-lJjGU1MeuQgwQiE8JLk&6cU{07Fi zzl_BRi$>)3GT?1B{5tMA5Cu-A}iLcpxAjxGQ^V)oN7*XPE=x3{J-b zL=-6&QO9bqeAMJDIW7Ckdmhxi`0cjr`X*!cO(VoY#^+Gu)ua zsGhBk$x)>Q@gq|?QTKWNb%ZCorxO&-4t;WgWPC@kT6gvg-`AU6K;9#Aq{bG-z+CIJzDC&!qN@3 zLNK(#(y9@e6Sl<>T%q)tci%HGwzQ1l(S0;Mv`a~CFBSyef)8ssQhd)N= zrYvDF4>sq<6nQE-;-pWWTiDD|1Vlu3tL;UZjZmxVO(YHX2L!HFZUR@mQ253^i9b$D zgC6-W6KHRCQkYG#<8?@g8I{pPhxZh|=`65(YG&2CN$Tr@NXX^z`39~M+Gbyp<)Jtf z!2(CDS;N(XDk1%a;R}n`_`6!+tl4P(KwN9?ZY{Ktl>>(xK9MGoN>0zBzs-8g&l_SN z!phH!h_tLZ~%o+0;NvSQKRwMh;ESVYV?BPZ@+mGmB1ueX1D%G)fnGqhD~=YtI_Xu zsl^xQ{f8Tb@T@p z^rie`V@8P18r}AD4|hO9pJHzf^99Vt4Zb%HI3d61w~6vsyP}PEnr|W?Ln=9rXA_oX zqaV(ZtEK*G_ zyqgzNG7gmEcB2nQpB`VFO8v(?>2*e(cI{0XIM~FxXe_yPjZ3bcOR0KUXu8+Pw~IJB zL;<*O2Lccog_-fV2h`kWg>y4oD~EU?MmEz{j#OVB?HfY;ya0lp+`s+yWKCnlD)P61 z;_N0;c^oZ^)dwYX8NYqz-JwDWd)J%;swY$CGm{yqs0($iF00iEnWu6Tg`S}JXBoacN!M}>*^V7L|G@no#K3!eijdc;VD?S~s z?R--{ZEtSN``7lW#7Tk17{La+9?>*b-00aDu6veM3<6ekjC`DJ7z%`4$*6eO&2uqT=|i}^ zN~iJ3zjE?p5L&b3edbXGGyGNmjf?IGM|PAoX&~m2>x48z-Z;VpIrt}mahtp`}ycV-ex2|LqeK7B2}G>?zf*IF19zgS)G^-JoR zqHW>qYJqy8HJR6>MLG~X-(`|I<{IvG4k^8~KW*ig*LfAfb-oU9&Yr5LV=qWQ*~~+j z&^G7%2%l*kmT4Tr(dd{tDv0d=!dVFqu>)Or-ok8Mt!O?`HYM&Dn~gmc*FQkL-$1Tk zj4k`0IxN7VHxP!?Rtx(wM9YaZ%3yB}(Q-w4jhsdce#g?_(iy)O8MUy>{!%pjs#^8C ziec3`}ateGrh@D%;XXIQF4sy)%?8|ZNsa&o<>S~b@-g;|!Au#Lq&N?W~1UnioOoWdLo70JSFFvw<# z*=Y^R`qX9XCQWwf0SS&X3EQ`Q3D0FC_A^x_as#pRk?MKs{*4N<1&ru=Sufn0BMYzt zCMg^iQxvM{2Q`7lnAAp{O=Web)GGeR=`uooAK&RTRN%oxUn zS?}zO;70RN>tXFl0ipemMa`ZDm33`&zmkb~mC|&AmLxZuc~E2|(y;51va^Pk@VZHZ zSvN-3=2BBEPAHX*x}|&Wf1j;E7v_j_WtP-2jY+q^+K@Xvo=<~UHqB)ZxVwiI_PD{E z<^Y@FNB3BRC(3cZfIU8RPGMfO06D57vQ#&^WWtF6!Mb+6KBy&7m8oXhFwxg#+_=Le zm@w9JSEx-$Re&k#Tg`NfsW)jK=HeQDX%^e*!E|c3pv%k0W1Mz`-3@C5luRKrV@NlJ`@3#MUF3;1;LyaC2wsbw-3Aj1YBwDOFi+^<2<1 zok$!#>;4_S*9f$*m(Ls+Izb0fJ_FQ8gW7b5{jSuwCm1$m19lDRY%bn@j0cq%{ zvu$bs*BJ)>V%K$bArAu92XazQJVF`dSlZg(+Vyt(B)^@XQdfn{UCk}bvBd#qg+0k1 zO%)L!RDunSpT>cj@8RdKED8&a{|wcUlnl^UXa)1l7!lF2f9Nez7O|CHn3mpTp+<)8 z%|0hTUHJv0t8m$F*lhpCUoW;hjf@*&qcJh0fCD+}o|`JhKvxTU*Xn{0i8ov-8!Bp*3|gIv*h5AGtrjo48M= z-8IUL7=ypA`FeZVHF-7na6igp?B9Q3NaX{_hrsUebyW%g0sHD0o~Kr*8!(DeeY&)J zW0sM*aoKjTJX>@@1|^kZ!2e72QdF!Zg3``uKSJ;0m8hohFhpHpelo<&zIB#HWL)C+ znP8Q0-Ygtb5nQ0=&?H)>4O&>6=HZV;9aeM74X?yUwG{37>yHyXVXguo=G6K+3K#7c zJGyLx<@D1MvjYaB1jHxj3~bIdr^AgbHw_5)TW&KuLod7X>$jT&-GUntJh@a*OCACP%2lRiZ)ilb&k#XqUk8 zXT&G2IFBB;N)N+x%ze1|`;uxo8q^)$or~eK-OU+Z`v6`M+8_%6Rl+Of~sk z;=YZ-IlsW>6mRQ(OGX#tUP8!E^qs^M?)}bGQc+Bg-D$gzbTc+kU9_v$}3ht8q_neq<8+`M> z!0TuY?OpR~oE7L@;`ui50ii!2mtNL;li+oxA$|scK$j~J$WV-S;uLSnL?PZ9WeSW+ zne{-BaDcSb8r5rg9gy@~uKEzpSfEErP?#b?&7iy>!WvGQ_n|#*H$8@LIXYq7Xl_Au zJ)3OEIL6ZeX-LVL1$1X5KZ-Mzwk@}oyc5ou9}7hxjfWFOsP{znyhJ_K<;H;+LoiGq z*a3+J#!*;s*&%njpwM9mj}vfaEK|(!b+w zQbI(7$;0Eanb!(Z_;5_I{7D2R4IpxZfXuuC*P_B&4tT3jQ^8&;XIIVleFHsH(4kta zMVsRe(6iD7s0+!hv6M>Qj@Vs3Cg#>q2W(O!@8Ep`3HS9Pj_t1{Dcls>XjZVbJRD%Y z9suQk`;MpY*M+VqDprM;oe$yogPa|5Cg1EW1r>keezp!_Ye{Ua&oK4iqpj|BJQd+{ zi&!Tlu+z7URgc|s))pR~zENEgZzx9R4-nG-`uG%E6$~*7$rtKLCRl=Fxb7&T$m?*N zXbVp|0e8FQhwddq7QGi|ntDafV_;hit}CLl>5mw)p@jV&HKwFAjIdBiH-$Fr?cMrx z6}GLHdknTgut}?05x_ih+919q==R05N<8s-9L<#mY73Sq*>asxa9O~gdw&1BVsA$u){t23`Mlct)nf@;$ZW(MHxgmW*~$l>$k#!cRV`;37!ajyBXB$~|$j3g}&r!7AU-7(pa z2t3*Z;ndIYD)7_{-JxJY2Nu2xJoYqbTi|-JG=CL~C2W&7AU*aZQA+(h=4V?U3;1&@ zBY@a!T8irp$M83A77=bXXN-b+W6LButAiKp2?$v2qG?<7LwMtfIfU6{^mz9$`Inzu zPM4?H)i3Kf%#juP*ZjVLbt6MrcI>aA6UT-TN;)rP$*gur;0=I`Tfi_Fod;2Q{&Xl+ zNg}B3CZgh}tLK<4nFQ|d_W)=uBP}S8nEd#(?TM(SbnpZ96A{%Kwr5|P2f9Iq1I5DH z4>{|PT%n&hO}H4wn>xZLS>j2n9s>nqktNk1h{U*nnwnvDCA!$4YpH=r#U;zL zhVu}T@h8*rSgyd}=kc7RSKNM8)0m>YK(PsaFWlgWsE?5;KiTFEIy-HnD#L+a{9=@& z{x7O8rm7BI!tL^O(@DfFT z$L?J>j1BZb+eq;@K~YBooc?&6C;z5nK44%>xG7FTvM~2flW4> z+!ihE&P@Xc$FyLZnEa6$oWEOCJfWF8xQT|p7ZHFXY@a_Y9p&E%M^^H^l@M8*TDhFt60hr({BeSd&59t!w*I;`RiIJXfXR_*Pa zBd#27e!60uQw-aHDzaW&zn>f2j+@;umoZNalib>W_awF#@-y^0Yy15hdpBHv%m3je z5;tS*(Lj0a=Z(W9Kpg7oMH#0{CBdQKE!^6sSoRvyPe7XK7>+~QIvLhGiQ=5Jhse;h zf=}eU+t49a8dssPGG8dU-yywIjGHu8Wjw|`F@1drxnFS0s*$-k?CC04-L{e}AfFqp zmOi8lOWNw)>Da(H07Bd{Ok@v9a@l;ETjvgiXSIWHeBj2D9|G7#5RY$mlKnw;+S0_PPSp=IOj@_E&k<$*94dzF!Jqr5R$Lr(|Sin(?xrUGl`a) z@Om{Xf0aR1zB&|`@4jnBfSCBX4@wsnzK)?p*V}e^7|N@$rw15- zbylCBx8`8J5fwyJ$~a|7>a`eutMqw8x|Ep%O+oe;HEZfV6!;8|4@W9W8Xg?*N=aL3 zj0qhRVbfeXjMtc(^r*2I`jUWtG@>ESZ0L#k4i_XkA#_B7Bf7PW$h5cd3nbqi9 z5b6~?(Wn$2U8NhYP%n3`?{{kB_)C3_(t}(|=MXd7F>Kn4O&)>hJB<`*SJ*n`E>Zza zfl;IYxcx05SjsA$Js~Z#qCBQ<-#G0;jj+4zTOUHgjLEG+HmQ)!dciH?qa=Vl6L(v% z;igkUjzl=tB3~a&#}VRr3o&{ZM3Y>AFw@UVj&LxcM!22&ofQ#Oxo(g34BdXJt6b3z zyktcmYY6X}bS(~xE~^C@6*g13T?*xuOWK^JJlF`%@XIjrHCG`J3~d7M6^RISlXx>O zpCJJCb!&{)1P)>p%%MlA1!_iJOHAqT@p*e54>IyVP zH|J7#frsjCg;v!|r_ZzAL0${aeaB4~2MGVnS6FZIYDU|t4>zMVmhV)`-g@NJP9Xih-!+gKy1Cxh zU_^Z>RQ^9pRVm1gNS83ao%}v|RTWmu1y;)-VzdLzL5pgGxH|qy+BUIzg`WQ25WP{l zcAm1GgYAYkLa)?q-=m}X8zhE0K=oj1snQMkgWBqFDP9l_+`Z2VTZ`!SSO-lS1L>cP zFoBFQ3lt2RLp1-^4jhiPzb(z0eO6Lh6=Q~(VtWwV;kCSdP5DRbO5ufNErKHai6(Rh zY(yt-fcN*7F1ywie7Q{oT^0?FYbY?!^1~(Sp}6Szpl8AwmwTO@W?tSmxoZcL=_~WN zuE)NpI-~amTe*|9(Z-cN>#z0%pjRR;wAgN{5#4Wnwyu4j zMTPYZGWx-08KpB^TR}9TS{u(wMK>qgq?jTz?GW0Pk57#}UbwzjT5N2?22z3jdv~pe z0B$6o>DVSBQa<2tR5P+c%^9fU1fjff;njpfEe8YGU6K|K;&k)zmBpR4KnSzNBCV!mPxV^K%tdZFqdP3X>itW{=S(Cn`d+1f2oQXbYd0$yLw>cD~0nkD6xKU_8Fd2EI_A*!94OV=uZUYov54ma!s zw1<1PKiKp!CZb8j*{K(Y)sxH)x{(zm4nI8kBx9$|`J1J>AYVY3P&$VQ!J6cpi?Ov6 zIMYpkE7y@JZyK8_@p+#dRQv4z_~sSqfiC)sq4M_it0%a<)~I-dhyq(2H}c zRgNktvVyiojx(-|jw?ichT^={!eXm{=CdC%|CW)9foecdm+Wo>VKjO^)9WK(HsxiE zv`r6pg`Ewmeh+LP%bsyM0Nu<4KnRQ{BZMM;dyvgO!`H`#6DO0ci-Pluvd%SwJ3{=W z%y8yt1G}vi!^+BInkYwOVSpxUtx3MC;F`lS_4rb82XF~eyi;?4D zh?0XjYW%t>ssGd}@rW^?j3j9Nh6|s`{2gI^A=B$_yZE6VLJ(5nK5!dQuW(ldRt=+R zt-wqJdVLKDz0b=L*ipY91E*H*};L~6JtY~OpVQSMz>_{3{dd{bONwG z&fd9sUbhyX`2nZ1-3t+%=>>G)Z}7o~|xxY6H5PR^-}V)<*Gcv@7KV(^2E*`V8J1#$W!&o@mA# z&)aJU(mz0E{~tSl9{c8+?TW}TMOAuWw9*+>VL945PmF=>621kopgMnkxJdIu;Oe(< zGgErv#UBo{_nTYn)F;M+7$fe|LHA-%?nJPQmc}ODK@?R#zBKAlk zIZLIpxsp^7@@I4o~VG!R*fEcDnwI3S~ZFaFE+eST~qv zZpA)Tf5Ev&AH_5}(pPc|6$WNzMc~L!AjY5Gca+`xqeu|_7AjdN$SrAQ99Y3%;r-z}*^ocla z?4ISK+iuqW+2paU^5?A7YoA#Cqq^q_Vx?2L^qWZ^(=RMm(O;35Oqlh?NhT!V+X9Z} zvJFPExZO3&%!36Pbtk1(%KeAr36F-HsP=TrjRbQ0-JaX+=P`6KW(%6hP%>lM{bCKt z{=bqY;zib+=8)vDfT(*7fdCIM>xUN1&Io_u13mtJvLJ&qY3Ae(zypBLoDu0(RXBlG zQm(Wmg}|7-<c!Eco*tpjc0~ zIBgSXYr;3z;Ng`HtOxghK_{&YITF*mgQ8*CxmuEExo*%(?tzHfpl3Age|- zOv{vG`U<^@t4@T!H;n4>f326-D%71xv#{1`ezd~PbwmHAWr#uI+$#tx| z$Kj+(I!I)jZAhELj*N~ICn+eoJ`I>>ZA zL>kw!X;-S!N@KCBsLX5)8az7HUU%a5hx*Zw6SW&-+TeBm2<8j>zOr)Ld35XM7|nw( z6t{D6+K1M)v;yWpWn$Th5anBJIUUJaasnP#WkDS|q(aUbq5nJZsg^rk9CL1`!$ke8 z+~(px;%OFu)qrZ7LQI83jQu;AICwUkFP)REroFPM=6#J^>*VUy?Sp0giS>EP=VvHO zuadoh6lkfD*k({MdU=<~)LANeLalNzEAE*d$n{~>z^~N-KTbpIP%Whx-l{d9FYYuL zNedrdGuM8Kxb*ecS^I_|LQn+-aXFb_Mn!V_CpGHN&S3TKpY@t0FTq5>(=-^z*Y?<$ z_;L9FU>J{Lm5t2|+Ci|$N-*U2ZqtiJmMO;OTYU=gE9CBXWFVN_5qmm2nYdUuIJh^w zH}~TBr2k;blq^_HWfKXRF_4dT2w=zhQs8Tv4CC3e`n`0N~JG1{uFHP0znNOYywK^7a z8MG*;epD77mHDT7t#TkP0~rk5)D$cp^A(+vb9%)u);2EB08})o_PK50bm$~R+=^1l z!$`Cj8D7!gv|C$=6sySO$Wg*HHEVl*crohlPi%bmQ6v*8rJ0sruYRC4OIpSohoVG- zbAjWCpqM7LPXdMnn~olvA%1Z0@Ki9{;ZJ_^K*TQwi`njkr+<=B)cNBibI}?89p8r! znFV3vMzvNgd9VZ*T_%)@pA1T+yn9a%5A9%nyaj`vi%e67kt9%;8HPtq2)`Qxn^Miw z9nN#;e~zTXTP}lMRErRc9H<(al|j=um^5n$g>Tw`-A&MI!?{kkQJPO_5zN5m6lZ|> zt~)hQxPst<1mnQ|PK1mcj}8|3ny$VYHvGQZ+w%6eM!2P)CD_!EA0Mi?-3jGd4`v14xMx|Uh? z=ZKc~ZQD4x;b!KAz${rHL&5RcgEDt5;M)YqAhOb{ke?*#Psc_X6LV#YWoPgR8iJO#}s=4{>eE31x28x zIeyj%zXaI{uX^4f)GT>~;P&?3g(sauDds7?TF?EJA0d+F>W`{! zm|PCNSfOc&cTB|IBDa7lC0h+<&XFEUgxHxWXu-G3BB#S^-Ow5vS}cP3YQs3ej~Yay zK==GxBgH!IOM#?fd1`s!4S`$t%+srWj zQzE)$=;2dVVrg1P6U|7ENJ-I35i_kudN(sx?wl=RnYLhZMwMs-ha77r_QV!WQC3AT ztK-Gc(Df6w>O#+L9xFh5hFEw0l=6DtR7W`%kDx)OYsR{$YPkvF{brVaopOxllY~z4 zDI|RmcIF#I@-K|*c56Bp%2&#mi=>zp(4)`NIT#WdBI6I#F7oO9KweusM{e;ut!6Wu zEH0oO>Fv`2tLba#3NPkNlGt#8tS?i(x`cy`Mc2#}$%?m76KUAe6->7lQ4FbAuo*UO zE*i_3Ktj+3(E>rv{WLdMDtHWN{DLEoq*AU#gPP{O4hTKEVsQ%l?>T;0a=#Oqdm}@u zW9HnSSk4l#Wj=lWusEZ;QZ#W&9OOhNbV%)2Qt^hFkd4dV`Yr*Sz^z^TbAIt~aB~3; z6V;8c|HZlhHey$Ff2_&!X36zt?c(ju`gXbU*mY4!T*&qfM6JS+Iqb9`*KTxc{ykR& z&&2Jmem}|Y*_)g#Y2S>QG%3e1hOrPN-gWkJqV3k@Z#h)?p8mMHBQXhS)p==l@|ka~ zvzyEM&H&DA%ibZG#-exRO4Z>QKP$?teJ8q6p>j)sF-($2zo}7}(~5{w&Ro2qmqDl= zM>);jPYt63U-iClsy8Jn6+-_S&P?hV7@qnKa3sR^qcs{SsC>k;kTWbl6RPZff7Im> zH1LK-vyf$>Ac_Y4?KglW;@)DxXFmzEl4 zkZb|r8vCd>i!%DH2ie(Q|9|rG$-V1})FgmH2xnE!@EQZ)AYMn*;U9H$3mBeSD9OAAXG( zhx1*%DS;P*B{4*3nZ8c%B%7KIX8D9o01HDsAE`367fdy<|KKxB-7R=za`40HuGU-R zKwBK^)11d?NdqOzmo;pJspAxrI8V%ts7jrg$NM3Unf^g+JAe*@_21GdKIpj2n?Ts) z#;kxTOs@JSPLz(YKvi-VN0S)gf%Ou>9c}B5#!VVn*#O%Jd6z>^QF}>3E#`~uvTqH? z)iqzOpg7650gFAr&nC4ohActJKlNJYV3o3rbBP+`o$$q-6N9q@jL+DCy^{#aHEm3# ze?vOq9&M3mmTN|m1}Ks{(9|f~$x|0Qu!g*gm)jej7ebR|h_wpWV-S!+Qiu1L^#~d4Doq#T@ z!X+*gUh&KPYsyy`kcCpot%f|iBXNgsE)LxM--vb0W$0{i?va<4nH{Qw2HGlck$?)s zU=F*?2mls1?9AAh@z!AzIS0#8xNQFNKQIeSB)>W-`ZKnYiFd#IZ501_dEV|TYp=wn z;p^jzULhL+3XgLH*?bX>aApqgeXWUmnSsH{CufOBqh4gBRT)|H(Tb1{h~xA=uQ|L~ zJXL+R5E|V=8@B`7m`l*K*%0evs|c?iwQ{6h^PQ9M?4Wi z&<@La8{Oyr7V3g^_17F$ubUhN4FVe#Zj1$pdnI+%=9P7eTVOWXIj0@(r2MIUh%TM; z_uK?LrWX_r-uo#($`A%s6COELbw>^*6(i}H9v9Pd@C+xuU#8T@)kDF8D^pKr_f1FH z(`yL$d;ief{YEyyY(MH&%^Qcak%S66#!f@4Y;95sOjEN<4hBhniJUOwOZJ7WjfQKslo$_C9uVXD?zF*8@s zjTEBc3iL{o5)R{9MQ@*Oc*K1&OBb$IbPNkU?T@J}QMer$v^=>TVxRApp}}xp46#@e z`Ti}Yty;6URY?1WgrK()4V0v1U=A7mBUCa@_vB)9;EJse6>WPEx?FCDiIvSg1)UQz zY^-b%M_F;@?D$!Y)!;PTM2+sNFwEX%UKU9rH`;hccQhl>|O?dvNt-WIv zP9eANV}r@5?|J7V!d$&z$t|8CMC%sn#xCPp=fr$_op~FPAqJL?gUp{rA8%sf9h=YG zo1nN%Y(9fPbOh8uJ$Y3LX;3qCZc=_j!KntdQ;zoV*XYotN*M>H{1~>;>8Px**67ew zjapeUKB3xE05Plkobd9qQC!E2_d`t14&0ptHpvefNiA{Mu)T)Tcpv-l2B`#XoRR1Y zSa=+h^!-Zuz9NrBlsHvj?dx=BcFdK(LFLsIW&;6$Yfx6Q;m1w!F-jdP(EN`Neys&mRZT7vk|P(CM66E*f!8hb7ux zB2VA-ts-^OZYSEJqb{CSN_Z)=9Fk@CaWUS_BN*VE>sHN4kw~av+q4$}$YBEDa9CCo zZRtDnh|<`AF*P*RimZvt6EhT3KGsQU^?4eIb>f{*^Yq1lmnvLykL*>nAAn4ivqtYR zc+tb;iMsg{bIJ^LrqG-C~J`z@o83v1Nr3nb+fDXYogl}+01(QK-w1`23WN$M*4f^-3{p*=hbLrQnn zGT3Vs>HFkLW!)?x-?qNFsKmsp2I?;r5qdq*$u2rraEM>0<>Ke8@jV)KYG%0iPTL#< z7T*RGvyz%w@4qd8C#zYv>M01(#dh5W^@yr;3X;eZ@DgSSzXa9M5~^?>89%q?2|1UM z&RCjH*oY4g|0>HbNAAw9o{pY;c4Ow_>CM+2SvvzzNBi4Zm3`**@mO|VGRt%P`!q1X z_6w8F;ztFy8c?kQ-{DgtZAydWo(KUFPNik?yrgR1sYtH@AM)w6%I82b@uQEd)zPo9 zf(1}&e$O!T+4%a|ZwU35M@eFc)1}Q-#6<1k9=r<4e!58P*D4c`<_o$0B=96wQCdJ& zmDp>4Cid9Cql+F6Vac~MRJzdlz}J1wMw#lMu=YJd>!?*99BYllv{H-tFO#k<^hg1fkM1E9~JI5eS@&U%>MSc+;KDPz;k*{=RM^t6htEf?|F@Jzn z!?b!vsQreShMgeG-53($@jg|vPZa2|MNYKf5fsC$zo|e>O3GWn&Srhk<8=KoKd=q* z-=po|%L;5PH!@CLOZa2#M{}BKvpvgC?CP`*tFEKlee|=8L&7|uamsve=V0L$J>f^-T2WwO&w_H!z zQ|P&QLqy)s<13|^8SAp4f4YfTtt>Fg1&cB&&kFnQOENEYtxhu(qlyWcMZZR2m1dp^ zf1U{<8|f0=IRH@5mO_K)R2Y!9Wk`L${9)Qz!#uviE@V|A=GUbI9H(&py@aVfoE$6O z0EKr)_xo1LFjwEWv#=lQa4_u@%6s91L|rYNU{az$RXahiP!kR;sfk(867_fWZKZOc z(Qqs!&m7{@;KaR1`VER9Lwm4gs`jY0FHd_Iz~F$MbKt-?AzluEzK$C%4n(yst^bnl z?=|EU(RN)M&0r#JX}Hd8#)(YHB0{xuA#<tAV?z_8u;srO^Y3Q|VNUey(S_VKXpv41!%~p`)JM&u^Z3>5 znVgdsTwbw&f-Z`;zOz`6JYM%7eqJ5Ce4b`+R@@GyE)pLB;*gbTLJo(@vaq)L(6OP&@p{+`M#L$aB#3qmW@+LHHR>NV7tIeL{Ld~$+87lZX z@r~_FDQBvc^jZ(o;xjK!bB}gzX_Dgf?xRw9QB;+cgtG0Aa>8$2n;gdg&I8DT1%aR5 zq*Y2_(49B$vB+&Dhb;;0a-Oz5GqbV)Vh)6rq@*#VNxW3S<`Ce!0j*IX%+J6xea zZRx_I2wj%|Rl2k%=hYcjVh(Q|4RYo?+4%5l)w8nxS(+!U2)=_va{G+lm8=MTR$f2v zBmI~3Fk&*+cQ~QECGIE_G?vk+sHs3t6h%s#W6|GSga4Qf)=nF%;SV%Y|0~)G-A=$3 zbBt-im7386=^6-Lb?IG4ZG^7rJ*)0<8d3=+4f69Ide16;|?4NF4 zo*!ScMErJwMEGWHuvjjpJw;_Vwsl7r{@8-8aIT=+AL(L!qHFUmY@>LxbJ)n6;JPu6 zdMRr|Wg)o(Z%9q0rLKzFTqbOap&$iTG%gQyd*hq}XCG1S|*+lKZL80Wi88VH*cD}$XHBjp`}-O8^)vcQ+B441rLX^uJO=Ytfi?+`zM}n-5XG>KOimV<}F5%{N}zx~TMBRX^FD+haI9 z_D|n5F(0n4t?4Go`TjAWu+zF$b4S`Rl;`Q`K zwHQ757@`?~3Q!O1quCzR!{ZUGwK9^!P#??b>dYnEz;|$3yIh6jW#Df$TqL?}Ex@f- zQA_`tO;8ti0JLWWfs>zv+Y@R-;l)oQrU;OEMPWW*+!)pRn6=S`G2R}FKmwrxS~&zk z5TXa$i#8pS3-T${I_5`1&2Ng!A11b8=5npf0~o?5!NW9L_tUu!t680XZ`9p8P2lv$ zeZS?E1|E+oUzCv{3Q}iLb4Jx1R{@40B~Lj4e$sK2G@8Z5Ea{Vz77kwH!i}+V z;Fr3+BdDZG1itLjmNRg=f05a0B+T4zFYPlbSyj;VB-kaOVK7ZOqJfhqqIA8@YJ?GC zCxW{&4QNI(E&h>L3n)SgPXUogWTjXB(!=df{C+YHC$A38+2b_|Oqsl0sX4m)yorzV z3A69fGU7f4ASNNkjaHU0Gr&!{BxVo`$3k2($tNOlpKiF_C%ycTlM?r0kakU)s1?zX zN6B`Jim2rV-JJavnLK^D&1wDm+U(6^8(35O+fg)K&8IE~P>nd7vqV+s3TA1P1?Qf> zxfptQ^H%l}Q|z9xwVN5EU4*cg!jAjZ&?kwaJ6Sk|I53~dtfC*E5*8`+LymGW{4YPo zBG?EfQ#v!JdTN6e4tn!aqf*J|U7oncSG-1@a&vCp;uZ-04}8Y-Klks=bJ$JiX3(fC z3W+pqAJ(}8rjPkK?1e`oSPis~2cR@+N7%Had5GrTn2|?%)UFJy*$|k$*v&J!5HtCc zS+^Q6qT)-QaOsKD_qW9cJwWutmCOqqD3T-g$4Y3z$enwRcHG3( z${@NijWAaf1#8sZD4H55I#Gqc9w4d%n2Gx0pK=(xVRqt3+-l&Zb+a_Obu6HLiiyhnlXd3#T3_PKmOOFZUERM_iy$aFp}xvE{2_(BwzzqaNs$&dSJ5 zz^0q%1jt}N3-wFpIvd5@Z=+bvX-8(`FK#r6xouNlX3lU1N~>Q+Wn`n1+*SUW$eW%c zxpni!WR>XOhYKdWD>DOun528aY0clRFjdx*y7;eMgGW?5`e37fXLyyeVrzPd-N7bEPe*sQj3c3 z*b(ygmjI}x19Q89O9X`dFO2p5AE!@;E=~aIOEQqD(?>UV_tV#hIkwim_RGzYt^3}S z5C$mf1pp@qTK}Rk!8$9F`GA-O(EG<*V?YR}L`EDtFNIjDpt_Eu>#B&6Hz1QXYQA1& zjtp5%MV4}l%`5aZlF(~>!69NT3CdD{3od&aQSAgwS5dc0Ilyj| zL@%Xr+$pP(y5#Hu;hPPcYRUjt{^@cPeQIqFDbWsy(?BkG3JZbKbPE={x!_~$&Qf_1 zYAOktAoT=O`wJ+UUnI0L5L-6nVh!GjeA5?}z|;#^}3R7I>s zQhz^cThUL};{rx$P}k8l&y}|41iW`?T7^{I-jh{NT!C&@ko;lbiVD@=;p~RC7Cmu+ zmu|o7$6E%M2Rv}u;Qc(pPzspH94M8PX+q&`a4)OkNcmcZl!WLWv7L2uaByQ9=^~iA zVE(O_SjjOhgQ^_#E~pqWVEHM>O)2lcP78|`KzdAOw*8#VmVQU(5%89eNHU%CBKNUv zL6%1!M40>9A#~+{01+i|=UoPF;iTJ9Xm31qt8=cb#rpMzNoGzi>;Jd{bK|FDS=|TF zg<9{XdWbpvyeo^voOckEj7L94w~FoTUdV5nX$z}xJ!dVnbiC`LF&&TK?s00>yFyM( z^9%`!!wlmE9q4F1+&r6h7I8UmkoP5_>wyoH`7Tci(C!@sT`9OayRv$~4D}d6p~ceA z6IEYb#0IqHGQP9)eDHjoIcHFS)~|l6M7qO8xSxuSsx8(wBsPEGd1M$lph<_IH`4_P zZc#5y(vQ6HWXi z-1GegY&5m*mAHE2jxcz!c4dGx)AuEFUA7+xEElK87YHnkVt=EQb0o!A-yG`07W;+c ziZM-wOfFWnxOxwvX-XBa7!8uh9zi&xv56NAg#6$2;shIAxEt~u;vL+PKN*^}#z7@z zwajW07fM;EON)^*HT;8Yb;z?Wn{wgbNIEt@=#rV{M{R-CM5MOH+vQ9`%+n-Hg$#YR zFcM`$y>TG8ZzXG^ALQ<=?R64>e{tmIEK1jnB5TlRrL*C0TdXICFe=6P;9QHl0II5m z#L2x4I9(nY?itCU95DWb`ULzkOxvPvn~5A(yox^2iY}$#yxM=S=SUpZp|dJRL-HLw zi00{aw|lld=`uWqy2OT z$48Jr$ADrTL1JZymD_2y5b(fIP}F1ELT@q$)*(tp<)PueM)Dj0-PaK6hK|Io6&12Z zK!OwLJyAHOND;I6!t-1f$MBsC0)D)T@9KUJ!^qwL5spy89mEX+_c99N?zZx$7NlX? z-UYH(HVr<0V`! zs`B~`B$e52sl~JvUN0fW`XqrQk!X+(4hd1tthakrxclC{;rOO`NBU(lB$5F{-V^>N zUd#h|bcqBB8UnS8tt+ilIWqWFxqLW^nIK>Q1u5ife!KntVN~0o4pEA9(?k}=o)>5x z0=v>tBzHNPP1=z@(qzF}+icPk%aRmpwV>Wm+?O#D0n01ocm3+~poq_nF{bk}L#@8uS+FYbL?)2ZH!y#Y0rCNyz3!Bw$>Fw?S%u1qP}yDeDhDfmZK!*5nh_14 z=E%+4?;4Ksgz-d6;?NxDDO2`Bn6|m3dJ8!IkU)-4Qh?4FwOvD(p_dty&QOagtpF{* zVP7=m8Y}A`3dg~J!!gLpt#1UYVAbO*+YVBsW9C3fj9OP}LCSK=lAF@tYewXNkq=}z zssE{LY*AfZC#=)Lh(579DRPm%%XrsR?ZNhx_;3*^%p`W^?Fa$G}R z7Ps9xF=;jTlhD9c4~hn~?}8gPbItEKG)e^6P>$QeCVzg&bw!Cx9mJ+IkRDIjA+4U) z=FoYK`g#fa1C|XcZ#0uo65qK67~SCf2SI)Vvl=3q6+0GVhNCxDBlbo_Rs6jSG$riKs(S+$J0SXTOL zDJI-U*o~wCnX%`d(RvSq=1*q&J`^j}*2&ad9c`Mezv8J=o5qGp=)Z8OhmvWdTGJrG z8t9)+-C`>8&%(OR(Znf`5~(n^x`;aWOv!YfLp%$1=Xa~E@=|vWAy+%r?vD5R!#g1; z!V-C)FD#JI7GssMJ>DpwZv52RK$D_jz(8HpMX364cgZO8T=41n3;7DFo}lqnj<^8V zz#^P`6CGE3ZZP(a5wv)bIuHy__Zfi>s!!RHXq^JvC)QkIJ&}7%1s{wBNGf|7ZO_qG zfzA+Cggh-v>C-loGSFwbV4z)r7Ey~dA__q@*nFMowq!J|#KYz`jMrkw3-eGW5OQ{~4%I^;m_qY`R#~_~_WNE-`O}yhB zHB_I7&NIpLB@<^%fF@_W+!KPq{le|r9r!suUW;N-H90x7f%XZwzng ze|BsP59Ih4eha!4mv+Jb@1_5gXF~F$L&;F!#G6db=BR|J^jhUK@RX0tp`gHU%dwA4 zD@@NUDE1tfHEZh6vk;SxTHYG!KNu`QZT|aTWlb6eYAklq$+EKyvKV&1a8apR=tID; zIw65SeToSMqPl-xeD1`%JlWd*Y0`$hY~;5|$#<$Z&({)!x%t-fD>y`7b>7F%j z;CycF#>In6fmwAkYWaBy9dpHY2|eu3(l%F%%tS}0!U`&knb;2oY0M$Q!ABn-+#qmK z{;%yikgKm^LBB^0s3M%l0EH8)cBYL!hoBU%Fl5j+-2NU0TfQiiFj|tkhrsY31}}Ug z`2TJoW{e3INYzdkR@^jbhE$58^5Ih(Gg7S@R*O#1#ble`$~ZG6mzd=9JD;vhcB_d(W^c#YzYE zg+g4%qO&pl*r6Np4dOUES=IV}(KGSOhK_{ri1*x+JNb7&Bw3cJz zH8N$%%_8KzJ9@vwhGwXO59(QN$;3B@s6ADAkQ*vc9ukdv)nb;gxC@*1QVEu~g{gaL z8qjlo?umU}pA{Vo4|v;Nt}xb1{sG8DU#9j2ji|kv&jir=d2ic+mZDi3%pS2e@2iD2x^fu-wIw#9@w3AB`Nx*DMmNeV+7pX^2e);dY;6B0=7K~@yW!oH|AqAC!b z+!sYYwuXRcQqeW#%65L_w2vCP0m2Usw2J)`k zd-e2l8_UG(zJY&@8h4th%(b)zExdllAyP4whBMbwI4wG_s*8sH&Dh3uA@8B2jL)>c zz;_?<#r88U6t$$3_JWqP@!$L*ln%v)1#5tsB}Q2Xhgc-Wi87>|$a{a33MXbJuRR?m z4tgmN7#d*UNm`H47xt9`Uj7qZG0HWwRRkrbW?yByu%Z$5_ZHnGS%DFD%!P|3YuuY+ zM}nBjJTkCya}8{HLeB|H^hr-?^c%oRqYd%XFE&Ei+==eB1G{hXqFBI zLuv*lmYjF6FQ`&Z=lc$6p>P*@16vK=UuGFp1{PEYVbS zAp7Yr^L6YF<`?9Ecww&FceMxo>%`KJ8LPtaZU6LnESo>`JEYO$%}1z5rw2o40bkVA zHq?TfOT2VEc>0plsrsk)u+-xggI?5bJZT23m1-7zzokhPm(V*M;~d7`KpNJWSwF*U zJWwlAWuj!ldT}ORY+~`?G2^dLNUU3&NhMo^efC#>k!st zK@CBHtuDNY+zSwG9MJ?K%3!*aP$E9*TE2cL-2 z3-YUO$@b3X@Q&XlEcq)M?(7pGZO2_>&DVis3m{Ge5TFg?AK*c^Oy1^{(@;#oxM<}i zxTeyy{DrnoD(Vifc`!mws&ob=hjtgZWKo_(O*umWMv@EA$}lPsV50-Brw&qI>9PnB z3&L!%MUS*f}* z)iLiHwGD8GY!sY}lDD}&Z)TcKQ!%(`=Gnrc%OD~WFCh2|7edr~IkW`{O8t0z3lnE~ z{N5^NMo1Av!9c$W;oD*}eRYHTnG?l`CVLIZ_==xQQtz9=}pA(R+BqP9=!FhyYoupP10 zdWfj^Uj=8n;*p95KEhS-H}MlQYRH#NF&&%R&X*x1sC)y{vsYY>A-dim={E=D?N~ee z8@$5%=fUk&?=rsu@zsY#M13B>OB_b$LjU4A|Jo`hjkn*Yq#nV%l2a z?yPuz?>xZ9F0Rh6p%ZU~$(#3omL^yEK_%v?0oxw=vlW~816`XzVyb% z8B-=LNmL@YpSp<{TyYa?*O^PT6lHiVAL7ej$~7dXfbkql*u*{t%ZIG{Y$jcjOF9uZ z&swj%@&4$=Nh23N#Me&oE`%&o&e$v6!DR#`sHpu7IKHRN$JPCD_y<$#KtQNPnG`fm z4&iUUGLf@E*d~X?tuH>quxjjviN&+%iDeln*S(`(S)h}o@^(EwT&Xk8T*x}uvq0!? zoBIC_cNhL0N~oNy1;4TLzQj}-V5}3IMIZ86OyGDzO1`I%#ZF}8NY@{xg+@5;>CiHC zs}B9)vB{x0^xgMCmfp8YHtvX6UaNUUR-dK=Tt5y;XXP*s?#E5K@N;mn2F@DQbwDxiMz5a#v~}A zf(%&5=6$u#*Cc7KKQ9QDge@Kj`xe^RenGR(7)!M>>f+CkHHEI(Mp%vLo3nyWZGRh- z*cUt-R>OR`_4_nK&n(e6qS&Q)M?Y7ToquM>T@W|ABsw`-cRDYFmSrhv zJzy(xOB?>szSp8kSP0$W^jTV>XPFGi405l*SNUk79M5W_26{G>iuKr;a)Ocz*>Nn? zB@UuVmw_0#EsBB!l6wIhV+p#usSe2EUHO?)?t6yOLt}fEtp7Sm+h1L@>^oAfTNQl_ z*JQ455w{F5fE*{y!-fH)lT>5ctre6iv-Q`IlUD_1hb|WWPO#3+KoVK^S$&LC*;tycYDT;nPQqf702U4o;XVpS5 zFLPwM6AtqqcFpT(wY>c-gY5360XwDM#}A^jrgCz(EQk7&dt@49+^)gBruU`ExNJA$ zQmj!YlB@3VP)X;?N8A%ivfv^cVdgY`!&%&O&qLp66qYI%8AAj_`{q+>u<~0|fmB`AB9_Wmabr!V@%?e^+aEPOH2Mvsgaj;q} z&^mE2*Yizwxx3&&n&*#;V?l}GY*4PILL5Vx*u)1*Wd1SOT@}~pFc+B@CKBA;!P`Y)MiN%5LtZ+BO(gtiIshuh`%~1*f29rsK5Ri^SwgkgBjD+0 zWh$~5c+vSRE!oh*?7m389n@g}ndh3OIHK#sY zo);H{)f2|%W&N%K-H`@~v+%}@ySPUXlT}I}5sUr}tg_srs;IdXN?guwUsMAfCHo3b zIw6XZhi?<44&BsryyvfLkwk%RFLG><(Zt?3aSTn6(NjIQIFtYQ3vW4a`^pMha7p}PM$(t zz{-O*O;QKq7K8&be85k80Q4?#4*>hdUe5rGo1phBWiZ;b8wdLV%L`ja zKf1~OKdN@07K#v(Vs;J1 z5c$}C;SVypdVUW>7jMc>RmR$?!lH~5;~fi+D08Jk+N?RMw8W~s6$V1Bw4EhancCyD zso*-(4qdcRwij)tV@nGS(NVUctEK;o`h#+2G6k*H2us)UDrItmR3d%NZ1w%!6~L{h zwCfqR>Tt(EV&W_3IQ7e*FJvuDr!s1a+VhF&&)&?^%@qE7pFR5=#g|(;AKzR|u2QDY z#t|F6y8oV2@2$@9TNWE6lVc$=%p-y4#w9ltp@H^YAP3aG&DC3ekxlr1yU{&(SL{mq zIg?klLEX6zeSCa%$n%>oLR#N>gs-jT0IR^bhfTy`4CE3)XOG)0=m8#yB(WZiuoVd-INVR35<0SCKufzkPf9% zzf}1-Bs2uFRetOxtz5uGt;3{3My+*7p(;-`o$xwPj}v8M12ao-A>?EG!m0eGI|k$s!ZM$B>R7qn#;DRr?hs{l^=G1WT3tF^wam?oyb7ruEYe!;fIPi20_Q#d z-b>)S_aWMF0l;~%>|(e34^y9G)0SGv%bE->yvtn=&a}T&pb6uE9A_-yHGkUQ#k+U? z+nyahosY;$Cvm*^L%eRjAYgzwdMFqKE_#^s6lVJ$6`~$2t+FEhTXu%!)^)k;{bJ_w z|3~Hp_Aiu7y znB`BUUTty%Q9j0#VU-A$FwL$ zmDx#Bj2$;33!7lO+Rs(`SN=l%^L;p^tg+EE89&L?Vkkcqfsg0@)##g~&5Gbgkr+e5 zTp^m{uIP3=09<~`ka!vU>ARdbm=aamlIxti_Nax!Z~ zQj7jrvd$K?fW2gNHXSG09*7dtn&@X`hOPO}_t;!)L7j9y|C7R-3yu zcpS^Ue{d>DG>bgB<@UO0@844t!shlsQ{@q7)p=NTJq@t})KcU>bwKNFY*z=#k<&#{ zB`DV84f#2-D9fI8HDRlQ_j%SS(!91*GwL*sW7K4$UqtX5Qo{HEHAQyi9p(vzrCP$(R#8;lUM;4xW-V;@+sp)F}B8u=R>hm3!J|}x? z_fqlGNN3DSWV=7PZ}*lS5%!kmgmxbD30GH$J$m)O{5G8;#+6H15sRkd2K%s{%H9d} zMAY!ISn3`mrlqC{=}d!F>H1A)n->@Kd<|q7JYdH%gp2YQ?MJL+V+*usT=gi;v7VGl zMwT`23^)@IT#eGWHnUgP?&|&$?jO525b_ z_$>XdqdW)!csYX1YHgdlq;06$$6`^Dq{da4d!@>6lfCWSqTjNDGu<=&bWlPWVt0LA zT#>j)C(W5%BjXYaRH74O-d4M=V_IbRZkJ_7!Ge?)uzBwFnLboNk=7w|xItDlJB#ZV z{P?)4m$gMK<^{kPeG&jFYR=;1tNAT%rgPv=|L8Ox3;0D9F%s~fmT=++Ll_OTJax%N zY`$NiQp^R7!y0dxzZ*WvOaen&B$v-dIZT?3d@HOjC`}>4s49?7nNd|4L)vvdhg0pe zplj~1%=fs*JnNCLA7A4rPfUv!XB4#k7afhQ28!vTjqSTubhp4 zJL-gg5d3Xddu`E{$QsyG{1L0G1@fNVp1g7emHLdB@i))jzgSi9N$<1oL)D~4umir`bK_&6XAxTE4vAL z;(SiYN9GscMnI#-?_uzCW8bM+Nnkz&mlL>W>m~e1D@wZln)`j$NC~$T4mD6&VkU`Z z8P_gsTIr;fVmGH;6y?e`#SViW()+8y3Khl{=1QjD5B|?~%0iO0YddnKaMlI1I1T~p zO(b7-E}X?vI524-4OW!3GwVOX^`#4x*=1#BY0ve8cG;2lF>VGgWMB=Fw3 zPd&vYrfc>6t`4nwoyqIL{?Z+qX;d|#PN6kT!sMCFn_(h(_!YxeewM?r<-fjpCu>qiY}KfDcM_fpk;BnD%(C&FZcbA5WeC6j@BlG%j>fwCd`pn zqpXYH-~a2d&mqcKhn*5eG*MmABxRt*6V}+jUX-hD&Ft97=YXgm_)-M8G*-HcGrG`m zTMtY=8}$uVn3~2mI0Iperx8antjVe*eteBxkXU`-q;?(3+>dM02x5k3Xny6jwd4=T zIgCU*+JH-uq{^18-ChahPau52S_u|$(&l@79by$?1P=g1bXIW8gFsgZ3CL}ZOi5je z-xrumJkLFF_F3ZSQMJqoD|Ak%Nat&nG zxobt&5O+1D_Hl@sngTtS8%IQvUl2*pBKn|7_O@}>Ol{}o5as;6nbII?i37$fquPOR zrp^lSawmUTWWS%m#@9aws@f;w%&9DM!z-Hs^obzNjqiHt@KvK@HAQCd4tL8=|Df)} z&L_8l(+!1X;oaJL>E-|Ud}D;Nts{DPS(V*MFN{Ng*WXLTENqi}H**>n%PtNJID>%2 z_QMITm#{?SQ)MMJn~xULF0jX)R7Zw){E(%k;e@HN?uRyVFjwM0Xnw&z<>(k3FByo` z2qp4Yl1D>%E{tl&Pw)VCY)fY zT9;M(s$127e*s5m4!w5_%#G<|)l0k1TBtQXtXM7xrdZgT2g*v)+l_>n6;fFV*`E7c zXM_3La)%rO1S9SHzQQw5J$j_?yx7XWv~Gb!R{3!@#iMb71-7duc5dZ;J=njPdhq<> z!q9&n>W}{PkK+5J?C{6X(~qn3kHfp^+2M~7n?IYpKF#Kj?JBME#byz@u?$_?MCjYq zD~QvK51ya$u8vV%ltD?4P!vTr6qraeGvDxqm!V-KlltM0PQe*b9Ow-4tAQ=>k-#R% ze-Vr)gya(@8!ht=HMcibfl&H-@RbpfwpDO6@*t?LOdo^9N-U%F=1RH|&EO9qo7qap zRBlK6c-tI1?J^hc*2_Uck9*7tPKc@D4!ADaouxkvh}p3-%Yet7(UYmmCqkfOq}{Dp z??5jjPl$!%pYzL4i(O=|3iAJWI;Zf;wj~P3wv&$2v2EKnI<~Ej&5mu`wr$&XI_mK5 zoQM0Id}}YxSvAIARk6KqfW!^YJ(Qx1w0%t}S4HzzU<@i5KAWJ8w10YT1KfJ75gb(3 zxV_kI*6$ef-Br;2%(Q9b2k~aYbTH;Ux_?hCh7G&3zjg}~^4$lI1FDANJx7+u zWXLlkqWY-P5TF`$8nv){VEljiKX8Ce($p^0H_CYa7BkgQBq#{yT);1LD3d2`;xi6U zq9xolg~|VIGXa#tHbt*zs&=la#i9y^%^k)#r5qaB*RvQa zs-5~tOCaKGLL4DFB^~6d9MI5M5mzoUHw0PgfcVSa1Ul?4F*1PsMW$^7y`)P~CZuc? zUzk32U-a*FK`~DMkbL+^}@7*Ip&vXxM5iDPnA=^Y(f3h`0aI(p zG`}`gW@eC)WvBtnO_zhSm!_5x#|S{&>dYxhUhBuFO4fXhd00kKtk_Sr=x}^IwysfjHIDoCVvJG{0n<#~%>Z=pj%xds9K_TpqCNH1Zc4RDaoB-A-LM8dTMC7`AOR+4Hwahk_Uo)I~dU1oU%0+ zxJM3keD4R2BEq{lne6bb$FEWHaI~YJ@?;eVKa#?r&tupvv}PvMZxD!J<@ydeka5AL>P5vZClcV&K>386*Af?wN}Z%;*SI5;qd zRDDNheBO3m1*z`-X(bIejf=OzzbVrhnD52`^Dt#lk^F|_*O2?*ys zI}8WL;mk}-b1mXbcuxBMMRDB8~Z+4rZ#@|yVIF4(M=AUu$(=U?dKKW z)urA#h21{nDS-!_#MlWqA6!}K5TQPzL^d>kcAu1hxkk^H@c3rpBb(cjQ)h1V0Ql%m zNYyUBuGbbrLpiCB!nT)2^puap+H2r=6tp8hDr2)n5axn0{XhzK=-m7uyIt5JA0{1j z#ptzSzE zMe``$fzTSwUYpzHGE~Mo8^2gPYt`ShrF0?vjtd`Xg0(a5mzoLWqpW}ULxSVtU-v!} z?e>2o8Ix|lt_637anpsyPaT|R8D0}zqj)HD^yccigk^xy$8?|ruAc`Z1nw;+ArC8S zPGwFAn%dx{4uV z!C(;(YgdVbXW;i}PVngFpReBDcB$ZqU;YQ+Y+cLOGU=S69IQvQyc9u8)%`doyy)tI z@z{$mwpOCx*6!Ln0`vzL1sFww1ta{py9o43?q@ybg?tnFGg`c718j@W51}0^`$r*M zAcf!Go8Lq1ON`-2kuCa{8mPuhN4DD4C&N%k{1*audu3tCFh^UG$Bvff8U1o1c>Lc;oEZ&#C+|20){9c!^QcM*vJ&*mNqXoHzCPCW> zB+_-(BZnE$F8H(A_?7GsIFa1K&WdDLJbc%^+9a#0b1_sL>sxe!FZg=zh@>l`Ib6EB zMWB|v4q15?{s%~IU&Gh|ntSe@X<<>4ro`~Lkpr*VyP}yuom!56TS~D|vL`ELb{JS| zkFk>49q|_!{+H9$k?ef$Vp6F^O;Yxb3 zB#w^wYJ*2wy_V(60S2u3e+`oa5gNsn) z^^rM~pkw<>R>s>mB&4NY3N;@n9OvJw*Wt`}(n}L39KpE=(u7-lY$Z)H$n+$lzusdX z<4RCo90q=nWt5gg!(}mwqS)KeMQLH_>10V|*D}xLRfR_GtDqH5PSMDd=uDefGm+@@ zZkt3*@Z9PwUe&Ud6UI_C&GJV3q@rXPjl*`Q%LU)fJAUkwmfcrIi?m%Rs$R(YC)(EX z{&B>J_^}Zl%TmfoKdQq#c8u^U(=zlYjRn%Qxv#Kncd4@6JSGZzl+61&2F>g36~2Yd zP*O@!$bGVbekJDh_7x8W&X)tv`Rg_7Oe$|^|4=KLhgosGj1$})d5|<+%@rhhmUsZs zei=k|X7SX;yTQn<8Hb}O1z{M#o_|02=pt=BoopY`CDR|;nP?i!|74l}*g&kz&!G=d z1<>sL;5ACGw58>}I@PXhfIE2&pZL8)lQP+eQ1TiuK+(GwYQt+dtl6K){u*mjm5N73 zy<{d56T#x;SJiw% z%CvT(A2A&aD2^||MEZwGi+}6QO`W(8I)*KLVn^vhJTa9AQ+-{+zKWUn#Oq6VZc+l3 zy5pmM^yNgDY&J6RxSFgR+sl}`d%tNwsPi_rGmjqOyBy}bwI$oQ;l)N8nBu&2rYf+y z=+G!%HGXvT4-i9+gdrEyNGYuZrCHE-VB2-79FO39+fB~V16eE(TUtw(Mn+SJL}*YC z&*2ZPSzaS&`M1>~d(n8h&iV0%Z38yEk1UOF?S6UWC>#$S2%MQ6Kh+0ELeYfK`y#DX z_)IH&pxQTgG46nzt?=iIa*m0?T3ggR**Rm*Do#X&1c5{~N_Sg6+@#0^u;NNol5d5I z2RVA=*v1Df7ez{)gm0_z&3MDh8?UqQf>{S#(KQ%a*u?sA4zjtJ!5YeJ(&0kEYGc zE2GoeH=t6ri;n>+NuAz^u1Ubw#e@=QrfBmg0&zFnG~Jpxt>&u2W)uC0%!7+%3&WJ6 zjmjgSQ<3a3gcQT-9~FF0W$m9l#AnSJZdehjE*<>Jv`PO$2 z-CRLbF%XgLS|N5ys;Si2uT3QaKJ$k_RYdS|zGGXe74MdBkHDHY)99H!{4V||lOnL1 zP%lhmZz(Wq*tqfrzPnBPzYx`6+m<<6%zSnHV+&0Z$Sfd!bXCVD;=U#<8FOQTyQb4p-5Ep-Ny%M?`jnq@Li8$4ffoD?%#eXj1vaI zqa+kK`RSu5f;OyOQ&o{+7VC^;a?JmA?d7C zw39Cyx8jujJF;n=uvOiqU1LWmv1IbGB1uhY@i7P$ijiyH62><>eVldGJlYkaL!nRS zqEDysmk7UAb{JG-M~TGLd{NV*ddnr-Kde1(C}6GcsNrDnz#^q76fm||?`qW;l-r@q z(h%;^0VQ~AaVZm4FXBvPT)>N@3#(XvI^ zCE1DRLg@8Hx$26Z+qmZ5amx%OiHGn2G4k z9z{%#>K0QLsTDD~@8TrGz-HEkvE^twf(9Mi^x3ayK}fKMXiAmaxesemb&j&w_|B(H zv}2wIuKl_r0?YKx;k`^!2&@KwY5%uxWcAcwgS*f2drcva z@9!B=y8tifX4mi+i^)fbMoLS@g9SNWUwxMNfDLd|*y7gEm2Sr+?Pa~-$jQyG9-o_| zW$tA1|MGj({?d>yB#_&!nX_dx&u5o`nzgvqGq0DI#Q?FL4%L58BwqeAv9D)PkYu2T zdq%HVAP=6sMnV&>+ytmv&yaTybtfqJ8?^ERk9Te0(Li4p+mc~#HEsofd}rWd;?&Zc z^OYxrpKnX&*Y<+=fz^wT`)|g34$Dt05UjPGw}!6-Pd{>|?oUq7);G^D2Anyg`+sdg zejWfa0cp1_%jTWeS*v(pJ&iWF3g>pOFc+F`PKCEgSc;wE82+J;_DUIi?x$R$1BE2m zpWKAB*@fi#&OdEy*Imlo&^+7SeR({;DndLru?HP&iy|ogh&>^^aAk>6VPJvTd9hJH zR*LfFQvqOBOJFn}NI{))a`52+!y}&#L?R@y*9C57TZFI4znK%k*i7+k*c~!cq#oZ4 zokV0r#b3tKPb?Oxjkts-r3}FAw64UR@*G(263j3LyX#08t1W=0$Iv%CX@-3{0{5<` ztIaC<&!&N!BQJXFTC@R4$&g!X?ITZ6t3$(KW~b*<92SwJVob)#0~TX%fOFTE>G+V< z4B6c^M!02DC^hQBTySqtB$h`bw9SDpMGpfVy)_+yPZvdKN`y?ly*%y7h+Dp8=+jyS z(0g@Xik*k((^?Ayc4NcO-PM1=hXF`m$}p?ZZ7nORg%yf7Vndu44aD~B8#6}*%=>^+ zwcHR{4>UWffU*9yEv@-)`H2hiEt_~=7!ImI(N-c0iXib?;Bkc zDEm&LQd!`5PK=-k4}6R{^al`R*?fgmf3Hjz-rfNR16h8*EJ#w{I~d2yv7g6}uZxQp zTQmrTJ0mECT)=0H6R7OfGvxZy!#RnJOPDS%QV4_%acU)&2*~z(1^s#HcE}k7C*5?} zWc$FwdgExlZNjY}W&|*iXGGRG#9G0Au1OU{wFR|m&^Swq&~Sigh))npA0*{Hy9{;HV$1e_9HkiAyT%6C+cPBfp7-AB z^P(sol3jXjphl3>_AsEz!kHOZbzgnFN=p4bK#t@D&k;LhZWz5M?s@)@=7K#4Z3uU=x*QRYP(IU55q*qx@j8B5;hM!I6OCPeAEwF(u zHTY#mS_kRRPg|B5P;G6m@Lhy2265ayu-ju3&dWF%Ped;;K`<^UIVEJ|uGCgk^1~A> zsX#I4_(yK+5?kiw|lC(PRVDR#~*v%naqfLb~NE zPBB~03n}m!S$C>ZATJ7gpS+pix2LYiGa!KI!r)9wLyp8ErEZ#8^_CCeg@FXWOXzNm zZ+w1txM?`~A0g!M|MhmUUhaJ1!S!AH84D9FZh{4+cCPC(#sJoPc=FatDq&z3p==C2E)5QQuI6cp%gaMrI%Q zd2S912`-8U4j3H(l@aYabXo3hZ7<)v9vgVGKKbA;F@QDB0NyX4vB#N$^8E7NOu411 zMRG1WjMR4zF^y1XZV2A1#H$B|_&RY{Lb)oU2P_kNMC{SAdDZ`?G7= z-SwVrGn;9ji+x`Rf;dI6sI^Kev4YPQ%c2RU)}9WUyT3HHgTqm|-Nq-4f>3D~?V#_r zG+X{98K4PycSefG-*zx7Nck&w`w&U(Nh8q{_B%L;)27?$O*u(O7^$NQ<>qF$-fd2d7&as!sTu^_A3r8DlSH zE1>0ch>~n$*?|#^OeK-oCr##{ghGh07EI%z*UEKUk_ZNP#2u@-yJ*JO=W~*@puBfg zxIiNnF+6a@asQ4U(qNZ?t3ltjB`+4t%X7ur+p8@Z261qP8VWNSTBQsL)TyXIh5M@Q zcwzs*mPr`k@qIh)Dj~aGKyLaj1}t#(Qp4!5*0`3@f9(|V{gc?MpH&R$`)4E7t)i4C1PP4kU`gNMvMVZ`eiw)m79-*$-0?nTi{|*1Rl1u?mcnwlc@2spV|Jid5j*`CbfKPv zc=JKDiznAQwSCSdi?DS;F2KO(M#N;Z-K#6ocdcINr+(G_MYT$QlP+O$0aA0ykhb4S zL$042b5TY?{!+G5Z~w(n@LLi+VJ|-EK~~!PqDUMEMCa<;ozJKDP;;&7&U;(a|1fDE zIB@hPXy8Y2ADA!lGfUAMYHHCRfukt^{EC8r)t;}3uztowYqP`BWDcm zVl#6=3xt#ykT>~Ybjc9!DP>|@A5ubZvC7uRm zk}ZsLukdF@p}=3h3`4YTG0bAV!(!B476B^?0jE)_B zf}O(&qx8FP_Sp0tZ;DlwSyR6X%r#Dd8z%uRM|6(dl)4y{>N-!40gg!&3=VR(5H|g& zd>_X*980u1ZXGL4zo== zB^naCM5S$9jrGGb@4~}B7}23JrK#+8J>_d)S$K9#o<%N&c(^9Ap`wAi zEQP}>6cUN5zzHOf4beT)sf^G0{r-JZT;cXU73cd-7KXT423u(D+4d1DZXo`cSwe|C zo!N0+zTX*iVeG4M5Z)R%o`-$^dv(!}(i+3o8r&>r%Rh)iZ6IB84c5;cS6^doh_7xE zK?j(us0FF0C&HoCemK73YvBk_4R%zJ!%|Ap*#}&nZ6;eN9p^amORg5c$`&zh4=OGhhVP> zT7d;~sF=XA$TqVNo6V+VsEN!E@@0!`ZtV0rF*>QDbJ_^)5j>i=b$Vr9nW>hmuVOAL zX5^Dac-AqNSD~oJR2nBbVJJEis?LJzg%&)ZC#N@;!z%@UCB-l^oRCqrqNgUOiya*T zoCH(x`+HCE9v?X-P;Kd*iRp$t0j1z}{f7Fl;X5!*WjI6O}4nlHr_(nb7V zEa@`V7RmK&kBO{bWikfRJR*4TM-T#A8Qab;_IfO&VEdx~O3RR)@|}2x?&g}I9}4wo z%Ot4+PkFf?9RqReatFZJV8CG4KVEP6nVlr22C4H~h!F0tuoXEf@d6xWY%sGHS47Ms z4zYQ7)Ly2z5i*sLI;iLW}7aKxX0&3@=+HJdO3hPRG9tb+FDbZieM z-4z*u=1*xlx;X!22_sEQW%&9Eg~^dd35BOmcy^*E<^H*nOqg*n(=%9+Cy z7HOCD`74-)wCe-c10tA(9oy?hE+5!UbelHobshqVd4J+rv6q$V96l%3go(Ke5>k0c zg^Q`JZEVy0$^$}3R8h91hrdJ~{>}sjINoCUdfM=|;0cBSb8;$X$cFc$kPduvC~mNR9(gb&DD@Ejof_EGE2HtHIs{ z)ptNv7&6vG%F9l`6~)tD2eVM+Ol+27)B>tz5n^uHcsjTOm;t*mlKt@?I-;$?dJ2bQq_AiT%d-7V0)4o1Wk#fC zIofiC{UM9okAT=>(XzJ*zutkWpS3QTDzljG#A&~0lLy1U;JQ1q(OC?Dk}#lH3(64q zP3fmLs8dW?#dtW8U%N;GoRh20oQ3b?hR(-j_r+uuek#lEy1FBc!c)Y6 z*=|=-QyyoD_TBkEIfP|l=>0<~NG#m|uejiqCse?c4pzxg^p5Ie4o8wlqbNn+eWIas zwby%Y1)gn{Me0O{&9N$+7Qqf>YF(-lO=~3eUDg@g0!u+%mQ~~c++0F`+iw+(u(Ca} z>bB-H%B30A4TyKR5@uwe7&;Jm)G1C6na*ofQfa46S66vsT7BcaO3u4CGH`3V%yQst zV5XXV5Z!iVJFc@Ru}GRon&_;*0|&$=^QzmTF-e;ss-8)nV!dUw zZ7TaZy&$mm*ce^1$%kRLGrMm9r$j?x`J869zE+PuX&D*syY#l8fIcc%-f52T@MmRy ze8YlGQSW)M`VI~dOGhpiu5QN`*(UG9Q^F6)d?y8$n3B~=K zUP;xst5$P|R^VG*t~fd=^JLHp4z=1x2ew=wv)`d8kY~_v0w?QhRpn)DIrm$LFogxp zQKGe7NRnSu7SXucB8CrrB=LrY({k0#>y3G~&Qvaome|-VI`*f$@;C~Ev?Ph}io9Z5 zAyK?ZuTHKkHK6^1Kt?&m7`x!H|9CMz=DBveIfm6VFkW~}&-A<|mGJfKw(Ta!bo8J6 z8PN(%Uk@4br#OHMK6twJ^FtBa53$(oOwC*Gj zU9s$Oo)yt&Ew^lJp1Kz}jMeH0&bp%$FGpcR-+pb~i_c2>36rvAei`*o5iPGg2OxMT znIom=_h|Fw-UfZL0?KPV{PQ)CtixDq^rg&E3>Wql3zaIW%38X|0El8Gt`cYH`Aw*! z;GZ!Z%yppctrI0GO2s+1v9>>m(nvsjBwQ4jhF2lve`gup^$CJ>c;b2A3GRrQN)MCG zCvL8x)M1uSfYGA8S)hh(;4L6~kZV3g%py!`_ODUudOAKbl*@H(lB(Cl4uJx0|LMNJ z?;BjVaUf$OFk&vf~mk9j5bHI~_(!o2aB;IGr6e-X=PV5 z*J^5WER5`T6~sY`g(BkY;OA^Cpd{8eZT2RvCLcV)hxn~t69^I0p>gKQKkpDDKsMU@ z!dz_Rv=F%Ny{)BzPrBsah`Do)(jlS_Wm7E56ow)@WUBEN*CIiKFKE|?wjVvNY(@cg zd7oQ^x18r=T~uDsD=2&fUop zpkd&a8)T162P)D%p8;7wJh|!zm93>`69$sHq5&1Z=cG#~iWI&W!-U4sj?37yerWIMPQ?Wi+m`@uPb? zEQ{w9(g{hwo9x(6cbx4Sh93!Hk>vmb29e-Mp_kO1hf3Et{2?nKsB``^IItq;l<>Jd zT9Yj1@|gNSX}vrGKdWBNbeh$H_3xs|&|g=0amj9R#r8B6ttZU~@drf=aDTE~9vCV_ zr(mQycNVAI{Ktw{E&|E}6&Yg;UdhHnZ>5!@4&?!lXk;XMtgO@M4#(?IYT@NcrjQ43 zTdLn%bfY_1KuVay0?%-KCVZjws`}G~TJ@ru3GRg4HO%w8cmgiAv&Vpbsb*+|G zS~-RRr_HKM2cyRsaf6Igc6`t-YYFktj(*Y)F$?_)G*9O1TazX6Ojm|fR4WC$@Xx3} zM#1JL2r>ha6+G(O24AV}T{?B_Td%AK;%V|YSf9?Hd51qZb+;C6>J7@Nf~kaEYy}J1 zDLrGTx}C3GK&5{^L3RQJ@q$LvpJp7wesVoVA<7To9LZHfBgH^jCLk|n$NskPM{_0yz%Y75z= z8MJFkQeht?Dm(&1E@JP{@a1SxHl7c?EGw^;rW|Ggj&D8lFUhSJAl!xUc{UsTR6&c4 z)uK-uqGn8EeE*w0QPhG8^CNvB==s)7Sx93z&oFsSs(fsiRmBUQa;!QNYbi*}Cd);> zhC|&*nXo0f#l9XM&TF-SW~rQ}-dg|DU@^#fvae56Gt!iT6=6)OVe!*5|6aV|X?*0L ziu#H8<@-0(kaZ)!8V#lcpL~hmUgChNI@Bn}U@x%ni_rw!pCCq)Wf38~j6UcpRI?yz z4DB@FIIJCv8D>X2UBd!Hl8~h^bR0I2O!xyI!LVmZ1#~1(B(g}h8hsX5pg-A*%`C^i zZs{4Vq|*oqo>ifGyT66|&h4D%_x|*< *1Iv&BCmD-Gw07 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 MjQqL`6yUG_1tX=3b^rhX literal 0 HcmV?d00001 diff --git a/RecDP/tests/data/llm_data/document/layout-parser-paper-10p.jpg b/RecDP/tests/data/llm_data/document/layout-parser-paper-10p.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e43e871b7c4ff012cbf3eb175708e2529102a0c2 GIT binary patch literal 5191434 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�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�h5NVp;#Kc?YaT@SJ!-FRu*HMI$M>-1k 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 i9_PsojML| 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

-O7)lF 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�Wp@`DpfeJ`$b>87TZxkDyw#bNqAZ>|w!L z0kmSTUd&OsDm>f|B>sIL7+g2#H|2mC+Rtuzu;=PvHM3p%Sej~`k3y3Wg1v0T0=cf= zB4d9?{4zG^G6g1a1dY-IiH^DU`<ks@UZZ6uzTpXv`QII+~kpX*5V+pd!6!U2m#FY$h*^M)QU z{rdaU!+6(@zB-w``P|vdHp+A}zb3kdIUKaSxxv|UB9*g%kJX{Wv18do%tYzb{`dnP zu0ifu2xWK{&Bw~|{=OsmU2M}vSn4Gv1jYKJN71}4`_ZJ$y{SI#NPvtkZBFoo_MGCI z_uR!m#{AKZ`m_58oU$YTI{={9ls&`1N<(pjs*&%CH^wMOs&{_4>%L}sk^MR@>XQd= zygtuyM;Zuk0=qu14O{<3^4V}YMI>o6&2Ka=?<>ZOD8a7N^e2$Jk1NP%COxT1@W++l zjWKL&HO3`J?gx4_p2j)9)zsWzCaiTWzu_qv)1)xGj1ybTf=gIuU{jJXPCzVF8(|Z0 zSLK?f$%Opp{0rMWi9E84T&$tG>-_9nTZYU5xabYZm+wC(QKVAP8nX6CMT&(h07^;m z<|}Jg!piu2sB3(Ou2`&eKR}l!1IvV8M(FPK+gA7~iOB1J{#YNYakt>n2_-L|c&Vlm z_5KC;zxD{C8JlgR-rrB1l!OK?=^veXzB81L@8?BfroYovp$lP3*A^ad>SHWTABz+M{jLhWD*@>f|mEfzw>jT1)5iU;;}UT*HoTR*G`M=GnwfF+e%O^ zA1e{PqYQCl$Inqyr0}`IY%)d_RlX>&bpZnYlwwE5kL6^<*)Lnp`7si8i>Ft7E#okU zcqaI4@gsb?NBM@I(AE3TIWh?r{gM(}=3EI)%Qq2@0 z1Ysu=K@_rT%2e8A;f7v=Dt`WCZv)Qm06Ex>_ke>xl;8g&pz?_ggQQvo4z@xeB>g0~!HxJ+bB47Whq`mLPA4=O&Gg|9*3Okl=vs z@doS8rU6|8rLxoz!=whMe=>O1YYELa{pgCuexsETVB+_lP!$T`dV1QX`W zF1j}iif_&8gsPc*p|3(6O=S{i#xr1`oE`a6M;(bdNK=Z=GIfW}PuMG5q{I-e~zB9vjn;On8Am zIZpn`^bYIU{gCf8spAtp2VArnsNiNv%`r*kEOoHau-pgE{XZ_(|C`C1n)tBmF|PM` z?-SuAoKIR4E^VyMF{?Z}FJ@;x5-^0hyG)gwmit z`+;cYYDA{*QhbNpgYAZ3ZZUhhlT{I!a6&O=(NXap(GEWB zzuzI>>O-Efox0voS6G)ZZq;u2W6V}<=1VCQZaY81?;`yUJFg+s7Re>C3JbI7+dJ$c zj^8j7it|St9^X8@)lP$>E7UrvC^wYPf$#mRL2afSv^6 zWwh*@?-D;r;mXoifTQZ3O-#7%#^|)&y3Y}n>N}rxNpTfQ>lNlM$QLo3&-9l*E3c=B zsJT3apPye>V1XW|2{};d(*yF4GAkZo8;si**VF28>VI7%>>Br?cVqCeJ2EIRTDx=6 z3%3`EeOnM2^pHLhcKh;nC)8)lD$?qB=qmiWTN-v%ci!dbGSLy8fX}zV-&mI3u7f{H zw;Fdw<7&4L6oS`o_VJ8GpW*}VhJOUo1?uk_u9_EcTarOtHr+D93OC^Erke@>;!*kY zF5^SkKZ2uywLR}EG#VnD7mtAstI~^<zr1>|5jphs{x9=4&Xtbu0J-JZQX5zT1-O zect*U=oloKH?k$F>qrT*8`-EaDG?bSC8GPG738`jO)8OgX`%u3Gmigi%8)Ug>R$Epj?Nm+bH6|XKtd`xqsx*OgA35IWsT`IzF4u;2$-TkF zUuXSE!i5*-Fs0X`kLb+NVN_5y!BCI5Rn@YIQk4Ry5Nv!0~iOi;JQ&y>R)J3?$TW zKb>-#i0fmgT%t9XEQT|!!)dx(DM1wK;>rWCfR5>@H(i?ag2Qxy0=tNwRoezXW0Rm_ zOrE)5k4rqylI|2b<{UC&d`c5|E1gmlPgUb-$%ww^*{}Ah<#mz8VB|s2bD&-i9tZFD z_qi!X;tO#T2>lQOmg<-~us;H+UrQ5#>lEC!Rk@H$uO%~wZTgL*2N#(^{lBs&QAghV zY%8O}$r0+54Y@)70AnBH;EPy}m-s`{wz>rD_))~RhjG^2$Px-K$`K)zzr~M;UW2Rr z_7F!BB1=T>Ky~6{0el7h9}mi|a>jiw+$X*CwE&>Z=j8rXppLO5!QUF0sZt5T016i}_GKsD3R{^tg)-8sr~_g*P~>g8>) z|Clu5$gV*QADVu~b;dn3f-gREFYsOm*O}f=U|0pNc(W*@O;6eZC7LAKI4HnRsNfZ8 z{+UMjLbp43Ky8z`)&?QN>NDgz?o$0KfikBe^=qK}5JSRi0jw_7Mw9vz^zus1a`fF_ zEBTRccat{JE7G_n$GNTR?p8aVo1$4bjh90a*UiwAtuX~K;KhFA+*r=-NhwuT4BpjF z<{yFFH7PI;U608}LV2e~aA059h1x-IYc%4I?Z9bLRulI1b?rF%ZINvzgXA;*HWiA= zXhAUEWJT@=lUql)H`V<41$gV?rY=c~S>1NIEDShw>uIzyv_sW>?YG1^u+oWMXdzY* zv-o^Q`YU1cD!=`C@wPImHPY|+E)3p%<`2tXmM6Lils#;G_;HBD zFS84zia^f=>y^AaQ%?DX&r2Us>4>a-+}I*LHCxTGz9Y1dMa%R1isRXBIg{NMuT;%W zI1%r!SS5BV4Q`aVycHBQ&3WT`xLK614!_JNnZvus@{-q?;1ZYz4r^aIs#{v+MmT{5 z(yP#TtfU}CwSka40xWYEUJ0sFf>k#MOoMZ9_kTX?o2+FSK(1B;(m(o9n4Fj5+MTa8 z2u_&Y-a@e_+|6Jq*q`~+(?j^5{PcJ*muo;1eSeU z7bO`RXWZ&rT)9RL6Z|38UYd0anMvSVkyPz~UEIA}*xyiMTLj?6OMk)-p*(!wnBl~2 z;XnaD^x~AODMh?-qD9MSNEcW-H%ffH0!F3Q;(;I?W&Dmn#|~~6`(l&YZ!&4E>2H@h zpZz1~e67Bl!Hu-|*qv8U_qm`g!bsij){md1{zO~oL}c(WIb?Ms@D9+&FJkRm870+qRO(prtc{Uh)?Iu*~z3EWtGo~d~gC3D+d zK`c8J6m*s_;}SG=HNg6h;4dMGq=8_xkLk^GMVt2pLQlvFu*5d;>N`m#h#fPvtQ7m* zG-H}4^0G0MQK?$7W%v3fHSDO@A5qrogV_RRIyjkWA<;&`rroh)?yKby@nptdu z2_Bq*A9*`z%m0J7_YP|Ed-p{xbm<^PTIe7hq)9XMUX?1nw*V0nI!fq-5IP6~3J3~F zlNyRb=)EZ&fdmApq1W%t@9gv2ckVrB?#!LpXTN_ChFRoYZ&}ZJ*0VlE0dM|#YtQBt zbJx(^0g!c%yIw^nUOq6TD++au3Y+>ZuZCqUM5=Ig%z@L--tTuWY@9

sNubTSKtR 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

O9~QtvUL8dWOrioCM&0-25iozu1CP z{mwpqSWJsbZED;oE79E?h)-eFrlG-g)0)Tr`a;_O@FH_Gk_NQrW6>V-mjgSzX+!C5 zYcNSm-l=G;or0IyVj<8s$@plve*y)p{~nAM5ZJf;e1xoz|GX$NU;DPocL=pyC7}8b zk7$+kAD#>NZSwO+PWwxhMl>gA58f+dZi|v0BBAeLCm2MPlSady*(u+C`QyeQK z)iHR{Y;v)tob2||xSO4S2ckkXS zl6@~%pWM4^st?3XJMP-IFpSzv@w?B|13&E*smv%;cOIlNPph}wGXXKmL24|FlK`w| zIOR;x>V9NX<4@gCh&H!OSS*r#QR5;{pgaQa$HdW~MQ(=YlOl>U1?ww7zBzwE_e6x-3| zQ{R`{ACRq1R4J7b-|+|i4oYlCBdzd#Q8a-`c_w9XG28q0lk&#d9?R#DVI!~TAxT}z z)r(NRTwSN8dHh;5H>PZQukHMVqv0wgN@xi@ywaFFIvRCjtnQVS;dyY8qDzHxj|DLN zO2n2ozZvEN1-nm3O26(mo;>#v?`va@GUvihM$1LjuLl*7v<0JeREG*WXFA$rZ)~KQ zHgFps@s`OL?~HUA#hd`8j@7qP)Dr{+cuXusOa>3QxF!CIZm;LdoOyF!5fUqGBi{bQ z%OlG)fld>%)oZapWH9GF1=^|nEU)q_l0`G~^4zvg(?9aWEdAAlwQ#(1OHCDMmb-$! zddtKO9%l*dAA2jwHFs8+N{?&iMUG@}c%On4lslwnK$`SIHmZ$xKB<4MY~u`8++0k* zIWm#!Kr%23VDd4{|Moq3D%}FHSf}^SFiX;(Ho3Qw>yXYj7ZmLlK>?xMz1x@SsC3X|iC&3QGtmQe0CGHYOp;yX=DjmI~r zNDPtk;NIFrCs&*>OTj<9{2qG8Iy;>=O2JgbX2aDs%%hW#xRdWKq*nv;*zm@7g8rZc zr1Lb!PCFO&?7O4Xy8jRHM^9X{%xNixnPBOUZl7;~p*SJ`%kiB)gRNdaNPn5%zWfhP z!?NTbL1Y3xR@`xkosKryAxY!}89p=g>_1<;Y(f)N5`K=rT$u7XP0;g~9Kbll=xazNB4bQvV zytKS~KM{47gPTJH?;JlrDPc%SvAi#W7SS?^_(TAbLEpc`o#F0&&cC{Gi@}r_Lj|Fh zD$E%Dhb&;R0sNIk6p5#u13S=NmwvJ=d#vB}zNpN`0 zp<+Dz1lunjO8NjhZGM!0fGd47`j}$^|7yyBlsqHw#)h6 zE`I;;J~;C^VpF3)ipnK5tMKKoWHoBH?tI|?Zk1)gSNt%=~E=P@$;v8Pr;R^}6cPI3%1fRPYHj)7$p4fPZ(lLUap6O}Z7*@~S)xWyL znnWOaAAaJ@h@vo#+;Ag*q89hK#qe2zLOJWm+6{?tCTXJame08qg~ch7mEgv&wLttg zs;_k7VyGJzUU=L&d4A{A+FCQczBboKSn)-e-I#^(QDgA$(eKnt31u0-Q+aTts>mPn z45?Ao;clFJ>o-J1nMb)?CEW#GIbW@LMAtg7u~FK8oEeqG#Bzn{jOk2Ew}pn-gRM6G zYi}oaG+kLDRVIHSH zZgZ%y5Syfqj>GxYXZlK<{__t!8Qm5x7-M|7)wa#hk!GLd04fNh^%Ca}1m8B+N)IrBc{)tCebjUM zAPuhZ^$aEJ3g?wHa+F=8tP?fuhyEvuSrjVxd$)Ep$%$lXDzrdO?2f@rT zN!1Bx^Q;H*Q&wZug+~RA_xqW^ORZl1NAtO4AMV?uOSwCY>Uh_76lq6V>+3x)18K?j zA3%kF=Y+6bt|dM`^$)h?lud?NuC1r5u_q`RIMb#=tA^u=Q*NGoIsTh(Jc+hodpB+^ z{4>0B(rA$&##HP;3NL-oVecL{qjyz|Ow%XoXTPe49Ff+hBOn!1jE1_#v~ zOnzyRZ@~ACY_7HPz5a(B4{xNo9e?=VKi0Mr#O)|564?97NQFo41$sNuis}c1fV~#C zXv5n>3&=+fN>rHAM%xGSZg3!wAY`)O55qX#=S zYRh-?&v!&enB&?3>#D(>Oo;_Jrv@K_xkUGUHd9VgRf7*dfWUNu4Z`?mC;92$^rvEF z+`xMKlu6^~Eg_x-?n3$csQzh0}SUFd7A8vn@)6uH*=JYi|iE~Pk zmKY98DkVRd^4^ZwW?5a7<+eJvu9pkE;E~->vCE>RrM-;*8CD0?ZDBy$!HlyDKOJTt zrgG7+yuSzIrT4qze%FN-g^OJWuG_?2JxEZDRT0}ULW_%oDtE+mBM-!WPBDdgSALbq zQXSf3#F5Q9xz3#CHl*FsC!)LQb3F~^Z41XZ)->O2ANKVh*vd@7_i5RC!YkIosl6<> zPUsfAN^Ev)9=OsD5hi@OkI`(a$coBKR{4D|9hctdZW~0BMc%vieycl(3Ffz6vQw9t z;WWkpKL%6h>nQefNjl!*ggg2Gl`@GYrMB>ZkZ zOsXi%*GM8>VMDl+b-z}H!Y``?gGwzn#aC#6jS~@~!x$w7FB+sc!tco>A68G({+N$c zu@ca-95YaAX(J{f(xpxsnIuYn}0fsIzM`ru5h}sJ8{92z&t95 zplxD^7`(5_xOENV!=Y|78Z5q8r8m0c@;sGBB}X^gv|`^!iOFrjLgn8lvckM(b5_^v z>Yw4D;sl_bRdsl}e_SeI|KUhyKsVQ3j+~eP`|v-!gd=mS!FkcJ?8RVYi;MW7PE|X5 z+Hly{q{N^AnS?p>}AMV_!V{#_m~U#qd%9nX6eM01)W@ziDKG70QydWz}b6v~Ia zY5^V3>^3m0e-KySQE zVl!D_Th3;-En~?NBNqf36}*0#$v*5dPdIOU=1sD}y4Of4s)kk||FB*nb2B^bSfafR z$iU%~jqKwIh?mZFk|Ou1@=J{?hHxu;z^Ds`p&7r+aReP#$ZR}Cz^JF1&wOK#;Ngr* z{7z(h_tDXH+NqmTCB#oY{H5wd{nRt3;PhM+!p^Fi1+Vh{K6{T2jz#Wim*?ocTcj*{ z9si-QEyv$Kd#GbuK3NL;TDyIY8H8gAIRp<_Z21HCZXc&%CjyMO$SYk6duH6@Yr}g? z4=?U4eaCS)@2$=CYna#{VR<{24A|}?%%i!fj2{b0_1fSDMAzQ}pGR|Xm0Y@vca2r7 zalKW7+*19yl=|6QSZj<(F-z|={~?Nen=ec0K3N&TZgAFqe=> z)epKQo9Zq6|lpgQPe_hfNlXFU@6A%E6yloaf5${;qV>L<)G@acnN>??SRF z_(0pvY~2L)D2s+_gUA0GMt9{&f3uRFqI2|RQcr2f zz5nl5AkcE#QUlmh^e1w^Dt4G@Zy5IQ2gcTl8; z8Y%9%@3qVSdH0uRziT~f?R=UnhD>G{uDP!BJdWQ%axZ5iX<MaG{g+C#_vw+ zYt2!03`9<@XIk~=NkxjyX|#fP=l7HepHmfFwAsw76uLu{#4+a*f>g}V2PSSCFwrg? zvMY3>H>_bOH+N#Cs?q1F0&|9Rg+cFFAvzL1vyl0g+T330p7?suI2C_=puy6+tQdLQ z(lB%~oRDrT<1nXfUw~361r^EzGPHwyeP~8fSjjC)LjIf!0L=nXv-MvnK1<7+vFN;; zXSjHgFjS0>PvyHySH%;4G{d~3!3%wQu&DCG%$tOk+~i6IGhH29&o-9|eN|lTQs2wX zzLO?|n6c0I(-iYK{56NdLKn(A!=B_bQV(>cxBIxIZdYqjh-KIkFSFzX76ZA1Ctx=z z8YmDaK3-2oN-B}BlLvJQYVp5k2Eq<75To4_cJGK~x8qicjP!t&FO4fN@Z3b0M6B&? zt&WUWD~L;htb}-GTibiy#(8$h!QVQb$;x!nGNN;bfx}&SI17 zVo8ry#;G53K@D?d(^>2bHqBt+PgR6sIMdL9!qDa-D$)%Yz+?h zG>%paHN^Wqr&x+=;D~>8QQXpk`SUJ=vzk5A5PNvI3Rt;bqA=f{Krs3>6pacR+kDG&rf}rYiD6V4y;>79=5g%E3a2N|7Xi&dnbjx&KniPyAyF=33Roc!API z9hn2o#v_kIY+yIzKeE{4br1xi+ zVzZat@5UB!3snaJ7FmY_!D4Z#hn{Puc}i(%Z{6`&szeeuH>7<+v+dJm4v&T1i#g zcS@A8Db^IT+rbbbm68Q|vlPEclO`R70#)xs=b*!0axQ4fijn5|h8qpQ1%3I##?R+Z zg=GXf;BB2O0s~u-ew!q>qgKx~wO5r26OU1J$U$rtD&Uv>la^yKMzs}>>_S`UA7G(w zjTsxAomDAI+Z|pHd-9in>|@XyJf-CL`QYI9_kqb%yD2`es20c%pNQRXJDgUjYhwd& zv8qzVheUF5S(Jg?ETPGu;QT-Q8a4#kt#xmfMdP)VP2wkfoFsOxsbk>Kf9Q5kAEDc`JL%E4Gl}Ocr&KAD^@)z5N_XrGyQ#0k zHxJw&ou)y#^Ld1T8I+&R6iuMU3x6 zG4vaa`mF}xooY3fUV~#K6VS(**A$Q&Ll|R?I$&{`WQMPBKGQh423zI|cj;}(C^WjDyR(Msq0f z86_HNi3?J%g!hQZ$PUGy=6rt$6|WlyXNyoDRr z3Et+(M=kRG@yQ3m+M-dkWMQOdJgdyZj~NgH1D4kcp_x7Fu4x0$Kh2?DI~IkH%X0%S zg;%fdzVG;AHelGlDLgYci)qq&AKRq@qSi$@hSpn3cYm52Yec!9s~R|M%8MoN4!FX@ z)@96Q9vKc$(1hcz$7x<%t=rI!CHw5-hk#-KaR^@t5#YK6)!Z_buH+ot=;{SMwGHVEWfWiPB zH8mQ_M1S{T;~5y+|J3%d-g!90**Z)*2IxQE4AcEz5BERyp0IA}zKWn{pB!vJDuTlS z$Ozy%)ZX?1 z)K{Dc89OA`FEHOvu7iT##KaP_8%7yrx4#+RsOQUwYFwI8N*N>o#b=ndbnkzp%I!Vd znV(yzpQ}QQvrxO5)Eo8er{&z6{-ZSq5hB}nf1EYpBN7?uM7cPT-lGDJhdl3U{9U>Wf_{&zs zs%<6PJ;L3rhARo+Xwd}LuRhaJx3}iQshp%kt4{W8^y8Mg?Q0q@Sc0wup^shdDls%u z8QPxlw?teN7o?uqC>*ohoGS6=ehX-~2RExx4;LsJ`W8`N+m4y+t4XL9IFtZenPk5s z&&VOW`nUP~_cM5%lzNmJThO z#0h^i#Q^>ov#hLQG&=D6D}huqpK>pCNj4O@o=Uq10K61FpO($ecF5YBDp6$@coEjE z`;hi_B2&s*Fd*reRa%`^;U=V|xux07MhLVaW;nh_v^!#mq>h94H1f8lXFM#>Cajsv zPL~^{6@4H@5th>)?K_a&?F-FEN#w!PXN^$z&VTRE1Mc|3y&K|DC@;k@ssdQApta6p zOC!hm;c)u2-^#Fv+S?ieyYV^^nsIwqMKqwP+J-a6Knh7Tjo$41%Fh1Tycs9ut_*$g%M_>FgAZ= zHfu(W#F%bw{;LuDVpUyuX&?~zQ^nJts0*UiW!4qhTNS6_x=K7px)p?P&_jA(L5fA8oAgLbcF<*Cc1w;JQ(-{bKUx_&(egCW^b2E}N#V6fI zI;wxsDdu)miNAn9z+xPJa$F@b(D;Q>NYBzX%jGaL{WKb>T3@pk^6@$Lt@FE$F1gf| zu}|a`ul5E|JMS~3Xs9k8!;e@vS_`%;8z-e(<%TxDylhqBjV~4)-zxE$&@GzvUyIc2 z)ZdNam;xMa(Gvp!fmpb2O=c-vhWw?rv3rB#z3!*F1es|gnY;dR1GO&Xev~gW*A@%a zegRA1W>e{!)YyHd!9h+&Zf2CPi|MrJTg{u4Djd;!V5z4Cm48qaJHDkYx4?*j4Hu*J zsS0d*72%Vg5n*geG&lCHiLW6czg;N%-eWr6e_{~O62-Fb7CSgs^i7&K7k`C6vHDf8 zq_q4WgM|Dv`aS!~qV8uzs~(@ineF1}p8MYH?i5xP7&44eM!hn|Su!2@8hpJvF91EP zJrVDwu0wuVTmE!m$WM*T>O}I?drfwwPb7Zs#a-0);nr%0zTawWjw>ZHsAKzWTpSzEueK2^}O|j>N zdFwU$QczZI&VNk!>6!&Ug#r>aVG+x??$sZ+sGCT@ntMtO;q*sp(`kQ z_1=qgihQAC7k{bRaYpu+z?o<&i*czm&h1bU44~br;Dh>*c1cbhNnf0k^8%vhiNZMi za>4V+WIjaqFM;cCC0kA!M_!*-9<;t^92m2Sf6qdfz1br^BI*x@&~iQSA~5?O!x2`M z@;|nj?dy&CZ6meTNbIksS)voKdoML*5{_<*cl^4{oDWgn6&T-nN{Smp*$@LRjFsp} z&5uaVMa=4>fiZ_XjY$v#K~&rF%azqW2%-`7QRqhhp=g1Xi6Hq z!bd-}S(GI?jd9%-sR5ktA4O@RrTG>_|8($ZKOdw?G`xSu}c$B5T6usC9k-lDKSar8_+D-6F z|BAcg92HTdFVJ^lVrdZ7FGPisQj}%M98H6B0b0bMCXclIeWC5B(s}3K-9e#$2_8;^ z4Bw<0BrPcK?}qoCcMEEqBGvyudZg_jgH_YrYlX?+ff|@0ipNj23`?GPO2|(fO8&Sd zOyL<@E0Oex&f$mTRjikQAR!CoMu@%noe#SMHZ7}Mb|0&_6MZE^06SPi!9dqWa^|1ZAwfqQR|!ANXIO@g zTdRTE4>h5@QI|X1i{KcPXM$$IVJv18h^!S$vo4`ivN(U!`+!KtMk8f=mnup0*Fs$g zFZ@V`+Hhg96(I-H!{l=8?arj_+zW`U%a~zKalA^RMlo ze7K&$3*Hx{^4bje*048s9(HXr@!hO7s4#Be4^L9RWyzhmiC=0q6`8iQ(%c!V^M*`W z@_z|@2g6M!$#vcIKl+NNuDx$!;B#6?5dW&aH5Ak>`)SV~JE(#hs6WLAQELUDlUiM6 zI~w0)PGRBMH6b3{>V_$)zk0+{b-Q+0Q0|I#LiKmDrf!yBW+&Jm)->D&i3Hs%d_t@& zD>}s3fly{#G#U8t)ugbtU#pcFOPd;cJW-zw{HnzP6LtFJ)l z=$lup5)LUgX+^7SZR;BCz9uQzoET4)c7Qlb#<S~jPDR(LaoGWXWMEiD z$o=(rXSxT&jI}f;f)Mu!s(iP^%~~#XhJTnXI&pW{$!Uf3d}ZlfEYO%lD~9 zwNB%pvx+rpAN(UMRJ`6w+Xh>la8W(a16gpzpecy6-9(2ZZ1z(OQIAvRG(u;&sTbc{ z3Y&Jj!-MwO^W{SmXKIg(_16&(DrxBrpGCXrv&27$#{1xN2e2;ehMb<;fzS&uxx~rk_pO31@I}U^N9z|{VZA)KFxv0W}${%zH ze!R&V-9T=qe24EZfq5_=Ur6=}|9bF~lY4IQDsWP~*}i4bM_y`8Z|v)AvZ6Sr=(j-% zvO&Y)R1_m4m;=jlEgjQehvf+6$@@`%KDRf=Uwr^aD(rX4bCnfT2fXU3X35t*lp&vR zf}@U(*U$igMl{WIy+(eqMlnLl{l>XkHgudmOQ8tvCi3xed*>WVm7XscVrO98t5JEp=y0jwxX0mKEHs#8~&v#bgz#TkgUuUo*r91->Fn1e9)?;rm7Hr>6gxQ;}HTq+hA}+g9AC#~T?d zv}e0nvNTT=f6^8F{K*&63@HDIg#HqYjsd~K$m8Ve{zl*H2yEyCm(tLcK{QTrkoQxH z6Jt8;aIQ5_Kdfq2q=t7^^vX$69xxZxw*z{*e_IWu9v;b2UEdZ!*i%7WRgzGKYrA5+u$B+$OXoV zA5s1#hyz?nCgsdurW4eJ9bMHadYv@XFHKv+k3yx6sQ0qbo9Degc%QZA3&XdFwS<04R;2YwR-*8pC~4 zvWto4^OP;Mf2Ra#aLhGsGLhqru!?)`vuUrQpLpW>K%6gczLafli(r-+=3+&hB#dzu zzqn6+Dz>ovwn5#F{*iW_JS#wB@z}OwF5B33yz*SHgEP<6G+y(X<-Ex8lMfm9vWPsJ$7o%bla)DLk%90`xTkJF@y@2X4K zrQ;|G2#xPsZ)M-86O~er)LS$Wr;xP^t|mcr5FqxWLeo7@{0cfPYUr}>yxYoQ$I@oC zslT72Bhr)(K^4JVED0bOpm z+c4rYNwBJ-P+eThORlmL%E~Z-*q7BRQx*-Jt^A(n<%pYtEz`+-f$p9{r=+h)H@F|G zvj-PXd|Fldpb}{vdd5*(S6FykI`iOp<@|@+w&Y^7vSP%2d{G&##TRBwnVE#_rba06 zI(yEam+#A5MwoM|OwlSWJQ9uD>Q6Bi8)=%~3ipx|d(`UQWrS>#J^$}b55tQ&RxQfj zuPoss))a+|?hhsRtW!x$M?bE7K%Ei4&JL|WpZP}>HNU)FGGN>l`ha;hqftH8t%N;y z?|J1dkeHTP?`aWV)Z_V^djCey1s_j-^P;BBz8U^+rBZ*KY&z zmn7z|twaM9E*tvAfAZftv$i6}2X((qtG^WbZNiAP;c_`2eq{w=H;NZ(0B00Z4=_|m zKO(d`aj>Gsw|oq{73WDQ;ySTpc+jPMcUmz8vxk|w5lNVZaVBcvVB_NO-hto}W&Dxu z0j*tr*L3eaqqm>l%BIQfGAIlHCQ+m-08?da3bhBgeztIM$6)tvPxSltTiO)D&;X5# zG9Sv&^k{pgU&vQS1bAQXAkJ`XspPFFID#d&vvY!H(4lO(W}<*CajwEs+gXd*A4rUR zt+vT#5mXs&4vxgEDQ3>-vl-nj4vo=8rW4T`)K16spT(YR5%f zQvNb@q3huCLRBpyI9l{i;ys{Zp4MCumb=2vo6 z1JagHp46?TBY#9~ib@9BJe4sK-XDM-A&16ggWC8W3Shbb;oeb(`eqKi0Vf>ZcdpTZ}3n9w(k&|nKh8{F9k=@{N zR7uoHsggj}D>#=e@-;fd2K1VXZ=4f=iHkC=CUigIs2l1KAQI|ytWINPp}a33v56Uv zm0qc%qa0|ORD;g_Nf1d%?$E%v7sr%o;Gh{Jw2B-p?+F1&FRNd>a^Cz zKT_aXUbv8f-^#5gP~VYYncn9K5KMJD!~?ASo&2DKtx?@nz)gN-j^s68)XL#(m?A!C zHAA~Ci_GpzR|r*h@AE2#H!Ovb?L%7UhB0{Gv?41Sm!-!)Srt+a|H%FRu462KOc>rH znNQZ$`b>a8DeM1nSc(q2 zfk$j*M1zo8i`dn&fDf2f@j|0VEqV=-L6~L&#VEKnXBedRdhS(}=b3+;?rg#QiJ6n1 zgGvlshx?Y%Li~b--V;6z>$ze#JK9)7D$!fv^s1IdSHj`0Jbww$kVxQ(7Z`dn{axMm zV7kTeNS1%?i^{XALw=}*-y7S#X}N;^j0XQA`HGe{Zm?&go23Xot+zq4NaF4m1FLZs zHS?@CQPQjtW6w6{>|6|Cn(Vs+pa7Nux?=e%{fobWwD@iLa|mCgZH;;H49a2c!qSe_ zvS_n^>ESX+tOzXA0|)56J`4BNh_P@|iLwbMl&>Kc?Mx>1Q%TD4R(41rRy;$H zyD=c~;fV~HrnfBuBbIQ{zA}}kiy?1S8XGGsh&uMm&M_H=?`gacUd-or$h|)qg=V|& zeHv{X%k`7?G!c11;}6U#+fp6|Tb<|?d-^Stc;O|h+Dxw51W(R|PmbE$~0CNP6~xHW(ASqU zKr`;K6|-O;kVx-s(}IDZ2;#)!v(%{4@F741TnW#U7EO2R)9jVya%@vEaa)F6%4^JT z`-&8(@&>D~AidZj9(Nw@>p3@Q>n%5|hIQW)!*Jl`A{2jahu^abU&RHnW2w`$l;g** zHA@^Xtwi>vg4EET+eSIwwEk+a75WA+kdI`X^qI$d5(dZ04fHv>IUleIcezdm!_^myZV$ar&4 zL|mCFZRbT)uL^n1G|=;mVf=B?cK3Fwg$7raOF~vVdHptWV5abPDte3vS-d0%=-d>b z)0a96dh&c+u=#tFWD+UuJymK(2$zxJby3Lz{tvEE1zI*YNjUg=PbCk9I#m~B4T1(d zb?W!~cT{p7;R9GahVL~Vcpz-?TKuQVlv^uZ4aRI}l)K~h{Ka=D6Ki{@MEu~UTNmV2 zzbWkC`J2K^|Brm6TEy$gzAJRm(YvSkxQ;v3cWzGISReb7Y@XTRlOf?!f=B@4gWgrh zIP9hU3h_8w5R@Ov4q2rl`X;0DCue@6wr;v7Zj}g(e~k{&*bH$!YnQ#)k7`1B%s-AA zyEX)umJEYswR(S1a#Sy+Kk348*=|0v$1g1f0Ur~(`TaFFFty9qm64LjzuT2p@xCy+ zS1GxWXalD!GHAj^gccdsH`w4St(&cBg1-sUQ){n`=2;@=##gBWKJ3@y&-&;Q)S?gPqZ z_m|6k@Ik_{djz+_>~ji~u(v2K+DY0J0}B#Soq&Hdc?CW*tZU|GOxt1ZCINy?kbK(h zqs~dvhISnLN(JYm_m#dQpW+h;q1vh6*4u)9POnY!ptRO*$d7>nZ-x9Nh)@tcZ~I=* zk+CA>ua@J7bA`RY*t%(W!n_Ok3aed27TA)~w4_wop}m)uHX`?_c)y7}-9q^z?q0%X z`zB&PJ<08jebHBTy{%bvE56X@JnFOdwo)NcaRbN3)KN*gv!WcH#S6&*Ev$~qN53co z`ySZhH0s{`(HLqv9HN5@E@!#g`ak> zA4O`nW!R!YJ{A(mm<{P76%(>h$Iy#*H|s~IHkS&=>bE8)dC;FV4Rj|l4x8;1gY~@| zcy*D~3OyN)s7BkbMd`1T=-++Kw>~G{zP6cFrao7oOI)LUS=HmA#K?IP-oQMU+W)Hb zA*R`~Lyaf2OKf{LJ*9ruij=~VSeNGh|V~`CBIM$=r(!=sTp&h8+)KVOLNg$ z#706S*Ao!f?-KCdD@!Y{L||P&O?`s8r}q}_AnkBh>!`*(d7m12HBQc3a#;f2rqoU! z$t#hu{}5Ku4?!eBoLv27je`CePY0E)YTjb~nD{VWJ6J(r)Lq)@FcW+S!D>^!)e|E| z)Bd|xnP>X85-Mu>tg$t_3$w3gPLurAmy8bDq|Ihd7jjTWZ=}?~b>ySHibLWJp!U+b za#J+@u$FhF<&-uukta*9&UnrXsW_tj+`u(MyQc+sY~!L&inm>#opqBJn`-qmezn{H zTbCz)q{oJrqPc7d=2SsxT)c!(b)6FlthIzEI`E8)HCjY^WaZKH^igB2Id|3OL~@f4 zuClwE$tX!H>?>y*%oWAvfMW!MD-tu!tIq>NXla4=oisZ` zuir4o`CkI|K_$k!!dn~e@DHZ7dcft6As>zCyscmB2L)5ieRqF#C9%eQO=BBnKjL1gUI{He9d}k_IWJOss|XM9G3O&dXY#oDEl<9fm`{(JJiQ z72Oy+l(pO!-Ya6bmiZ;Z*K?2~#gv`+SP{7pwy1F8q6Uh8kdl-F-_LuT?5~aLmw$w> zS8}cH5%YIFkEw0=Jz_=WvGu#dtR?YGFaoYdAECjWttwk-uCY2+=JA%$W!_O7ECDD3 zM@+LBY>K=;tgYX|jXoi~XMDSDboWBxY#X;r_K37Ze$660X+>m(Z^LEH$^O3flNIeJ z+FtG%n#6^WS_`70HV8M^4-8rdc@e3Qh4P#5s4yAbeb#^9=vlTqj5(r+v(}odD1?Td zMlS2-NI+^2OtdyvLC(mr#{M883Y6-Ey-+tA;@t_Od=r+xEkZMl8&>p6810|zG3tBl zz1JrsBcxjgOy!U>m0bHrBplz@F15$yz#y#k7r5N3Da=Gi}*omaR-~#kgCQa?dmt`rqJ;h!! z(plj)0;t5X(N zBrg$G6g95apjwR~|Jr9}S|S$d)T|STZi7ISR?kS$y<*eZEg#p7f4wTFnDuL(=x2Vi zOmf?pm)|aDz+r2Kd3RQSqKOa-SyAy#vBfJ0kJ&j;;p;xu`G$n!KBXi7V%M*S9?rT^#08%Qz@^6 zZnYq<{t+)CN!`!QA6;{~6PU1191V=_Q6-n3Mn0d&?Ux2wV6mw)hkGVXP5<2C0z0IgQFdaU;Rcy&?XF9DZ})S4TZ zuL&QioP$i%qhlYf6CGH%G4~*$n@xd_8y*B20Eo6s)|CKEUXV+h3smjvYEj8%c&17! z&T?xRsXg#RSvh={omzh&D&0}&-A*@ks@!V>%xr~T(}~s`9Y1-IB0^b2L^HY|e(jPd z-KMF>JY^)mP{#3Yf!#Ktm{Sx=Rg>tel{~Lov=(3(-6@zk;RJMXYFA2(`dYYYsa4FSx z1+z=>=skf`x4d#hU(H?g`UKo2f_ZF@H=MXrC$3rOrylOSp5C6xnsgno8H%=CFeNU# z9K^lYMf9!hsk1HdyNh@jFMNbB^tEzUCoMBHstbrP$}-SJq?M#)&*W)^eVbjB<*lUI zPlqw@ig@Tn3we8;{I+v~UA8?bpN}1+HNAV#`8?8TMfhW^cv{aw9{9KRG(hX*kmp%B zALJ42Q4UYUGFRAjxp4JJCd?aqs zC+dY=BGmQ7eeP!LR3x?9GC`YkL6V=Yc2W`i0?3$MTD}3#Jsh&2@9hfRGGxHKFhHhB zA>dVg;*fd8eEfQX67#hgKZj@}Up;dadaTNjsfDYN=;lU?`1_eolVPLA5y*6jgN0l8 zTvGSKOyC=)Q0jnuYs5mkQ){&3mEiJ>B}Gr+T7%f3z0(xGUU|6A7ahz)j9~7M{oy+k zyn3VH$?!?Vv8T==mhG93Bqk$IUb z)q)ZvYsIH{^SCMP-n@am!1r_}7c$Y7MEz&$EZ=-@sKby?WKrIML7ySN|M>P5oX9lw zZhlE=s6JeSKU*(>ko7PIwlB1|L^%Q-0Kj9S?O{AhBA8CxHvjv4fGp%bs@xVJ0QDN9 zEJ|WEJ1uv-DEkC5dhb*%KrR&Q$d^7%UrY}xGMK|h`(eQe;r-F^N$N^qr$|Gfyxyr8 zD=*tN#*tbTH$06twx~bXyBmSSTILu%rq!(re?7OJ?0K@sd_85nI*L@YIhVhdPwbyv zGvTPv5Vx+H@0p1xj+Kp+wa>a4s~N9)S`D&Cm-Q=$Ys3VE_I;JRQ0z;PvD~%P1gc;L zU+8o&MmM8nY2z=r*fy`YiGBW9acXG}WqniF-fZ+e;Vg7e_17&aGt3-Rfq`$JX_t|$?#xcD6$->F*gfZP z=;lRNyB~md3V*-q1-f3Un5m=?5p2RM$TG1jlc+a5bZdz;K>QF%n?W6tE&ri@;h!g) z_v%4ft)HbW5b@dGvd*_ynjo6hq8KM<^ZfT?Sh}kbSnAxD<5x7XfRU8+waojDpMMGN zTqd6}qw{5t06ow5-JP*ZKEcmiUijEXw|go=&eN{8W!f(8RvtQ>8k^Vso#Yab1_Sw_n+iasJxkNb(x!f?gM~3H@6|y(2q8 zBL3`L*n=mkeL&o|Zpt{I6uWBQiO<=7GB=2GJJ-f2T<`6)-u zzb6F9SVuh+V~;OH@;dFeFpJ$&N!>3${~iLhS!NP;KRv!49%sdufhMO2B1ae>RrQrr zm_6A?+TeY;c2m#|LFV3bXGl}mppkyHBi0Z{r?ZO?z0Ji6bQ@c*BvNVBpFs!VArbq= z+(PiXip<_Zd9t!NaCLU+=Jb$ngq_~J=5Uo?%7o3GTM5+`4pn7uE7|{Z z_mlPbGXxzol~fMR76$;UH^xoQQeLNlE68g)&4+N*8g_NhO4N(gv(Nfn>l!uCxd!sr z_HR)J=Jp&aSV_7^f>Olhhiw++zvoEWE|}ddysoNU88?q^<2*O;{@)!!{=fX*T_1sn ziD7<=X&%~}e1mK9R69sFh)8(=5>EBx!HedcxN(6W`raSAw;XoSOD)Q)3~OBcYx_Gn zZO7=C+wH|kp)HhPCeaaktgxA@h+dJ;z1X|n0K$t#gSy-Bns)^%qv)r4?T%Je*}Bs| zw=OA@etT#E^)Sa_$5SP#!og*7I5*MX<&3w|FyB*BI@4o&tZeD?;{b{9bx_q9J0!QY z7YDNwn8#PH`*4TsnoZt|F4N-%j9)F9y(p%yK_A1LISK+MELDyNkXB(E{ln>w zvOf2by)=7lOTva{M0;r~N+p=D{`U%d@Oc`tNS5Dgq&?=KF`Dt}BZlq>AmXbKw?w%3 zaSY~710~)6)DqS%x$4-5r?JoH%1RrUx(l;IKXi@wp+x_BqZI7wNxUaR^f~5FT$d7s zu(OCrIzAAcHuR#;25$*+AVA-q6vgRqx!EB6t)mNX?kk}_DgBx_-Bl9*o#V51Y&Hq4 zxEQbTo2@S{bI2WF$bbE#lV=_%{Bi^B6(=5)$=pX0MWfoFaGFcSWO7Rti5|{Eba%rjbTpWTVE-}ZrjjeH;_tUC~fx@t^gR2=!Phns07m+TT7}*IwXR}V#sNa zHQM{_!TQyN?EKbVi@7Rky-S1n!b8vTqy5h-l4zPS1&QV2i9$oFw-F7pwyOaWp+2^)N4Nqn6X=nUMx~#|f zNwo{UK82>$iDiWP#)o$W@znVoBhwA3O+}g9jzrWyZ;FXeR|RbHxequ*92q5V-lW~8 ztu#zqxH1oF_rBv8_O#djil`!|e|^6%P3{?P0!=Z%VMwpS>!LKn`z%*BJ`P4Bn~<)g zbSAK!!1>{40>iKx2bgbtM1#rl7eNYa7RVXz!>$WwL^t4loev5!PE2Au5{}c8a{S37 z8kR95^CyeOQpMgz+O1DjRZx zlka)s#7)TK&o6~Yk?W-O0rd@U`kD)N1n6j*SZMaZ6lk^EQ;c131vN}fBSOhn9HjpcQS8(of6}evcRFjL#K}wV5h)%s;gg(`dK7 ztYw@5JuY5At;~iO*eePwU)suMzuhw>rQbwz8}C~*wf^o==ez^ex(EcUAL~l0t7$~? zzs6kh@1ZvdajRgFItokn(mn-;4FMpAklpe(pLRipp_Wfln<@*;O=^Yl;B>V zREaLqw#=O~uwPC;PY|Y5^1YRX@}hbzpd=~hHecluG3qN7?X4jJQ=~v^YII!FGw4Z- z;95-ZuY2MCJ41=R-)ntZwJNo_arEzkzI4oU{f1BsTGjN5taSA2i4o#uEBZ+r2k^g5 zlbepReW5ex`q`!H5=RdYy>ZZ567J%10Phk4ovc_BPj#j76+PW~2F{4>?ck^Gghhk} z`Vyq=HXj${oTwb-@D}+ry_ZXE#H$gPzGQtRw~)6oMCGHHwlKT1%ga7Pv?zob5C3YC zj3$RWe>$WcC46=p#F*x6K8f?vsT0YG5O*tq6zuX%NCo@d3VfNb;9F=;Io8rL zH{xYA&8*s|)p>3{G5ebfV9WDkiT#&&xjZR|e7~4kwUA>H`}A9KBJMU z@RVEdJrT%JTC^QWRZ2DaTB9t6I9a2?Q>aK`olPU^uq8y1#GoMSS8B6oUA}0@ZlXsQ zc!46OX!kF{@@c{608?YH^^gzCJ4@{zV0|9)hdo1cPlxEmpV2}P{&q4NBb#&!XGo_% zhViX|62q`2P@3`{7hP@^D2VQ59h^AF@VHNAU=jIPa)(x^O<1k5VV5Ld12>~B(G(&% zRO-=i3%Q70qa1(7-G2WT3x=jYxJxKI$Cq(+HY|bBQ6%ttdAfLedaFq`hNo@IVf-+t z^{0D^p~2m-;16scfqn;6$k)Fa>AlAqi3hp)Qu3Es_TOd{`H|#rj}Tyc%c2@sWG5d2 zKLYyGrr%*%DNv#+)K`Oz8r_I$>{{P!DbH`CYpLNBa}Itximti?&@C+KS1Qh1i{)dkxYx zXQKj-Wr|TsX&cpIJ`Z1_L!rk! zV7S7RCiEBWREf_x>vhJKbY94!t$0r@?NZP1gpJ(G@cbraCp0>$UeUrPFv=-GZ!`Gw zBTh>10f#IFSe#&+*^M=$u{6E|>dWy=GA5MAp2i)$(n8|8BNF!ud2^(5fO9@tN^W!B z;#0jOEA{#B7oYdf6dV{^NkCr{UtHQGcpgJ>al1;lum>!%d7r(m#aMFcUfe$s#adWi zm2QRwO03Ts>OU+IUg)+*`TV%&z93Xj7^0Tl{(cjrGA4ubXMJ7Rlcyq&jQNyw^>bx` z-Z1ew3lEKq4Ll|4b5x0Mwx`~Bwt)7y#WO!GGDo2Yeu)1=2KQ#NGdDw@8UND}JDPp(}uDC_HTf%0>r1py4Mne_2J`HrkW ziR!fb+G&HW1Ub9<#EEKmVE0$ySe7T0Mo4^AiC2(Pt<@2q%&FujTEP!6oq7T9BhL|r z{_kUXG_)0Rv@e*4#nLMkJ4Fgw7BsoewJp}#s<#>^O?VPpEqD291O)fVoPge4pv00=EPU!O(gY`~EC<)MPl(G4meS+0k{Nr+cVV?RXC-RBAl z=1!hG%})CBQtr(`=9XGN@6ingtw#n93QCU2e_B&k#fG@06{OV3m;}DrlbAJmIAi9K zl3+WC$im(%AiMunPn6SR6T-A@#n?TbWcv-*gEDiW)ikOPd>&yR>nF7@O1DtAMmKlp zzJT^r^Sq?5+TN1vV7C$yrem{W;t3G96V@(D<3h$AZXkDneM&-pOqIPXEYN&Dw0>Sv zp3>+#pSO1_$uMnEk`8;@{J*{DrGW`p1N zkHmD2mQoy5(M#O+H5Ex=E0*gvZ*DFeD}nA6{21_BbnR+Y81YpeoLn1}6o|2_f%Sos zj8S#VNg+S?k!2?cfMCPw+Z{Hr&BRE`o(ea1LnsHH9H55H$7ZsWbHeK0iTH2|507oL zePjiQU~R;L*FaT!CV?7QdpGX?DRL4bmJz0Q`+jW=fAOK!N9XnYYcVj7!$zE_hV|YK zXS`#Q-jXI>qbP))QgZU}x^+ubbg5NR9LFcDrni7*TthgQ?}`C?>9$$%6#%n2zv&i= zxaq2=e4C=CyeK={^*55F;ZtdFpav@szXTi&L{16lveG`n{Zj7=+be<9rn{zdX(Hc~ zDGcDLA} zskwsmbzfYUZ8+YW4PPpC_lVW%!Zi-2j-qUlqdn`f=1;ZRVo_4$Yl7-8^IKRS`&`Nz zcm%|x_G5?r6o_|pHRAsd-rh2(tv1~Erb2<@4#nNQxHY)6Xp0381eZXI7bsA?5L^qz z3KZAi6b(*`6iEVwAcf){?0NI-vuE#j&bKpj_PIY~@?p)IHTSx0UDyBm{kN)-L}l48 zzwimF+H~sGg~&Ux1YEw2^GtiytAn5D$Jl6H>0|x;qRt%Mc0K2*Dl%mTt+0^|E_-Z5 zUx4~82n@kWz?-e`>;Y4Epe@-@#g9Wq18J&R8-W&WK~f_cfLasMZyqr-YV3*}7lpe3 z;=iW!bxCJosZ7BOV`eTcoEJiqPF?a*x*g)_;lTSpNvkog#Dzxdd3VFhy%wkrX-J!Q zlU|U?-WzTxD~t4aw*P;8OKoRu1q#c5f)F*o7TNNKs59ore-#_4&HfD8({9!x(dxI- zg8Q3BAABBBI?_|`Z}(z@DKm^AK74^s8gmVA$-ns;^)*$Tko>#jl_ShMKP5zOl>%Qx z^D3IU-BdY|9oFXk^KrL2s}c-f-8_X;c0f5k zI9+>ZnM=A#i=nZMOS5`MyEaBE6n3zlC1_uiW@w^p^dcu~48`=DAT z(b4T+NJV%U%ki+@o{D4nODC9DzalUq@3#H8%l4?XmmWyKzi~o7fN#|%dGRsg0m}R< z#%Jf|MPv(WmG5ncED1wS(x@KOH$N_?I)(E>Z&jY`s&og{OWo3*v8SeALyR(#HAH8q z^V2omh##c%rH?%N@HjZ8oIA-re1~itgcQ9QY#dLttiP3 zZm@@W5iMU?#sgaHT9@fz9!Z|p8B=brnn~Ep%g#kME<@#W8Sa2UBDsEJUud#sL)M9} zuSFnZfy#;i^{B`X_<$lpode$w%k5J3?_>?%Bcl*0?V5^on=u*nd5X*|@Z#`1kWY5< zT7%eLfRpUwyYiyS^NC385xlX7JP6o+z?Yfz&|*i?g4C1SDGe8K35Y_bK8uPQr;#@6 z0#v1bnkT=b%#Quk!-086GOr-#?#AeI$i1m{Xn^BJ@^a^rvy;S@l8U`ArB!$mOj|IdnmIUqDs%Hv z-}-$S^IepR6*p_B-CK$ZYzXUrs7X3uh9fjM~#2KnG3!DB1WFmf{L*zVq^9t&?j+B-ds@U?$SZOuQbUFyR*V;#QNzS|*XPJ$?z4zz*g6Shifb9*do(??xj@d%kT3x%vLe5U;dp+p>_`$!Hd8u^cxL18XW4oQj%Du;JL z5-pW*N&cg``)!3x6~lP3hwO&{8_)e7>$+ut&02^m^e9M5RL1PD4LW67aM8A4Fr)f4 z0|iyNwaq}ixW*IxR(sf*aerf_rN|wd&YVDkFNYST&nFOL?`> zpM;*La!^L^*CBy)ju$7W?5d=S=$C825n3yqziGy=U> z5$t6ifBc$N@SS{%_+l$eAw_?MA5|P5IvA`a{}>oA(s}GjcFse!i=a29u!Q zj)dd%IO8nY(n+X+%MW-mYx$HJzuzk}gjzLX}4>nrv8@`STrp2H)ks_=}x*7I{_? z5cq3wI<(uIccF2inuv#SfP07VCUcDyiBbf11$}%{L#iVoOR8PzZ4KbE@UI_uVBffi zDQ#*TvPV&EGX5|{T=<=P(uNiR1SXDFihV)}Gtfgo2EFrZBh%bPvrMy>v2Sl>rszi0 z?vF#6d!G@K;#Q9E9xH(5WvyG><^+a}Z%Q}85_BN415cUX%bG3ML9KVi07t;o)i&{z z_e8CQk{tEHF>-QXG$ipPBd~Hg&v{IYQd36z!5#`$T5>bOc>=kPdBWYdt}G18>t>_- zgrI~QWp~+QBb7ssV?@t96;a)T2UZ+2Y~~vU`6um1mYx@c8?L^4&(Ze3tOK|9wTwwG z*TnG|x03ooIN4wWo~Y*l$!VFSu)J%JG<3Uu`p~8qzJiZQrtZ68ofEi%nwqz%;#Wft zrKFUwxF_fC#J6=*qhovv(E`|1@%UHxLUwr~T5(lelWho3`@oL;M(BK>EP3rVIOkYT zk(QxWQhf0?n93|9>VmUI0&9BlhABIOK(6@YAhDy_GX=o3>xI9~m>h3}zFKl#&K01p zMUFW*=Hkg#y+X0!vq!_Vv$Cp6gF+16pDV}v-UB0t(7PsszcRa*mk8A*|8fd(X=^Rh zwa)BPGRY-)t}xv=Iabzb+}!!9 z8-7YwdUo(Rj-x5Lz$M{b0qjFTHL!N5@%n(rDFfuf<4+J;CI$N5H+m zDsF(<{Qe#S@(Pdc-;Z^Rrp3aIDNW87OCshYx^0W1+(yYisNao;O-%m@TVckw+ombz+y`0rBc7Zx1MVf&Qn?nX2FUj zSn5~x5Q0*uc=PB$s2p}j3mAnUIp&tFYaL}V#siFjf&m~+I#~vL!#&=FcGPWe)upvn z50+T;cvZaWFO3_nFLhjH-a*etfYB+W3Rit(q5MK|pwUi49I-UbL?zONC$4t(>44*T_} zE*)?itLwSnW_eI9*z?bW+xc|F29;wvWJ2)PQ0qWVt7?iaU-B`WhD%?vx#%qpnt(q= zH43Sk3Nz_kf>G*J@7u6$5KmT8h0CuQyj71vC8oVYvN9bTsUc2y9QD$6(S*P7i&E)= z0rXyF%xj7zJ^EP7NTSffV;cjR3!4nfZXi9UW%S;X#TxEkhT`m!B`Vw=s3&vgD$l?L z(-UT<_>J4A%#QgR$LIm#(ETZOdsnGy{pXJm6uiNj79`th)*b^lylhtsH0Ksi--;Lw zADip&4mPx&Ko%LRurtm;%BfZyFMyq!k`*c6GlRuK;BRKN6TeIhd`6rwu_mIV%%R22 zK;Ha;(I+uQyH)XLzEMMGBSH%z3X1tv}~*K&2Xrxl(>S(xa40_yCOoXe{irM z@FI71MBUoK{W58@Ou1t6d|p?7&{Z!MS(ZSBt*7nNXY` bzNXIQZSYF>PTkkBEn4 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