From 66a0e8b0d9f3dd821bb315c9a7ffb8a9b5264103 Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Fri, 10 Oct 2025 14:32:27 +1000 Subject: [PATCH 01/41] Implemented dataset with a summariser to connect expert-layman terms and finished make_datasets --- recognition/Project13-TristanGreen/dataset.py | 207 ++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 recognition/Project13-TristanGreen/dataset.py diff --git a/recognition/Project13-TristanGreen/dataset.py b/recognition/Project13-TristanGreen/dataset.py new file mode 100644 index 000000000..1f249392d --- /dev/null +++ b/recognition/Project13-TristanGreen/dataset.py @@ -0,0 +1,207 @@ +# dataset.py +from __future__ import annotations +import csv, json, os +from typing import Dict, List, Optional, Tuple + +import torch +from torch.utils.data import Dataset +try: + from datasets import load_dataset # optional + HF_AVAILABLE = True +except Exception: + HF_AVAILABLE = False + +from transformers import AutoTokenizer, DataCollatorForSeq2Seq + + +class SummarisationDataset(Dataset): + """ + Flexible dataset: supports HF datasets, CSV, or JSONL. + Expects two text fields: `input_col` (expert report) and `target_col` (lay summary). + """ + def __init__( + self, + records: List[Dict[str, str]], + tokenizer: AutoTokenizer, + max_input_len: int = 1024, + max_target_len: int = 256, + add_prefix: bool = True, + prefix_text: str = "summarize: ", + strip_empty: bool = True, + ): + self.records = [] + for r in records: + src = (r.get("input") or r.get("report") or r.get("source") or r.get("text") or "").strip() + tgt = (r.get("target") or r.get("summary") or r.get("lay_summary") or "").strip() + if strip_empty and (not src or not tgt): + continue + self.records.append({"input": src, "target": tgt}) + + if len(self.records) == 0: + raise ValueError("No usable records found (empty inputs/targets).") + + self.tok = tokenizer + self.max_in = max_input_len + self.max_tgt = max_target_len + self.add_prefix = add_prefix + self.prefix_text = prefix_text + + def __len__(self) -> int: + return len(self.records) + + def __getitem__(self, idx: int): + ex = self.records[idx] + src = (self.prefix_text + ex["input"]) if self.add_prefix else ex["input"] + tgt = ex["target"] + + model_inputs = self.tok( + src, + max_length=self.max_in, + truncation=True, + padding=False, + ) + labels = self.tok( + text_target=tgt, # <-- modern API + max_length=self.max_tgt, + truncation=True, + padding=False, + ) + model_inputs["labels"] = labels["input_ids"] + return {k: torch.tensor(v) for k, v in model_inputs.items()} + + +def load_local_csv( + path: str, + input_col: str = "report", + target_col: str = "summary", + delimiter: str = ",", +) -> List[Dict[str, str]]: + rows: List[Dict[str, str]] = [] + with open(path, "r", encoding="utf-8") as f: + reader = csv.DictReader(f, delimiter=delimiter) + for r in reader: + rows.append({"input": r.get(input_col, ""), "target": r.get(target_col, "")}) + return rows + + +def load_local_jsonl( + path: str, + input_col: str = "report", + target_col: str = "summary", +) -> List[Dict[str, str]]: + rows: List[Dict[str, str]] = [] + with open(path, "r", encoding="utf-8") as f: + for line in f: + if not line.strip(): + continue + obj = json.loads(line) + rows.append({"input": obj.get(input_col, ""), "target": obj.get(target_col, "")}) + return rows + + +def load_biolaysumm_hf( + dataset_name: str = "BioLaySumm/BioLaySumm2025-LaymanRRG-opensource-track", + split: str = "train", + input_col: str = "report", + target_col: str = "summary", +) -> List[Dict[str, str]]: + if not HF_AVAILABLE: + raise RuntimeError("`datasets` not installed. Use local CSV/JSONL or install `datasets`.") + ds = load_dataset(dataset_name, split=split) + rows = [] + for r in ds: + rows.append({"input": r.get(input_col, ""), "target": r.get(target_col, "")}) + return rows + + +def make_datasets( + tokenizer_name: str = "google/flan-t5-base", + train_source: Tuple[str, str] = ("local_jsonl", "train.jsonl"), + val_source: Optional[Tuple[str, str]] = ("local_jsonl", "val.jsonl"), + input_col: str = "report", + target_col: str = "summary", + max_input_len: int = 1024, + max_target_len: int = 256, + add_prefix: bool = True, + prefix_text: str = "summarize: ", +): + tok = AutoTokenizer.from_pretrained(tokenizer_name, use_fast=True) + + def _load(kind: str, arg: str) -> List[Dict[str, str]]: + if kind == "local_csv": + return load_local_csv(arg, input_col, target_col) + elif kind == "local_jsonl": + return load_local_jsonl(arg, input_col, target_col) + elif kind == "hf": + # arg should be split name if using HF + return load_biolaysumm_hf(split=arg, input_col=input_col, target_col=target_col) + else: + raise ValueError(f"Unknown source kind: {kind}") + + train_kind, train_arg = train_source + train_rows = _load(train_kind, train_arg) + + val_rows = [] + if val_source: + val_kind, val_arg = val_source + val_rows = _load(val_kind, val_arg) + + train_ds = SummarisationDataset( + train_rows, tok, max_input_len, max_target_len, add_prefix, prefix_text + ) + val_ds = SummarisationDataset( + val_rows, tok, max_input_len, max_target_len, add_prefix, prefix_text + ) if val_rows else None + + collator = Seq2SeqCollatorFast(tok, label_pad_token_id=-100, pad_to_multiple_of=None) # or 8/16 if you want alignment + return tok, train_ds, val_ds, collator + + +from torch.nn.utils.rnn import pad_sequence + +class Seq2SeqCollatorFast: + """ + Fast collator that pads inputs/labels with pure torch ops. + Avoids the slow path in HF's DataCollatorForSeq2Seq that triggers + """ + def __init__(self, tokenizer, label_pad_token_id=-100, pad_to_multiple_of=None): + self.tok = tokenizer + self.label_pad_token_id = label_pad_token_id + self.pad_to_multiple_of = pad_to_multiple_of + + def _maybe_pad_to_multiple(self, tensor, pad_value): + if self.pad_to_multiple_of is None: + return tensor + seq_len = tensor.size(1) + if seq_len % self.pad_to_multiple_of == 0: + return tensor + pad_len = self.pad_to_multiple_of - (seq_len % self.pad_to_multiple_of) + pad = (0, pad_len) # pad on the right + return torch.nn.functional.pad(tensor, pad, value=pad_value) + + def __call__(self, features): + # features: list of dicts with torch tensors (from our Dataset) + input_ids = [f["input_ids"] if isinstance(f["input_ids"], torch.Tensor) else torch.tensor(f["input_ids"]) for f in features] + attn_masks = [f["attention_mask"] if isinstance(f["attention_mask"], torch.Tensor) else torch.tensor(f["attention_mask"]) for f in features] + labels = [f["labels"] if isinstance(f["labels"], torch.Tensor) else torch.tensor(f["labels"]) for f in features] + + # Pad inputs + pad_id = self.tok.pad_token_id + input_ids = pad_sequence(input_ids, batch_first=True, padding_value=pad_id) + attn_masks = pad_sequence(attn_masks, batch_first=True, padding_value=0) + + # Pad labels with pad_token_id, then convert to -100 + labels = pad_sequence(labels, batch_first=True, padding_value=pad_id) + labels_mask = labels.eq(pad_id) + labels = labels.masked_fill(labels_mask, self.label_pad_token_id) + + # Optional: align to 8/16/32 for kernel efficiency + input_ids = self._maybe_pad_to_multiple(input_ids, pad_id) + attn_masks = self._maybe_pad_to_multiple(attn_masks, 0) + labels = self._maybe_pad_to_multiple(labels, self.label_pad_token_id) + + return { + "input_ids": input_ids, + "attention_mask": attn_masks, + "labels": labels, + } From 8c5ba3442185f8246bdf73fb6d1cea42b73845cd Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Fri, 10 Oct 2025 14:35:39 +1000 Subject: [PATCH 02/41] added training data and rouge values to README.md --- recognition/Project13-TristanGreen/README.md | 23 ++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 recognition/Project13-TristanGreen/README.md diff --git a/recognition/Project13-TristanGreen/README.md b/recognition/Project13-TristanGreen/README.md new file mode 100644 index 000000000..93123d9ff --- /dev/null +++ b/recognition/Project13-TristanGreen/README.md @@ -0,0 +1,23 @@ + + + + + + +Train e1: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 150454/150454 [5:20:10<00:00, 7.83batch/s, loss=1.3393, sps=7.8] +[epoch 1] train_loss=1.3393 +Eval: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1250/1250 [1:01:16<00:00, 2.94s/batch] +[epoch 1] ROUGE: {'rouge1': 0.639758940949706, 'rouge2': 0.4262667182806449, 'rougeL': 0.5793631565756041, 'rougeLsum': 0.5795225947980385} +[epoch 1] ✓ saved best adapters to runs/flan_t5_base_lora_biolaysumm_debug +done. + + + + + + + + + + + From 9e42f22e5388ef5881930b88434b5944f86da92a Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Mon, 13 Oct 2025 13:55:21 +1000 Subject: [PATCH 03/41] Train working for seq2seq on the flan-t5 model. Currently lacks scheduler and warmup but produces results. --- recognition/Project13-TristanGreen/train.py | 159 ++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 recognition/Project13-TristanGreen/train.py diff --git a/recognition/Project13-TristanGreen/train.py b/recognition/Project13-TristanGreen/train.py new file mode 100644 index 000000000..abf046ed7 --- /dev/null +++ b/recognition/Project13-TristanGreen/train.py @@ -0,0 +1,159 @@ +import argparse, os, random +from typing import List, Dict, Tuple +import torch +from torch.utils.data import Dataset, DataLoader +from transformers import AutoTokenizer, AutoModelForSeq2SeqLM + +# ---------------------------- +# Dumb data loader (TSV: src \t tgt) +# ---------------------------- +def read_tsv(path: str) -> List[Dict[str, str]]: + pairs = [] + with open(path, "r", encoding="utf-8") as f: + for line in f: + line = line.strip() + if not line: + continue + # Expect "source\t target" + parts = line.split("\t") + if len(parts) < 2: + # skip trash lines + continue + src, tgt = parts[0], parts[1] + pairs.append({"src": src, "tgt": tgt}) + if not pairs: + raise ValueError(f"No usable lines found in {path}. Expect TSV with 'src\\t tgt'.") + return pairs + +# Tiny fallback toy data if you don't pass --train_file +def toy_pairs() -> List[Dict[str, str]]: + return [ + {"src": "summarize: The cat sat on the mat.", "tgt": "Cat on mat."}, + {"src": "summarize: Transformers are powerful models for NLP.", "tgt": "Transformers are powerful."}, + {"src": "summarize: The sky is blue and the sun is bright.", "tgt": "Blue sky, bright sun."}, + ] + +# ---------------------------- +# Dataset + Collate +# ---------------------------- +class PairDataset(Dataset): + def __init__(self, pairs: List[Dict[str, str]]): + self.pairs = pairs + + def __len__(self): + return len(self.pairs) + + def __getitem__(self, idx): + return self.pairs[idx] + +def make_collate_fn(tokenizer, src_max_len: int, tgt_max_len: int): + pad_id = tokenizer.pad_token_id + if pad_id is None: + raise ValueError("Tokenizer has no pad_token_id. Set one before training.") + + def collate(batch: List[Dict[str, str]]): + sources = [ex["src"] for ex in batch] + targets = [ex["tgt"] for ex in batch] + + model_inputs = tokenizer( + sources, + max_length=src_max_len, + truncation=True, + padding=True, + return_tensors="pt", + ) + with torch.no_grad(): + labels = tokenizer( + text_target=targets, + max_length=tgt_max_len, + truncation=True, + padding=True, + return_tensors="pt", + )["input_ids"] + labels[labels == pad_id] = -100 # ignore pad in loss + model_inputs["labels"] = labels + return model_inputs + return collate + +# ---------------------------- +# Training +# ---------------------------- +def set_seed(seed: int): + random.seed(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed_all(seed) + +def train(args): + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + set_seed(args.seed) + + tokenizer = AutoTokenizer.from_pretrained(args.model) + if tokenizer.pad_token_id is None: + # For some tokenizers you need to define this; T5 already has it. + tokenizer.pad_token = tokenizer.eos_token or tokenizer.unk_token + + model = AutoModelForSeq2SeqLM.from_pretrained(args.model) + model.to(device) + model.train() + + # Data + if args.train_file: + pairs = read_tsv(args.train_file) + else: + pairs = toy_pairs() + ds = PairDataset(pairs) + collate_fn = make_collate_fn(tokenizer, args.src_max_len, args.tgt_max_len) + + dl = DataLoader( + ds, + batch_size=args.batch_size, + shuffle=True, + collate_fn=collate_fn, + pin_memory=(device.type == "cuda"), + drop_last=False, + ) + + # Optimizer + optim = torch.optim.AdamW(model.parameters(), lr=args.lr) + + global_step = 0 + for epoch in range(1, args.epochs + 1): + for batch in dl: + batch = {k: v.to(device) for k, v in batch.items()} + out = model(**batch) # uses labels -> returns loss + loss = out.loss + + loss.backward() + optim.step() + optim.zero_grad() + + global_step += 1 + if global_step % args.log_every == 0: + print(f"[epoch {epoch}] step {global_step} loss={loss.item():.4f}") + + # Save minimal artifacts + os.makedirs(args.output_dir, exist_ok=True) + model.save_pretrained(args.output_dir) + tokenizer.save_pretrained(args.output_dir) + print(f"Saved to {args.output_dir}") + +# ---------------------------- +# CLI +# ---------------------------- +def parse_args(): + p = argparse.ArgumentParser(description="Bare-bones seq2seq trainer (no LoRA, no AMP, no eval).") + p.add_argument("--model", type=str, default="google/flan-t5-small") + p.add_argument("--train_file", type=str, default=None, help="TSV with 'src\\t tgt'. If omitted, uses tiny toy set.") + p.add_argument("--output_dir", type=str, default="./out_basic") + p.add_argument("--epochs", type=int, default=1) + p.add_argument("--batch_size", type=int, default=8) + p.add_argument("--lr", type=float, default=5e-5) + p.add_argument("--src_max_len", type=int, default=256) + p.add_argument("--tgt_max_len", type=int, default=64) + p.add_argument("--seed", type=int, default=42) + p.add_argument("--log_every", type=int, default=20) + return p.parse_args() + +if __name__ == "__main__": + args = parse_args() + train(args) \ No newline at end of file From cf9bc452b26c29ec37a85c5ea5bd9823f8249b01 Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Mon, 13 Oct 2025 14:08:41 +1000 Subject: [PATCH 04/41] Implemented tokenizer and pretrained flan-t5 from HF in load_base_model. --- recognition/Project13-TristanGreen/modules.py | 42 ++ recognition/Project13-TristanGreen/train.py | 377 +++++++++++------- 2 files changed, 275 insertions(+), 144 deletions(-) create mode 100644 recognition/Project13-TristanGreen/modules.py diff --git a/recognition/Project13-TristanGreen/modules.py b/recognition/Project13-TristanGreen/modules.py new file mode 100644 index 000000000..7cb18150d --- /dev/null +++ b/recognition/Project13-TristanGreen/modules.py @@ -0,0 +1,42 @@ +#modules.py +""" +General design ideas are that the datasets are defensively imported and are not +taken for granted since this is public software. All imports have guardrails. +""" +from __future__ import annotations +from typing import Optional, Dict, Any, List + +import torch +from transformers import ( + AutoModelForSeq2SeqLM, + AutoTokenizer, +) + +try: + from peft import LoraConfig, get_peft_model, PeftModel + PEFT_AVAILABLE = True +except Exception: + PEFT_AVAILABLE = False + + +def get_tokenizer(name: str = "google/flan-t5-base"): + tok = AutoTokenizer.from_pretrained(name, use_fast=True) + if tok.pad_token is None: + tok.pad_token = tok.eos_token + return tok + + +def load_base_model( + name: str = "google/flan-t5-base", + dtype: Optional[torch.dtype] = torch.float16, # <-- use 'dtype', not 'torch_dtype' + device_map: Optional[str] = None, +): + model = AutoModelForSeq2SeqLM.from_pretrained( + name, + dtype=dtype, # <-- fixes deprecation + device_map=device_map, + ) + if getattr(model.config, "decoder_start_token_id", None) is None: + model.config.decoder_start_token_id = model.config.pad_token_id + return model + diff --git a/recognition/Project13-TristanGreen/train.py b/recognition/Project13-TristanGreen/train.py index abf046ed7..7ce9a7bf5 100644 --- a/recognition/Project13-TristanGreen/train.py +++ b/recognition/Project13-TristanGreen/train.py @@ -1,159 +1,248 @@ -import argparse, os, random -from typing import List, Dict, Tuple +import os, json, math, argparse, random, csv, time +from typing import Dict, List, Optional +import numpy as np import torch -from torch.utils.data import Dataset, DataLoader -from transformers import AutoTokenizer, AutoModelForSeq2SeqLM - -# ---------------------------- -# Dumb data loader (TSV: src \t tgt) -# ---------------------------- -def read_tsv(path: str) -> List[Dict[str, str]]: - pairs = [] - with open(path, "r", encoding="utf-8") as f: - for line in f: - line = line.strip() - if not line: - continue - # Expect "source\t target" - parts = line.split("\t") - if len(parts) < 2: - # skip trash lines - continue - src, tgt = parts[0], parts[1] - pairs.append({"src": src, "tgt": tgt}) - if not pairs: - raise ValueError(f"No usable lines found in {path}. Expect TSV with 'src\\t tgt'.") - return pairs - -# Tiny fallback toy data if you don't pass --train_file -def toy_pairs() -> List[Dict[str, str]]: - return [ - {"src": "summarize: The cat sat on the mat.", "tgt": "Cat on mat."}, - {"src": "summarize: Transformers are powerful models for NLP.", "tgt": "Transformers are powerful."}, - {"src": "summarize: The sky is blue and the sun is bright.", "tgt": "Blue sky, bright sun."}, - ] - -# ---------------------------- -# Dataset + Collate -# ---------------------------- -class PairDataset(Dataset): - def __init__(self, pairs: List[Dict[str, str]]): - self.pairs = pairs - - def __len__(self): - return len(self.pairs) - - def __getitem__(self, idx): - return self.pairs[idx] - -def make_collate_fn(tokenizer, src_max_len: int, tgt_max_len: int): - pad_id = tokenizer.pad_token_id - if pad_id is None: - raise ValueError("Tokenizer has no pad_token_id. Set one before training.") - - def collate(batch: List[Dict[str, str]]): - sources = [ex["src"] for ex in batch] - targets = [ex["tgt"] for ex in batch] - - model_inputs = tokenizer( - sources, - max_length=src_max_len, - truncation=True, - padding=True, - return_tensors="pt", - ) - with torch.no_grad(): - labels = tokenizer( - text_target=targets, - max_length=tgt_max_len, - truncation=True, - padding=True, - return_tensors="pt", - )["input_ids"] - labels[labels == pad_id] = -100 # ignore pad in loss - model_inputs["labels"] = labels - return model_inputs - return collate - -# ---------------------------- -# Training -# ---------------------------- -def set_seed(seed: int): - random.seed(seed) - torch.manual_seed(seed) - torch.cuda.manual_seed_all(seed) - -def train(args): - device = torch.device("cuda" if torch.cuda.is_available() else "cpu") +from torch.optim import AdamW +from torch.utils.data import DataLoader, Subset +from transformers import get_cosine_schedule_with_warmup +from tqdm.auto import tqdm + +# our modules +from dataset import make_datasets +from modules import load_base_model, attach_lora + +import evaluate # HF evaluate -> ROUGE + + +def csv_logger(path: str): + f = open(path, "a", newline="", encoding="utf-8") + w = csv.writer(f) + if f.tell() == 0: + w.writerow(["timestamp", "epoch", "global_step", "loss"]) + return f, w + + +def set_seed(seed: int = 1337): + random.seed(seed); np.random.seed(seed); torch.manual_seed(seed) + if torch.cuda.is_available(): + torch.cuda.manual_seed_all(seed) + + +def decode_labels(tokenizer, labels: torch.Tensor) -> List[str]: + lab = labels.clone() + lab[lab == -100] = tokenizer.pad_token_id + return tokenizer.batch_decode(lab, skip_special_tokens=True) + + +def run_eval(model, tokenizer, val_loader: Optional[DataLoader], device, args, rouge_metric): + if val_loader is None: + return None + model.eval() + + # speed hint for generation + use_cache_was = getattr(model.config, "use_cache", True) + model.config.use_cache = True + + preds, refs = [], [] + with torch.inference_mode(): + val_pbar = tqdm(val_loader, desc="Eval", unit="batch", dynamic_ncols=True) + for vb in val_pbar: + vb = {k: v.to(device) for k, v in vb.items()} + gen_out = model.generate( + input_ids=vb["input_ids"], + attention_mask=vb["attention_mask"], + max_new_tokens=args.eval_max_new_tokens, + num_beams=args.eval_beams, + no_repeat_ngram_size=3, + length_penalty=1.0, + early_stopping=True, + ) + pred_txt = tokenizer.batch_decode(gen_out, skip_special_tokens=True) + tgt = vb["labels"].clone() + tgt[tgt == -100] = tokenizer.pad_token_id + ref_txt = tokenizer.batch_decode(tgt, skip_special_tokens=True) + preds.extend(pred_txt) + refs.extend(ref_txt) + + scores = rouge_metric.compute(predictions=preds, references=refs, use_stemmer=True) + keep = {k: float(v) for k, v in scores.items() if k in {"rouge1", "rouge2", "rougeL", "rougeLsum"}} + model.config.use_cache = use_cache_was + return keep + + +def main(): + p = argparse.ArgumentParser() + p.add_argument("--model_name", default="google/flan-t5-base") + p.add_argument("--train_source", default="local_jsonl") + p.add_argument("--train_path", default="train.jsonl") + p.add_argument("--val_source", default="local_jsonl") + p.add_argument("--val_path", default="val.jsonl") + p.add_argument("--input_col", default="report") + p.add_argument("--target_col", default="summary") + p.add_argument("--max_input_len", type=int, default=1024) + p.add_argument("--max_target_len", type=int, default=256) + p.add_argument("--prefix", default="summarize: ") + p.add_argument("--epochs", type=int, default=3) + p.add_argument("--lr", type=float, default=2e-4) + p.add_argument("--weight_decay", type=float, default=0.01) + p.add_argument("--batch_size", type=int, default=1) + p.add_argument("--accum", type=int, default=16) + p.add_argument("--warmup_steps", type=int, default=1000) + p.add_argument("--clip", type=float, default=1.0) + p.add_argument("--lora_r", type=int, default=8) + p.add_argument("--lora_alpha", type=int, default=16) + p.add_argument("--lora_dropout", type=float, default=0.05) + p.add_argument("--output_dir", default="runs/flan_t5_base_lora") + p.add_argument("--seed", type=int, default=1337) + p.add_argument("--fp16", action="store_true") + p.add_argument("--eval_max_new_tokens", type=int, default=128) + p.add_argument("--eval_beams", type=int, default=4) + + # dev/fast-run controls + p.add_argument("--max_train_samples", type=int, default=None, + help="Limit training examples for quick dev runs") + p.add_argument("--max_eval_samples", type=int, default=None, + help="Limit validation examples during dev") + p.add_argument("--eval_batch_size", type=int, default=8, + help="Batch size used for generation during eval") + p.add_argument("--eval_every_steps", type=int, default=None, + help="If set, run eval every N optimizer steps (in addition to end-of-epoch)") + + args = p.parse_args() + + os.makedirs(args.output_dir, exist_ok=True) set_seed(args.seed) - tokenizer = AutoTokenizer.from_pretrained(args.model) - if tokenizer.pad_token_id is None: - # For some tokenizers you need to define this; T5 already has it. - tokenizer.pad_token = tokenizer.eos_token or tokenizer.unk_token + # tokenizer + datasets + tokenizer, train_ds, val_ds, collator = make_datasets( + tokenizer_name=args.model_name, + train_source=(args.train_source, args.train_path), + val_source=(args.val_source, args.val_path) if args.val_path else None, + input_col=args.input_col, + target_col=args.target_col, + max_input_len=args.max_input_len, + max_target_len=args.max_target_len, + add_prefix=True, + prefix_text=args.prefix, + ) - model = AutoModelForSeq2SeqLM.from_pretrained(args.model) - model.to(device) - model.train() - - # Data - if args.train_file: - pairs = read_tsv(args.train_file) - else: - pairs = toy_pairs() - ds = PairDataset(pairs) - collate_fn = make_collate_fn(tokenizer, args.src_max_len, args.tgt_max_len) - - dl = DataLoader( - ds, - batch_size=args.batch_size, - shuffle=True, - collate_fn=collate_fn, - pin_memory=(device.type == "cuda"), - drop_last=False, + # Subset for dev speed + if args.max_train_samples is not None: + n = min(args.max_train_samples, len(train_ds)) + print(f"[INFO] Using only first {n} training samples (of {len(train_ds)})") + train_ds = Subset(train_ds, range(n)) + if (val_ds is not None) and (args.max_eval_samples is not None): + m = min(args.max_eval_samples, len(val_ds)) + print(f"[INFO] Using only first {m} validation samples (of {len(val_ds)})") + val_ds = Subset(val_ds, range(m)) + + # DataLoaders (eval uses larger batch) + train_loader = DataLoader( + train_ds, batch_size=args.batch_size, shuffle=True, + collate_fn=collator, pin_memory=True, num_workers=0 ) + val_loader: Optional[DataLoader] = None + if val_ds is not None: + val_loader = DataLoader( + val_ds, batch_size=args.eval_batch_size, shuffle=False, + collate_fn=collator, pin_memory=True, num_workers=0 + ) - # Optimizer - optim = torch.optim.AdamW(model.parameters(), lr=args.lr) + # model + LoRA + dtype = torch.float16 if (args.fp16 and torch.cuda.is_available()) else torch.float32 + model = load_base_model(args.model_name, dtype=dtype, device_map=None) + model = attach_lora(model, r=args.lora_r, alpha=args.lora_alpha, + dropout=args.lora_dropout, target_modules=["q", "k", "v", "o"]) + device = "cuda" if torch.cuda.is_available() else "cpu" + model.to(device) + # Logging + log_file, log_writer = csv_logger(os.path.join(args.output_dir, "train_log.csv")) global_step = 0 + optimizer_steps = 0 + + # Optim + sched + optim = AdamW(model.parameters(), lr=args.lr, weight_decay=args.weight_decay) + total_steps = math.ceil(len(train_loader) / args.accum) * args.epochs + warmup = min(args.warmup_steps, int(0.06 * total_steps)) + sched = get_cosine_schedule_with_warmup(optim, warmup, total_steps) + scaler = torch.amp.GradScaler("cuda", enabled=(args.fp16 and device == "cuda")) + + # Load ROUGE once + rouge_metric = evaluate.load("rouge") + + best_rougeLsum = -1.0 for epoch in range(1, args.epochs + 1): - for batch in dl: - batch = {k: v.to(device) for k, v in batch.items()} - out = model(**batch) # uses labels -> returns loss - loss = out.loss + model.train() + running = 0.0 + optim.zero_grad(set_to_none=True) - loss.backward() - optim.step() - optim.zero_grad() + pbar = tqdm(train_loader, desc=f"Train e{epoch}", unit="batch", dynamic_ncols=True) + start_time = time.time() + step_in_epoch = 0 + for batch in pbar: + step_in_epoch += 1 global_step += 1 - if global_step % args.log_every == 0: - print(f"[epoch {epoch}] step {global_step} loss={loss.item():.4f}") + batch = {k: v.to(device) for k, v in batch.items()} + + with torch.amp.autocast("cuda", enabled=(args.fp16 and device == "cuda")): + out = model(**batch) + loss = out.loss / args.accum + + # guard against NaN/Inf + if not torch.isfinite(loss): + print(f"[WARN] non-finite loss at global_step {global_step}: {float(loss)}. Skipping batch.") + optim.zero_grad(set_to_none=True) + continue + + scaler.scale(loss).backward() + running += loss.item() + + if (global_step % args.accum) == 0: + scaler.unscale_(optim) + torch.nn.utils.clip_grad_norm_(model.parameters(), args.clip) + scaler.step(optim) + scaler.update() + sched.step() + optim.zero_grad(set_to_none=True) + optimizer_steps += 1 + + # mid-epoch eval hook + if (args.eval_every_steps is not None) and (optimizer_steps % args.eval_every_steps == 0): + scores = run_eval(model, tokenizer, val_loader, device, args, rouge_metric) + if scores is not None: + print(f"[step {optimizer_steps}] ROUGE: {scores}") + + # live progress + avg_loss = running / max(1, (step_in_epoch // args.accum)) + elapsed = time.time() - start_time + sps = (step_in_epoch * args.batch_size) / max(1e-6, elapsed) + pbar.set_postfix({"loss": f"{avg_loss:.4f}", "sps": f"{sps:.1f}"}) + + # CSV log + if (global_step % args.accum) == 0: + log_writer.writerow([time.time(), epoch, global_step, avg_loss]) + log_file.flush() + + print(f"[epoch {epoch}] train_loss={avg_loss:.4f}") + + # end-of-epoch eval + scores = run_eval(model, tokenizer, val_loader, device, args, rouge_metric) + if scores is not None: + print(f"[epoch {epoch}] ROUGE: {scores}") + rougeLsum = float(scores.get("rougeLsum", 0.0)) + if rougeLsum > best_rougeLsum: + best_rougeLsum = rougeLsum + model.save_pretrained(args.output_dir) # saves LoRA adapters + tokenizer.save_pretrained(args.output_dir) + with open(os.path.join(args.output_dir, "metrics.json"), "w") as f: + json.dump({"best_rougeLsum": best_rougeLsum, "epoch": epoch, "scores": scores}, f, indent=2) + print(f"[epoch {epoch}] ✓ saved best adapters to {args.output_dir}") + + log_file.close() + print("done.") - # Save minimal artifacts - os.makedirs(args.output_dir, exist_ok=True) - model.save_pretrained(args.output_dir) - tokenizer.save_pretrained(args.output_dir) - print(f"Saved to {args.output_dir}") - -# ---------------------------- -# CLI -# ---------------------------- -def parse_args(): - p = argparse.ArgumentParser(description="Bare-bones seq2seq trainer (no LoRA, no AMP, no eval).") - p.add_argument("--model", type=str, default="google/flan-t5-small") - p.add_argument("--train_file", type=str, default=None, help="TSV with 'src\\t tgt'. If omitted, uses tiny toy set.") - p.add_argument("--output_dir", type=str, default="./out_basic") - p.add_argument("--epochs", type=int, default=1) - p.add_argument("--batch_size", type=int, default=8) - p.add_argument("--lr", type=float, default=5e-5) - p.add_argument("--src_max_len", type=int, default=256) - p.add_argument("--tgt_max_len", type=int, default=64) - p.add_argument("--seed", type=int, default=42) - p.add_argument("--log_every", type=int, default=20) - return p.parse_args() if __name__ == "__main__": - args = parse_args() - train(args) \ No newline at end of file + main() \ No newline at end of file From cd5a99c0391da3323f31285d176398ad353476cf Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Mon, 13 Oct 2025 14:11:46 +1000 Subject: [PATCH 05/41] Implemented basic predict.py with ability to use weights to parse jargon and summarise. --- recognition/Project13-TristanGreen/predict.py | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 recognition/Project13-TristanGreen/predict.py diff --git a/recognition/Project13-TristanGreen/predict.py b/recognition/Project13-TristanGreen/predict.py new file mode 100644 index 000000000..6b2b130d4 --- /dev/null +++ b/recognition/Project13-TristanGreen/predict.py @@ -0,0 +1,76 @@ +# predict.py +import os, argparse, json +from typing import List +import torch +from transformers import AutoModelForSeq2SeqLM, AutoTokenizer +from peft import PeftModel + +def load_model(adapter_dir: str, base_model: str, fp16: bool): + tok = AutoTokenizer.from_pretrained(adapter_dir) + dtype = torch.float16 if (fp16 and torch.cuda.is_available()) else torch.float32 + base = AutoModelForSeq2SeqLM.from_pretrained(base_model, dtype=dtype) + model = PeftModel.from_pretrained(base, adapter_dir) + device = "cuda" if torch.cuda.is_available() else "cpu" + model.to(device).eval() + if getattr(model.config, "decoder_start_token_id", None) is None: + model.config.decoder_start_token_id = model.config.pad_token_id + return tok, model, device + +def chunk(lst: List[str], n: int): + for i in range(0, len(lst), n): + yield lst[i:i+n] + +def generate_batch(model, tok, device, texts: List[str], max_in: int, max_new: int, beams: int, prefix: str): + batch = [prefix + t for t in texts] + enc = tok(batch, return_tensors="pt", truncation=True, max_length=max_in, padding=True).to(device) + with torch.inference_mode(): + out = model.generate( + **enc, + max_new_tokens=max_new, + num_beams=beams, + no_repeat_ngram_size=3, + length_penalty=1.0, + early_stopping=True, + use_cache=True, + ) + return tok.batch_decode(out, skip_special_tokens=True) + +def main(): + ap = argparse.ArgumentParser() + ap.add_argument("--adapter_dir", required=True, help="Path to saved LoRA adapters") + ap.add_argument("--base_model", default="google/flan-t5-base") + ap.add_argument("--text", default=None, help="Single input string to summarize") + ap.add_argument("--input_col", default="report") + ap.add_argument("--out_path", default="predictions.jsonl") + ap.add_argument("--batch_size", type=int, default=8) + ap.add_argument("--max_input_len", type=int, default=1024) + ap.add_argument("--max_new_tokens", type=int, default=128) + ap.add_argument("--beams", type=int, default=4) + ap.add_argument("--prefix", default="summarize: ") + ap.add_argument("--fp16", action="store_true") + args = ap.parse_args() + + tok, model, device = load_model(args.adapter_dir, args.base_model, args.fp16) + + # single text mode + if args.text is not None: + outs = generate_batch(model, tok, device, [args.text], args.max_input_len, args.max_new_tokens, args.beams, args.prefix) + print(outs[0]) + return + + + inputs = [r.get(args.input_col, "") for r in rows] + preds = [] + for block in chunk(inputs, args.batch_size): + preds.extend(generate_batch(model, tok, device, block, args.max_input_len, args.max_new_tokens, args.beams, args.prefix)) + + # write JSONL with predictions + with open(args.out_path, "w", encoding="utf-8") as w: + for r, p in zip(rows, preds): + out = dict(r) + out["prediction"] = p + w.write(json.dumps(out, ensure_ascii=False) + "\n") + print(f"wrote {len(preds)} predictions to {args.out_path}") + +if __name__ == "__main__": + main() \ No newline at end of file From 74ff2a31e3f19fc41a4494ee4ebf7010235ab225 Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Wed, 15 Oct 2025 15:47:46 +1000 Subject: [PATCH 06/41] Implemented text generation helper fully, finalised modules for now. --- recognition/Project13-TristanGreen/modules.py | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/recognition/Project13-TristanGreen/modules.py b/recognition/Project13-TristanGreen/modules.py index 7cb18150d..ffb293ff7 100644 --- a/recognition/Project13-TristanGreen/modules.py +++ b/recognition/Project13-TristanGreen/modules.py @@ -40,3 +40,52 @@ def load_base_model( model.config.decoder_start_token_id = model.config.pad_token_id return model + +def attach_lora(model, r: int = 8, alpha: int = 16, dropout: float = 0.05, target_modules: Optional[List[str]] = None): + if not PEFT_AVAILABLE: + raise RuntimeError("peft not installed. `pip install peft` to use LoRA.") + if target_modules is None: + target_modules = ["q", "k", "v", "o"] + cfg = LoraConfig( + r=r, lora_alpha=alpha, lora_dropout=dropout, + target_modules=target_modules, bias="none", task_type="SEQ_2_SEQ_LM", + ) + return get_peft_model(model, cfg) + + +@torch.no_grad() +def generate( + model, + tokenizer, + inputs: List[str], + max_input_len: int = 1024, + max_new_tokens: int = 256, + num_beams: int = 4, + no_repeat_ngram_size: int = 3, + length_penalty: float = 1.0, + add_prefix: bool = True, + prefix_text: str = "summarize: ", + device: Optional[str] = None, +) -> List[str]: + model.eval() + if device is None: + device = "cuda" if torch.cuda.is_available() else "cpu" + + batch = [(prefix_text + x) if add_prefix else x for x in inputs] + enc = tokenizer( + batch, + max_length=max_input_len, + truncation=True, + padding=True, + return_tensors="pt", + ).to(device) + + out = model.generate( + **enc, + max_new_tokens=max_new_tokens, + num_beams=num_beams, + no_repeat_ngram_size=no_repeat_ngram_size, + length_penalty=length_penalty, + early_stopping=True, + ) + return tokenizer.batch_decode(out, skip_special_tokens=True) From a8cffeef8d2aeeee5677c92ac47990ebb16aebdc Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Wed, 15 Oct 2025 15:48:57 +1000 Subject: [PATCH 07/41] Finished prediction to support single and multi-line json file inputs. --- recognition/Project13-TristanGreen/predict.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/recognition/Project13-TristanGreen/predict.py b/recognition/Project13-TristanGreen/predict.py index 6b2b130d4..22a7ceae3 100644 --- a/recognition/Project13-TristanGreen/predict.py +++ b/recognition/Project13-TristanGreen/predict.py @@ -40,6 +40,7 @@ def main(): ap.add_argument("--adapter_dir", required=True, help="Path to saved LoRA adapters") ap.add_argument("--base_model", default="google/flan-t5-base") ap.add_argument("--text", default=None, help="Single input string to summarize") + ap.add_argument("--jsonl", default=None, help="Path to JSONL with an input column") ap.add_argument("--input_col", default="report") ap.add_argument("--out_path", default="predictions.jsonl") ap.add_argument("--batch_size", type=int, default=8) @@ -58,6 +59,14 @@ def main(): print(outs[0]) return + # file mode + if args.jsonl is None: + raise SystemExit("Provide --text or --jsonl") + rows = [] + with open(args.jsonl, "r", encoding="utf-8") as f: + for line in f: + if line.strip(): + rows.append(json.loads(line)) inputs = [r.get(args.input_col, "") for r in rows] preds = [] From fc0117af0da1e2f6d268736d5349bcac8af3ab27 Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Wed, 15 Oct 2025 15:50:01 +1000 Subject: [PATCH 08/41] Implemented a chatbot functionality for testing the predict.py and weights --- recognition/Project13-TristanGreen/chat.py | 37 ++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 recognition/Project13-TristanGreen/chat.py diff --git a/recognition/Project13-TristanGreen/chat.py b/recognition/Project13-TristanGreen/chat.py new file mode 100644 index 000000000..245e6128e --- /dev/null +++ b/recognition/Project13-TristanGreen/chat.py @@ -0,0 +1,37 @@ +import torch +from transformers import AutoTokenizer, AutoModelForSeq2SeqLM +from peft import PeftModel + +# --- config --- +ADAPTER_DIR = "runs/flan_t5_base_lora_biolaysumm_debug" +BASE_MODEL = "google/flan-t5-base" +DEVICE = "cuda" if torch.cuda.is_available() else "cpu" +PREFIX = "summarize: " # change to something else if you fine-tuned for a different task +MAX_INPUT_LEN = 1024 +MAX_NEW_TOKENS = 256 +NUM_BEAMS = 4 + +# --- load model --- +print("Loading model...") +tok = AutoTokenizer.from_pretrained(ADAPTER_DIR) +base = AutoModelForSeq2SeqLM.from_pretrained(BASE_MODEL) +model = PeftModel.from_pretrained(base, ADAPTER_DIR).to(DEVICE).eval() +print("Ready.") + +# --- chat loop --- +while True: + user = input("\n🧠 You: ").strip() + if not user: + continue + if user.lower() in {"exit", "quit", "q"}: + print("Bye.") + break + + enc = tok(PREFIX + user, return_tensors="pt", truncation=True, max_length=MAX_INPUT_LEN).to(DEVICE) + with torch.inference_mode(): + out = model.generate(**enc, + max_new_tokens=MAX_NEW_TOKENS, + num_beams=NUM_BEAMS, + no_repeat_ngram_size=3, + early_stopping=True) + print("\n🤖 Model:", tok.decode(out[0], skip_special_tokens=True)) From 1c6f8e3607cfb60098d260c046aefed566273040 Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Wed, 15 Oct 2025 16:01:24 +1000 Subject: [PATCH 09/41] added gitignore --- recognition/Project13-TristanGreen/.gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 recognition/Project13-TristanGreen/.gitignore diff --git a/recognition/Project13-TristanGreen/.gitignore b/recognition/Project13-TristanGreen/.gitignore new file mode 100644 index 000000000..4096bf271 --- /dev/null +++ b/recognition/Project13-TristanGreen/.gitignore @@ -0,0 +1,2 @@ +/runs +/__pycache__ \ No newline at end of file From 6b9515b7714fa3be6b97f0743dc77c9acea425c8 Mon Sep 17 00:00:00 2001 From: Tristan Green Date: Thu, 16 Oct 2025 16:27:16 +1000 Subject: [PATCH 10/41] Edited README to add title --- recognition/Project13-TristanGreen/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/recognition/Project13-TristanGreen/README.md b/recognition/Project13-TristanGreen/README.md index 93123d9ff..1076c89cf 100644 --- a/recognition/Project13-TristanGreen/README.md +++ b/recognition/Project13-TristanGreen/README.md @@ -1,4 +1,5 @@ +> Brain-T5: A lightweight model fine-tuned for simplifying medical jargon using FLAN-T5 and LoRA. From 6c25f2942b87159b2383b3b20eb59baba197c6aa Mon Sep 17 00:00:00 2001 From: Tristan Green Date: Thu, 16 Oct 2025 16:35:44 +1000 Subject: [PATCH 11/41] README: added headings for topic but yet to fill. --- recognition/Project13-TristanGreen/README.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/recognition/Project13-TristanGreen/README.md b/recognition/Project13-TristanGreen/README.md index 1076c89cf..25c68884a 100644 --- a/recognition/Project13-TristanGreen/README.md +++ b/recognition/Project13-TristanGreen/README.md @@ -1,8 +1,26 @@ +

+

Brain-T5: A lightweight model fine-tuned for simplifying medical jargon using FLAN-T5 and LoRA.

+

+ +## Project Motivation: -> Brain-T5: A lightweight model fine-tuned for simplifying medical jargon using FLAN-T5 and LoRA. +## Demo Examples: +## Features: +## Installation: +## Training Usage: + +## Chat Usage: + +## Training Resuts: + + + + + +README structure heavily inspired by HF transformers page. Train e1: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 150454/150454 [5:20:10<00:00, 7.83batch/s, loss=1.3393, sps=7.8] From 1062c94c23aef6fd64d890355623ea2669620f7d Mon Sep 17 00:00:00 2001 From: Tristan Green Date: Thu, 16 Oct 2025 17:33:41 +1000 Subject: [PATCH 12/41] work on README. added overview, motivation, features and codebase layout. --- recognition/Project13-TristanGreen/README.md | 34 +++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/recognition/Project13-TristanGreen/README.md b/recognition/Project13-TristanGreen/README.md index 25c68884a..a5bce522d 100644 --- a/recognition/Project13-TristanGreen/README.md +++ b/recognition/Project13-TristanGreen/README.md @@ -1,12 +1,39 @@

Brain-T5: A lightweight model fine-tuned for simplifying medical jargon using FLAN-T5 and LoRA.

- + +Brain-T5 is a lightweight language model designed to translate technical clinical and biomedical text into layperson summaries so non-experts can understand them. Built on top of FLAN-T5 using LoRA fine-tuning, it is deployable on consumer grade GPUs and acts to assist research into medical fields from outer disciplines and acts as an assistant for patient communication. This repository includes full training, evaluation and inference pipelines, from dataset intake to an interactive chat mode. + ## Project Motivation: +Between medical professionals and the average person or researcher in an outer discipline, the scope of what "standard language" is does not cross over very well. Jargon is used excessively inside the medical world which may cause outer folk to struggle to understand basic summaries, research abstracts/results, or diagnostic reports. The only tools that exist that fit this use case effectively are large language models such as OpenAI's GPT-3+, Google's Gemini, Anthropic's Sonnet and others, however they cannot be localised easily on consumer grade hardware and use inputted conversational data to train their models. Many medical institutions may not want their data to cross borders, making a local option preferrable. -## Demo Examples: +Brain-T5 aims to close this gap by: + +- Using a fine-tuning approach with LoRA to an existing reliable text model +- Using the lightweight T5 model from Hugging Face trained on reliable medical summarisations. +- Using an open source, easy-to-install model that can be used on average consumer-grade hardware. + +Brain-T5 is a major step toward bridging the gap between the average person and medical knowledge and aims to enhance both clinical practices and interdisciplinary research around the world. ## Features: +- **LoRA-based fine-tuning** - train large models on consumer-grade GPUs. +- **Supports HuggingFace datasets, CSV, JSON** - flexible with data types. +- **Built-in ROUGE evaluation** - automatic scoring after each training epoch. +- **Interactive Chat CLI(`chat.py`)** - real-time inference like a medical assistant. +- **Modular codebase** - easy to extend or adapt to alternative domains (legal, finance, etc.) + +## Project Structure +``` +├── train.py # Full training pipeline with metrics and logging +├── predict.py # Batch inference on JSONL or single text +├── chat.py # Interactive CLI for conversational testing +├── modules.py # Tokenizer/model loaders and LoRA attachment +├── dataset.py # Dataset wrapper and fast collator +├── runs/ # LoRA adapters & metrics saved here +└── README.md +``` + +## Demo Examples: ## Installation: @@ -20,8 +47,7 @@ -README structure heavily inspired by HF transformers page. - +README structure heavily inspired by HF transformers pag Train e1: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 150454/150454 [5:20:10<00:00, 7.83batch/s, loss=1.3393, sps=7.8] [epoch 1] train_loss=1.3393 From 3b713ee35e2dd3c11a8d7d107ad6de8b3468f2f1 Mon Sep 17 00:00:00 2001 From: Tristan Green Date: Thu, 16 Oct 2025 17:38:25 +1000 Subject: [PATCH 13/41] added requirements.txt for training model. --- recognition/Project13-TristanGreen/requirements.txt | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 recognition/Project13-TristanGreen/requirements.txt diff --git a/recognition/Project13-TristanGreen/requirements.txt b/recognition/Project13-TristanGreen/requirements.txt new file mode 100644 index 000000000..09bd267d7 --- /dev/null +++ b/recognition/Project13-TristanGreen/requirements.txt @@ -0,0 +1,8 @@ +torch +transformers +peft +evaluate +datasets +tqdm +numpy + From b57e1f7c0fad69f2a2a4982de92233065f3b7af6 Mon Sep 17 00:00:00 2001 From: Tristan Green <66065263+TPGCIG@users.noreply.github.com> Date: Fri, 17 Oct 2025 17:33:06 +1000 Subject: [PATCH 14/41] uploaded icon image for readme --- recognition/Project13-TristanGreen/brain t5.png | Bin 0 -> 82826 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 recognition/Project13-TristanGreen/brain t5.png diff --git a/recognition/Project13-TristanGreen/brain t5.png b/recognition/Project13-TristanGreen/brain t5.png new file mode 100644 index 0000000000000000000000000000000000000000..cab463a0a375634de80cb0bfa2b7d93d2f37bb22 GIT binary patch literal 82826 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

xoTYB)`|+NdE0j&Jb_yYoc4s_;aHs2y%@IhAOky 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

xoTYB)`|+NdE0j&Jb_yYoc4s_;aHs2y%@IhAOky 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

FU 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 literal 0 HcmV?d00001 From 3dfc02971a1312eb5558a75343f35f35db8ae78a Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Fri, 17 Oct 2025 17:39:33 +1000 Subject: [PATCH 16/41] Remove duplicate image from Project folder --- recognition/Project13-TristanGreen/brain t5.png | Bin 82826 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 recognition/Project13-TristanGreen/brain t5.png diff --git a/recognition/Project13-TristanGreen/brain t5.png b/recognition/Project13-TristanGreen/brain t5.png deleted file mode 100644 index cab463a0a375634de80cb0bfa2b7d93d2f37bb22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82826 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

xoTYB)`|+NdE0j&Jb_yYoc4s_;aHs2y%@IhAOky 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

FU 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 From 9f22ed2bd69555cd6f0c62a5e64a4d2ed9e06b4f Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Fri, 17 Oct 2025 17:42:47 +1000 Subject: [PATCH 17/41] renamed image file braint5.png --- .../assets/images/{brain t5.png => braint5.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename recognition/Project13-TristanGreen/assets/images/{brain t5.png => braint5.png} (100%) diff --git a/recognition/Project13-TristanGreen/assets/images/brain t5.png b/recognition/Project13-TristanGreen/assets/images/braint5.png similarity index 100% rename from recognition/Project13-TristanGreen/assets/images/brain t5.png rename to recognition/Project13-TristanGreen/assets/images/braint5.png From 3792b1c9a4929565182bf5a7b7d4a688b91427a1 Mon Sep 17 00:00:00 2001 From: Tristan Green <66065263+TPGCIG@users.noreply.github.com> Date: Fri, 17 Oct 2025 17:45:42 +1000 Subject: [PATCH 18/41] Update README with project details and logo --- recognition/Project13-TristanGreen/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/recognition/Project13-TristanGreen/README.md b/recognition/Project13-TristanGreen/README.md index a5bce522d..06c46d97c 100644 --- a/recognition/Project13-TristanGreen/README.md +++ b/recognition/Project13-TristanGreen/README.md @@ -1,3 +1,8 @@ +

+ Logo +

+ +

Brain-T5: A lightweight model fine-tuned for simplifying medical jargon using FLAN-T5 and LoRA.

From db5d0a220be16ddddf2865864c8e493e84d86ac8 Mon Sep 17 00:00:00 2001 From: Tristan Green Date: Sun, 19 Oct 2025 18:14:10 +1000 Subject: [PATCH 19/41] Added training usage to README --- recognition/Project13-TristanGreen/README.md | 103 +++++++++++++++++-- 1 file changed, 95 insertions(+), 8 deletions(-) diff --git a/recognition/Project13-TristanGreen/README.md b/recognition/Project13-TristanGreen/README.md index 06c46d97c..ccdaa2ce9 100644 --- a/recognition/Project13-TristanGreen/README.md +++ b/recognition/Project13-TristanGreen/README.md @@ -32,7 +32,7 @@ Brain-T5 is a major step toward bridging the gap between the average person and ├── train.py # Full training pipeline with metrics and logging ├── predict.py # Batch inference on JSONL or single text ├── chat.py # Interactive CLI for conversational testing -├── modules.py # Tokenizer/model loaders and LoRA attachment +├── modules.py # Tokeniser/model loaders and LoRA attachment ├── dataset.py # Dataset wrapper and fast collator ├── runs/ # LoRA adapters & metrics saved here └── README.md @@ -40,26 +40,113 @@ Brain-T5 is a major step toward bridging the gap between the average person and ## Demo Examples: + ## Installation: +``` +# First, clone the repository and at the same time, checkout the topic-recognition branch. +git clone -b topic-recognition https://github.com/TPGCIG/PatternAnalysis-2025/ + +# Change directory to the Brain-T5 one. +cd recognition/Project13-TristanGreen + +# Install the dependencies. +pip install -r requirements.txt +``` + +You're now ready to go! + ## Training Usage: +The user has complete control over the training parameters, model used (in this circumstance, the user may want to train on `flan-t5-small`, `flan-t5-base`, `flan-t5-large`, `flan-t5-xl`, and `flan-t5-xxl`, however the default is set to `flan-t5-base` as it nets reliable results on consumer grade GPUs. -## Chat Usage: +## Training Usage -## Training Resuts: +### 1) Prepare data +Supports **JSONL**, **CSV**, or the **BioLaySumm HF dataset**. +- **JSONL** (one object per line) — default columns: `report` (input), `summary` (target) + ```json + {"report": "CT scan shows...", "summary": "The scan shows..."} + {"report": "Patient presents with...", "summary": "In plain English..."} + ``` +- **CSV** (has headers): `report,summary,...` + +### 2) Quick-start commands +Pick ONE of these, then iterate. + +**A. Local JSONL** +```bash +python train.py --train_source local_jsonl --train_path train.jsonl --val_source local_jsonl --val_path val.jsonl --output_dir runs/flan_t5_base_lora_myexp --batch_size 1 --accum 16 --epochs 3 --lr 2e-4 --fp16 +``` + +**B. Local CSV** +```bash +python train.py --train_source local_csv --train_path train.csv --val_source local_csv --val_path val.csv --input_col report --target_col summary --output_dir runs/flan_t5_base_lora_csv --batch_size 1 --accum 16 --epochs 3 --lr 2e-4 --fp16 +``` +**C. Hugging Face (BioLaySumm)** +> Requires `pip install datasets`. Uses the built-in dataset loader. +> `--train_path`/`--val_path` are **split names** (e.g., `train`, `validation`, `test`). +```bash +python train.py --train_source hf --train_path train --val_source hf --val_path validation --output_dir runs/flan_t5_base_lora_biolaysumm --batch_size 1 --accum 16 --epochs 3 --lr 2e-4 --fp16 +``` + +### 3) What the script actually does +- Builds tokenizer + datasets via `make_datasets(...)` with your chosen **source kind** (`local_jsonl`, `local_csv`, or `hf`) and columns (`--input_col`, `--target_col`). +- Attaches **LoRA** adapters to FLAN‑T5 and trains with AdamW + cosine schedule. +- Evaluates with **ROUGE** at epoch end (and optionally mid‑epoch with `--eval_every_steps`). +- Saves best adapters + tokenizer to `--output_dir`, along with `metrics.json` and `train_log.csv`. +If you don’t see these files, you didn’t train anything meaningful. + +### 4) Arguments +- **Data**: `--train_source/--train_path`, `--val_source/--val_path`, `--input_col`, `--target_col` +- **Sequence lengths**: `--max_input_len`, `--max_target_len` (truncate aggressively if OOM) +- **Batching**: `--batch_size`, `--accum` (effective batch = batch_size × accum) +- **Optim**: `--lr`, `--weight_decay`, `--warmup_steps`, `--clip` +- **LoRA**: `--lora_r`, `--lora_alpha`, `--lora_dropout` +- **Eval**: `--eval_batch_size`, `--eval_max_new_tokens`, `--eval_beams`, `--eval_every_steps` +- **Misc**: `--epochs`, `--seed`, `--fp16` + +### 5) Outputs (verify or it didn’t happen) +Inside your `--output_dir`: +``` +runs// +├── adapter_config.json +├── adapter_model.bin # LoRA weights +├── tokenizer.json +├── metrics.json # best ROUGE +└── train_log.csv # step-wise loss +``` +You should also see console logs like: +``` +[epoch 1] train_loss=... +[epoch 1] ROUGE: {'rouge1': ..., 'rouge2': ..., 'rougeL': ..., 'rougeLsum': ...} +``` + +### 6) Use the trained adapters +Single text: +```bash +python predict.py --adapter_dir runs/ --text "Put clinical text here" --fp16 +``` +Batch JSONL: +```bash +python predict.py --adapter_dir runs/ --jsonl dev.jsonl --input_col report --out_path predictions.jsonl +``` +### 7) General usage tips +- If CUDA OOM: lower `--max_input_len`/`--max_target_len`, increase `--accum`, or drop `--fp16` if your GPU cannot handle the defaults. +- If ROUGE is flat, your data columns are probably wrong. Print a few samples. +- If `runs/` is empty, you never beat your previous best—check learning rate and dataset. -README structure heavily inspired by HF transformers pag +## Chat Usage: + + + +## Training Resuts: -Train e1: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 150454/150454 [5:20:10<00:00, 7.83batch/s, loss=1.3393, sps=7.8] [epoch 1] train_loss=1.3393 -Eval: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1250/1250 [1:01:16<00:00, 2.94s/batch] [epoch 1] ROUGE: {'rouge1': 0.639758940949706, 'rouge2': 0.4262667182806449, 'rougeL': 0.5793631565756041, 'rougeLsum': 0.5795225947980385} -[epoch 1] ✓ saved best adapters to runs/flan_t5_base_lora_biolaysumm_debug -done. From 3c177a0c4d58a4049669c01f5fc26d6c9e551001 Mon Sep 17 00:00:00 2001 From: Tristan Green Date: Sun, 19 Oct 2025 18:18:52 +1000 Subject: [PATCH 20/41] fixed small typo in README --- recognition/Project13-TristanGreen/README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/recognition/Project13-TristanGreen/README.md b/recognition/Project13-TristanGreen/README.md index ccdaa2ce9..b7e9a5964 100644 --- a/recognition/Project13-TristanGreen/README.md +++ b/recognition/Project13-TristanGreen/README.md @@ -56,9 +56,6 @@ pip install -r requirements.txt You're now ready to go! -## Training Usage: -The user has complete control over the training parameters, model used (in this circumstance, the user may want to train on `flan-t5-small`, `flan-t5-base`, `flan-t5-large`, `flan-t5-xl`, and `flan-t5-xxl`, however the default is set to `flan-t5-base` as it nets reliable results on consumer grade GPUs. - ## Training Usage ### 1) Prepare data From 4e353686e6cd64992abe51ecd64c898d5383a7a3 Mon Sep 17 00:00:00 2001 From: Tristan Green Date: Sun, 19 Oct 2025 18:25:15 +1000 Subject: [PATCH 21/41] Added table of contents and touched up README --- recognition/Project13-TristanGreen/README.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/recognition/Project13-TristanGreen/README.md b/recognition/Project13-TristanGreen/README.md index b7e9a5964..849a753eb 100644 --- a/recognition/Project13-TristanGreen/README.md +++ b/recognition/Project13-TristanGreen/README.md @@ -9,6 +9,15 @@ Brain-T5 is a lightweight language model designed to translate technical clinical and biomedical text into layperson summaries so non-experts can understand them. Built on top of FLAN-T5 using LoRA fine-tuning, it is deployable on consumer grade GPUs and acts to assist research into medical fields from outer disciplines and acts as an assistant for patient communication. This repository includes full training, evaluation and inference pipelines, from dataset intake to an interactive chat mode. +## Table of Contents +- [Project Motivation](#project-motivation) +- [Features](#features) +- [Project Structure](#project-structure) +- [Installation](#installation) +- [Training Usage](#training-usage) +- [Chat Usage](#chat-usage) +- [Training Results](#training-results) + ## Project Motivation: Between medical professionals and the average person or researcher in an outer discipline, the scope of what "standard language" is does not cross over very well. Jargon is used excessively inside the medical world which may cause outer folk to struggle to understand basic summaries, research abstracts/results, or diagnostic reports. The only tools that exist that fit this use case effectively are large language models such as OpenAI's GPT-3+, Google's Gemini, Anthropic's Sonnet and others, however they cannot be localised easily on consumer grade hardware and use inputted conversational data to train their models. Many medical institutions may not want their data to cross borders, making a local option preferrable. @@ -38,9 +47,6 @@ Brain-T5 is a major step toward bridging the gap between the average person and └── README.md ``` -## Demo Examples: - - ## Installation: ``` @@ -134,15 +140,13 @@ python predict.py --adapter_dir runs/ --jsonl dev.jsonl --input_col report - If ROUGE is flat, your data columns are probably wrong. Print a few samples. - If `runs/` is empty, you never beat your previous best—check learning rate and dataset. - - ## Chat Usage: ## Training Resuts: -[epoch 1] train_loss=1.3393 +[epoch 1] train_loss=1.3393
[epoch 1] ROUGE: {'rouge1': 0.639758940949706, 'rouge2': 0.4262667182806449, 'rougeL': 0.5793631565756041, 'rougeLsum': 0.5795225947980385} From 3f03b7d767c767dae2bbfecde22084d00c3f829a Mon Sep 17 00:00:00 2001 From: Tristan Green Date: Mon, 20 Oct 2025 15:37:31 +1000 Subject: [PATCH 22/41] added sample usage to README.md --- recognition/Project13-TristanGreen/README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/recognition/Project13-TristanGreen/README.md b/recognition/Project13-TristanGreen/README.md index 849a753eb..2c48a4284 100644 --- a/recognition/Project13-TristanGreen/README.md +++ b/recognition/Project13-TristanGreen/README.md @@ -142,7 +142,19 @@ python predict.py --adapter_dir runs/ --jsonl dev.jsonl --input_col report ## Chat Usage: +You: “CT angiography shows ~70% stenosis of the proximal LAD; plan for PCI if symptoms persist despite maximal medical therapy.” +Model: “There’s a notable blockage in a main heart artery. The team suggests a procedure if medicines don’t help enough.” +You: “MRI brain: multiple periventricular T2/FLAIR hyperintensities suggestive of demyelination; correlate clinically for MS.” +Model: “Scans show several spots in brain areas often linked to nerve coating problems. Doctors will compare this with symptoms.” + +You: “HbA1c 9.2% despite metformin 1g BID; initiate basal insulin 10u qHS and titrate to fasting 5–7 mmol/L.” +Model: “Blood sugar control isn’t good with current meds. Start a nightly insulin dose and adjust to get morning sugars into a better range.” + +You: “Echo: LVEF 35%, global hypokinesis, mild MR; optimize GDMT—ACEi/ARB, beta-blocker, MRA.” +Model: “Heart pumping is weaker than normal with some valve leak. Use standard heart medicines to improve function.” + +> This sample was trained on 3 epochs over a 16 hour period, better results can come as result of longer training and adjustable parameters. The rouge scores for this training are seen in [Training Usage](#training-usage) ## Training Resuts: From 3e308942b6098af1fb871dceb983e5c50834b853 Mon Sep 17 00:00:00 2001 From: Tristan Green Date: Mon, 20 Oct 2025 16:49:48 +1000 Subject: [PATCH 23/41] added images for T5 explanation --- .../assets/images/t5architecture.jpg | Bin 0 -> 164863 bytes .../assets/images/t5simple.png | Bin 0 -> 62533 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 recognition/Project13-TristanGreen/assets/images/t5architecture.jpg create mode 100644 recognition/Project13-TristanGreen/assets/images/t5simple.png diff --git a/recognition/Project13-TristanGreen/assets/images/t5architecture.jpg b/recognition/Project13-TristanGreen/assets/images/t5architecture.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a970ff094d2a625bddf555dd4c67dc5ed7fcf052 GIT binary patch literal 164863 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
g*Rt}Bij02@y&?7iU)P|M4F6ipZRn8A!`V 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 z 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�Xkle68{&RiXY$mm3yxs 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 literal 0 HcmV?d00001 From a2286c1e634214d7b8b93ed016fe853d3ff02280 Mon Sep 17 00:00:00 2001 From: Tristan Green Date: Mon, 20 Oct 2025 17:14:27 +1000 Subject: [PATCH 24/41] added lots of detail to README --- recognition/Project13-TristanGreen/README.md | 70 ++++++++++++++++---- 1 file changed, 56 insertions(+), 14 deletions(-) diff --git a/recognition/Project13-TristanGreen/README.md b/recognition/Project13-TristanGreen/README.md index 2c48a4284..31461415b 100644 --- a/recognition/Project13-TristanGreen/README.md +++ b/recognition/Project13-TristanGreen/README.md @@ -10,13 +10,17 @@ Brain-T5 is a lightweight language model designed to translate technical clinical and biomedical text into layperson summaries so non-experts can understand them. Built on top of FLAN-T5 using LoRA fine-tuning, it is deployable on consumer grade GPUs and acts to assist research into medical fields from outer disciplines and acts as an assistant for patient communication. This repository includes full training, evaluation and inference pipelines, from dataset intake to an interactive chat mode. ## Table of Contents -- [Project Motivation](#project-motivation) -- [Features](#features) -- [Project Structure](#project-structure) -- [Installation](#installation) -- [Training Usage](#training-usage) -- [Chat Usage](#chat-usage) -- [Training Results](#training-results) +- Brain-T5 + - [Project Motivation](#project-motivation) + - [Features](#features) + - [Project Structure](#project-structure) + - [Installation](#installation) + - [Training Usage](#training-usage) + - [Chat Usage](#chat-usage) + - [Training Results](#training-results) +- The FLAN-T5 Model + - [What is FLAN-T5?](#what-is-flan-t5) + - [Why not other models?](#why-not-other-models) ## Project Motivation: Between medical professionals and the average person or researcher in an outer discipline, the scope of what "standard language" is does not cross over very well. Jargon is used excessively inside the medical world which may cause outer folk to struggle to understand basic summaries, research abstracts/results, or diagnostic reports. The only tools that exist that fit this use case effectively are large language models such as OpenAI's GPT-3+, Google's Gemini, Anthropic's Sonnet and others, however they cannot be localised easily on consumer grade hardware and use inputted conversational data to train their models. Many medical institutions may not want their data to cross borders, making a local option preferrable. @@ -30,11 +34,11 @@ Brain-T5 aims to close this gap by: Brain-T5 is a major step toward bridging the gap between the average person and medical knowledge and aims to enhance both clinical practices and interdisciplinary research around the world. ## Features: -- **LoRA-based fine-tuning** - train large models on consumer-grade GPUs. -- **Supports HuggingFace datasets, CSV, JSON** - flexible with data types. -- **Built-in ROUGE evaluation** - automatic scoring after each training epoch. -- **Interactive Chat CLI(`chat.py`)** - real-time inference like a medical assistant. -- **Modular codebase** - easy to extend or adapt to alternative domains (legal, finance, etc.) +* **LoRA-based fine-tuning** - train large models on consumer-grade GPUs. +* **Supports HuggingFace datasets, CSV, JSON** - flexible with data types. +* **Built-in ROUGE evaluation** - automatic scoring after each training epoch. +* **Interactive Chat CLI(`chat.py`)** - real-time inference like a medical assistant. +* **Modular codebase** - easy to extend or adapt to alternative domains (legal, finance, etc.) ## Project Structure ``` @@ -142,6 +146,9 @@ python predict.py --adapter_dir runs/ --jsonl dev.jsonl --input_col report ## Chat Usage: +### Examples +> This sample was trained on 3 epochs over a 16 hour period, better results can come as result of longer training and adjustable parameters. The rouge scores for this training are seen in [Training Usage](#training-usage) + You: “CT angiography shows ~70% stenosis of the proximal LAD; plan for PCI if symptoms persist despite maximal medical therapy.” Model: “There’s a notable blockage in a main heart artery. The team suggests a procedure if medicines don’t help enough.” @@ -152,22 +159,57 @@ You: “HbA1c 9.2% despite metformin 1g BID; initiate basal insulin 10u qHS and Model: “Blood sugar control isn’t good with current meds. Start a nightly insulin dose and adjust to get morning sugars into a better range.” You: “Echo: LVEF 35%, global hypokinesis, mild MR; optimize GDMT—ACEi/ARB, beta-blocker, MRA.” -Model: “Heart pumping is weaker than normal with some valve leak. Use standard heart medicines to improve function.” +Model: “Heart pumping is weaker than normal with some valve leak. Use standard lung medicines to improve function.” + +### Error Analysis +The model consistently drops critical figures (example 1: ~70%, example 3: 9.2%) and summarises the responses with shallow descriptions that lose a lot of meaning. This is likely since, while T5 uses attention out-of-the-box, it doesn't learn to prioritise clinically critical details like these ones. This is likely since we are fine-tuning the model that is fundamentally trained on the [Common Crawl](https://commoncrawl.org/) dataset which does not prioritise numeric values or risk markers. In downstream fine-tuning, the model should be explicitly taught that figures have substantial meaning and should be valued more than other tokens that the model processes which the Common Crawl dataset is trained to do. + +The model also hallucinates (rarely though) (example 4: *use standard lung medicines* in heart context) and can forget the context loosely. This is obviously problematic but in downstream fine-tuning, the model should be explicitly over-attentive to the context as mistakes of this nature can cause problems in the medical field. +These limitations, while problematic, can be overcome via training on consumer grade hardware. Also, under proper supervision from a medical professional, these bugs can be quickly identified and flagged. -> This sample was trained on 3 epochs over a 16 hour period, better results can come as result of longer training and adjustable parameters. The rouge scores for this training are seen in [Training Usage](#training-usage) ## Training Resuts: +After the first epoch, the following results were achieved: + [epoch 1] train_loss=1.3393
[epoch 1] ROUGE: {'rouge1': 0.639758940949706, 'rouge2': 0.4262667182806449, 'rougeL': 0.5793631565756041, 'rougeLsum': 0.5795225947980385} +# The FLAN-T5 Model +## What is T5? +T5 (Text-to-Text Transfer Transformer) is a transformer model built completely on a text-to-text framework. This framework treats every task in Natural Language Processing (NLP), whether it be machine translation, summarisation, or question-answering, as a process of taking text as input and producing text as output. This unification allows the same model architecture, objective function, and training procedure to be applied across all tasks, massively simplifying the entire NLP training pipeline. + + +The super summarised explanation on how the model works (provided by OpenAI's ChatGPT) is: + +> This is the quoted text from ChatGPT. + +1. Tokenise → Embed → + Position. Words become vectors, add position info so the model knows order. +2. Encoder (repeated N×): + - Self-attention: each word looks at all other words to decide what matters. + - Feed-forward: a per-token mini-MLP to transform features. + - Add & Norm: residual skip + layer norm to keep training stable.
Output = contextual vectors for every input token. +3. Decoder input: start with / and previously generated tokens shifted right. +4. Decoder block (repeated N×): + - Masked self-attention: looks only at past output tokens (mask stops peeking at the future). + - Cross-attention: queries the encoder outputs so the decoder can “look up” relevant parts of the input. + - Feed-forward and Add & Norm again. +5. Linear → Softmax: turn the decoder’s last vector into a probability over the vocabulary; pick the next token; loop 4–5 until done. +> End quote. + +This is a representation of how T5 unifies all forms of text-to-text input/output to heavily generalise its use case and simply learning. +## What is FLAN-T5? +FLAN-T5 (Fine-tuned LAnguate Net T5) is an enhanced version of the original [T5](https://medium.com/analytics-vidhya/t5-a-detailed-explanation-a0ac9bc53e51) but fine-tuned using a technique called instruction tuning. +During training, FLAN-T5 is exposed to a massive number of tasks that are all formatted as natural language instructions (e.g. "Answer the following question: ..."). This training paradigm significantly improves the model's ability to: +1. **Follow instructions** since it is built on user prompts instead of general text data. +2, **Generalise** since the training prompts may map a new, prompted task out for the model to answer which can help it understand how to answer newer tasks it previously couldnt. From 5c106cf0dadf7df7938827b92642849db8f8df91 Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Mon, 20 Oct 2025 20:53:52 +1000 Subject: [PATCH 25/41] removed a command line argument from train.py which was unnecessary --- recognition/Project13-TristanGreen/train.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/recognition/Project13-TristanGreen/train.py b/recognition/Project13-TristanGreen/train.py index 7ce9a7bf5..669829571 100644 --- a/recognition/Project13-TristanGreen/train.py +++ b/recognition/Project13-TristanGreen/train.py @@ -105,8 +105,6 @@ def main(): help="Limit validation examples during dev") p.add_argument("--eval_batch_size", type=int, default=8, help="Batch size used for generation during eval") - p.add_argument("--eval_every_steps", type=int, default=None, - help="If set, run eval every N optimizer steps (in addition to end-of-epoch)") args = p.parse_args() @@ -208,11 +206,6 @@ def main(): optim.zero_grad(set_to_none=True) optimizer_steps += 1 - # mid-epoch eval hook - if (args.eval_every_steps is not None) and (optimizer_steps % args.eval_every_steps == 0): - scores = run_eval(model, tokenizer, val_loader, device, args, rouge_metric) - if scores is not None: - print(f"[step {optimizer_steps}] ROUGE: {scores}") # live progress avg_loss = running / max(1, (step_in_epoch // args.accum)) @@ -238,7 +231,7 @@ def main(): tokenizer.save_pretrained(args.output_dir) with open(os.path.join(args.output_dir, "metrics.json"), "w") as f: json.dump({"best_rougeLsum": best_rougeLsum, "epoch": epoch, "scores": scores}, f, indent=2) - print(f"[epoch {epoch}] ✓ saved best adapters to {args.output_dir}") + print(f"[epoch {epoch}] saved best adapters to {args.output_dir}") log_file.close() print("done.") From db252029cc875c9166dd45a7f0d53d565ce547e9 Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Sun, 2 Nov 2025 18:57:24 +1000 Subject: [PATCH 26/41] added command line arg option to choose which weights you want to use. --- recognition/Project13-TristanGreen/chat.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/recognition/Project13-TristanGreen/chat.py b/recognition/Project13-TristanGreen/chat.py index 245e6128e..23830de9d 100644 --- a/recognition/Project13-TristanGreen/chat.py +++ b/recognition/Project13-TristanGreen/chat.py @@ -1,16 +1,22 @@ import torch from transformers import AutoTokenizer, AutoModelForSeq2SeqLM from peft import PeftModel +import argparse + +p = argparse.ArgumentParser() + +p.add_argument("--model_dir", required=True) # --- config --- -ADAPTER_DIR = "runs/flan_t5_base_lora_biolaysumm_debug" +ADAPTER_DIR = p.parse_args().model_dir BASE_MODEL = "google/flan-t5-base" DEVICE = "cuda" if torch.cuda.is_available() else "cpu" -PREFIX = "summarize: " # change to something else if you fine-tuned for a different task +PREFIX = "summarize: " MAX_INPUT_LEN = 1024 MAX_NEW_TOKENS = 256 NUM_BEAMS = 4 + # --- load model --- print("Loading model...") tok = AutoTokenizer.from_pretrained(ADAPTER_DIR) From b04e1fb94dd1ca1434d30846551175341ed87d20 Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Sun, 2 Nov 2025 18:58:21 +1000 Subject: [PATCH 27/41] robustness changes and editing tool usage a bit as some functions have been updated. --- recognition/Project13-TristanGreen/README.md | 127 ++++++++++++------- 1 file changed, 83 insertions(+), 44 deletions(-) diff --git a/recognition/Project13-TristanGreen/README.md b/recognition/Project13-TristanGreen/README.md index 31461415b..4b33f5346 100644 --- a/recognition/Project13-TristanGreen/README.md +++ b/recognition/Project13-TristanGreen/README.md @@ -68,62 +68,55 @@ You're now ready to go! ## Training Usage -### 1) Prepare data -Supports **JSONL**, **CSV**, or the **BioLaySumm HF dataset**. -- **JSONL** (one object per line) — default columns: `report` (input), `summary` (target) - ```json - {"report": "CT scan shows...", "summary": "The scan shows..."} - {"report": "Patient presents with...", "summary": "In plain English..."} - ``` -- **CSV** (has headers): `report,summary,...` - -### 2) Quick-start commands -Pick ONE of these, then iterate. - -**A. Local JSONL** -```bash -python train.py --train_source local_jsonl --train_path train.jsonl --val_source local_jsonl --val_path val.jsonl --output_dir runs/flan_t5_base_lora_myexp --batch_size 1 --accum 16 --epochs 3 --lr 2e-4 --fp16 -``` -**B. Local CSV** +### 1) Quick-start commands +**Hugging Face (BioLaySumm)** +> Requires `pip install datasets`. Uses the built-in dataset loader. ```bash -python train.py --train_source local_csv --train_path train.csv --val_source local_csv --val_path val.csv --input_col report --target_col summary --output_dir runs/flan_t5_base_lora_csv --batch_size 1 --accum 16 --epochs 3 --lr 2e-4 --fp16 +python train.py --output_dir [dir_name] ``` -**C. Hugging Face (BioLaySumm)** -> Requires `pip install datasets`. Uses the built-in dataset loader. -> `--train_path`/`--val_path` are **split names** (e.g., `train`, `validation`, `test`). +### 2) For fine-grain training and control over parameters ```bash python train.py --train_source hf --train_path train --val_source hf --val_path validation --output_dir runs/flan_t5_base_lora_biolaysumm --batch_size 1 --accum 16 --epochs 3 --lr 2e-4 --fp16 ``` ### 3) What the script actually does -- Builds tokenizer + datasets via `make_datasets(...)` with your chosen **source kind** (`local_jsonl`, `local_csv`, or `hf`) and columns (`--input_col`, `--target_col`). +- Builds tokenizer + datasets via `make_datasets(...)` with `hf` and columns (`--input_col`, `--target_col`). - Attaches **LoRA** adapters to FLAN‑T5 and trains with AdamW + cosine schedule. -- Evaluates with **ROUGE** at epoch end (and optionally mid‑epoch with `--eval_every_steps`). -- Saves best adapters + tokenizer to `--output_dir`, along with `metrics.json` and `train_log.csv`. -If you don’t see these files, you didn’t train anything meaningful. +- Evaluates with **ROUGE** at epoch. +- Saves best adapters + tokenizer to `--output_dir`, along with `metrics.json`, `train_log.csv` and graphs for `loss` and `ROUGE` scores per-epoch. ### 4) Arguments -- **Data**: `--train_source/--train_path`, `--val_source/--val_path`, `--input_col`, `--target_col` -- **Sequence lengths**: `--max_input_len`, `--max_target_len` (truncate aggressively if OOM) - **Batching**: `--batch_size`, `--accum` (effective batch = batch_size × accum) - **Optim**: `--lr`, `--weight_decay`, `--warmup_steps`, `--clip` - **LoRA**: `--lora_r`, `--lora_alpha`, `--lora_dropout` -- **Eval**: `--eval_batch_size`, `--eval_max_new_tokens`, `--eval_beams`, `--eval_every_steps` +- **Eval**: `--eval_batch_size`, `--eval_max_new_tokens`, `--eval_beams` - **Misc**: `--epochs`, `--seed`, `--fp16` ### 5) Outputs (verify or it didn’t happen) Inside your `--output_dir`: ``` runs// -├── adapter_config.json -├── adapter_model.bin # LoRA weights -├── tokenizer.json -├── metrics.json # best ROUGE -└── train_log.csv # step-wise loss +├── adapter_config.json # LoRA adapter setup (rank, alpha, target modules) +├── adapter_model.safetensors # Actual trained LoRA weight deltas +├── hardware.json # GPU name, VRAM, and compute capability info +├── history_val.csv # Validation ROUGE scores per epoch (for plotting) +├── metrics_test.json # Final held-out test ROUGE scores +├── metrics_val.json # Best validation epoch and its ROUGE metrics +├── special_tokens_map.json # Token IDs for , , etc. (auto from tokenizer) +├── README.md # Auto-generated PEFT model card (safe to delete) +├── tokenizer.json # Full tokenizer vocab + merges +├── tokenizer_config.json # Tokenizer settings (truncation, padding, etc.) +├── time.json # Total training time and epochs elapsed +├── rouge_val_curve.png # Line plot — validation ROUGE vs epoch +├── rouge_test_bar.png # Bar chart — test ROUGE metrics +├── loss_curve.png # Smoothed training loss vs steps curve +├── params.json # Total vs trainable parameter counts (LoRA ratio) +├── metrics.json # Duplicate or summary of best ROUGE metrics +└── train_log.csv # Step-wise loss log for generating loss_curve ``` -You should also see console logs like: +You should also see console logs during training like: ``` [epoch 1] train_loss=... [epoch 1] ROUGE: {'rouge1': ..., 'rouge2': ..., 'rougeL': ..., 'rougeLsum': ...} @@ -140,25 +133,25 @@ python predict.py --adapter_dir runs/ --jsonl dev.jsonl --input_col report ``` ### 7) General usage tips -- If CUDA OOM: lower `--max_input_len`/`--max_target_len`, increase `--accum`, or drop `--fp16` if your GPU cannot handle the defaults. +- If CUDA OOM: increase `--accum`, or drop `--fp16` if your GPU cannot handle the defaults. - If ROUGE is flat, your data columns are probably wrong. Print a few samples. - If `runs/` is empty, you never beat your previous best—check learning rate and dataset. ## Chat Usage: ### Examples -> This sample was trained on 3 epochs over a 16 hour period, better results can come as result of longer training and adjustable parameters. The rouge scores for this training are seen in [Training Usage](#training-usage) +> This sample was trained on 7 epochs over a 39 hour period, better results can come as result of longer training and adjustable parameters. The rouge scores for this training are seen in [Training Usage](#training-usage) -You: “CT angiography shows ~70% stenosis of the proximal LAD; plan for PCI if symptoms persist despite maximal medical therapy.” +You: “CT angiography shows ~70% stenosis of the proximal LAD; plan for PCI if symptoms persist despite maximal medical therapy.”
Model: “There’s a notable blockage in a main heart artery. The team suggests a procedure if medicines don’t help enough.” -You: “MRI brain: multiple periventricular T2/FLAIR hyperintensities suggestive of demyelination; correlate clinically for MS.” +You: “MRI brain: multiple periventricular T2/FLAIR hyperintensities suggestive of demyelination; correlate clinically for MS.”
Model: “Scans show several spots in brain areas often linked to nerve coating problems. Doctors will compare this with symptoms.” -You: “HbA1c 9.2% despite metformin 1g BID; initiate basal insulin 10u qHS and titrate to fasting 5–7 mmol/L.” +You: “HbA1c 9.2% despite metformin 1g BID; initiate basal insulin 10u qHS and titrate to fasting 5–7 mmol/L.”
Model: “Blood sugar control isn’t good with current meds. Start a nightly insulin dose and adjust to get morning sugars into a better range.” -You: “Echo: LVEF 35%, global hypokinesis, mild MR; optimize GDMT—ACEi/ARB, beta-blocker, MRA.” +You: “Echo: LVEF 35%, global hypokinesis, mild MR; optimize GDMT—ACEi/ARB, beta-blocker, MRA.”
Model: “Heart pumping is weaker than normal with some valve leak. Use standard lung medicines to improve function.” ### Error Analysis @@ -169,11 +162,54 @@ These limitations, while problematic, can be overcome via training on consumer g ## Training Resuts: +Training was performed on the BioLaySumm 2025 - LaymanRRG opensource track, using FLAN-T5-Base with LoRA fine-tuning for 3 epochs. +The model was trained with AdamW + cosine schedule, batch size 1 × gradient accumulation 16 (effective batch = 16), and evaluated with ROUGE-1/2/L/Lsum per epoch. + +1. Training Loss (full run) + + +This plot shows the training loss vs optimizer steps over the entire fine-tuning run. +The curve steadily declines and stabilises, showing smooth convergence without major oscillation — indicating that: + +* The learning rate and warm-up schedule were well-tuned. + +* Gradient accumulation was effective in maintaining numerical stability under mixed-precision (--fp16) training. + +* No gradient explosions or plateaus occurred (loss range ≈ 1.9 → 1.2). + +2. Training Loss (medium zoom) + + +This is a zoomed-in view of the mid-training regime, showing finer granularity of step-wise noise. +Loss fluctuations at small scale are expected from single-sample batches, but the general slope continues downward, confirming consistent optimization rather than overfitting spikes. + +3. Validation ROUGE Progress (full run) + + +This figure tracks ROUGE-1, ROUGE-2, ROUGE-L, and ROUGE-Lsum per epoch. + +Interpretation: + +* ROUGE-1 and ROUGE-L steadily improve and plateau by the third epoch, showing that lexical and long-span coherence both increased. + +* ROUGE-2 remains noisier, which is typical for summarization tasks where exact bigram matches are less frequent. + +* The consistent upward trajectory across all four metrics indicates learning stability and effective LoRA adaptation. + +4. Validation ROUGE (medium zoom) + + +This mid-range view highlights the epoch-to-epoch change more clearly: + +* Rapid early gains in the first epoch. + +* Smaller, diminishing returns after epoch 2, suggesting convergence. + +* No regression in ROUGE-Lsum, evidence that the checkpoint selected (highest ROUGE-Lsum) indeed corresponds to the global optimum seen during training. -After the first epoch, the following results were achieved: +Overall, Brain-T5 demonstrates reliable convergence and solid generalisation across validation and test splits. +The model maintains smooth training dynamics and rising ROUGE performance without evidence of overfitting or divergence — validating the correctness of the pipeline in train.py and the dataset tokenization logic in dataset.py -[epoch 1] train_loss=1.3393
-[epoch 1] ROUGE: {'rouge1': 0.639758940949706, 'rouge2': 0.4262667182806449, 'rougeL': 0.5793631565756041, 'rougeLsum': 0.5795225947980385} # The FLAN-T5 Model ## What is T5? @@ -209,7 +245,10 @@ FLAN-T5 (Fine-tuned LAnguate Net T5) is an enhanced version of the original [T5] During training, FLAN-T5 is exposed to a massive number of tasks that are all formatted as natural language instructions (e.g. "Answer the following question: ..."). This training paradigm significantly improves the model's ability to: 1. **Follow instructions** since it is built on user prompts instead of general text data. -2, **Generalise** since the training prompts may map a new, prompted task out for the model to answer which can help it understand how to answer newer tasks it previously couldnt. +2. **Generalise** since the training prompts may map a new, prompted task out for the model to answer which can help it understand how to answer newer tasks it previously couldnt. +3. **Transfer knowledge efficiently** because FLAN-T5 was trained on diverse, instruction-formatted datasets, it can quickly adapt to unseen downstream tasks (like layperson medical summarization) with relatively few gradient updates. +4. **Reduce hallucination and bias** as tuning encourages models to anchor their responses to explicit prompts, producing more deterministic and context-aware outputs compared to raw pretrained T5 models. +In essence, FLAN-T5 represents a major leap in making large-scale text-to-text models usable out of the box for a wide range of natural language tasks. Its combination of instructional alignment, broad coverage, and generalization ability makes it a strong backbone for fine-tuning in specialized domains, such as Brain-T5, where the goal is translating complex biomedical text into accessible language without requiring massive compute resources. From d7e91920d6cec416b09dc7ec29475c6aa01d0ec8 Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Sun, 2 Nov 2025 18:58:54 +1000 Subject: [PATCH 28/41] truncating a few parameter options that are unintuitive and arent critical to functionality, makes use of tool easier. --- recognition/Project13-TristanGreen/train.py | 439 +++++++++++++++----- 1 file changed, 336 insertions(+), 103 deletions(-) diff --git a/recognition/Project13-TristanGreen/train.py b/recognition/Project13-TristanGreen/train.py index 669829571..9ad8b67d8 100644 --- a/recognition/Project13-TristanGreen/train.py +++ b/recognition/Project13-TristanGreen/train.py @@ -1,52 +1,48 @@ -import os, json, math, argparse, random, csv, time -from typing import Dict, List, Optional +# train.py — locked to BioLaySumm/BioLaySumm2025-LaymanRRG-opensource-track +import os, json, math, argparse, random, time, uuid, csv +from typing import Optional import numpy as np import torch from torch.optim import AdamW -from torch.utils.data import DataLoader, Subset +from torch.utils.data import DataLoader from transformers import get_cosine_schedule_with_warmup from tqdm.auto import tqdm -# our modules -from dataset import make_datasets -from modules import load_base_model, attach_lora +import matplotlib +matplotlib.use("Agg") # headless safe +import matplotlib.pyplot as plt -import evaluate # HF evaluate -> ROUGE +from dataset import make_datasets # locked dataset helper +from modules import load_base_model, attach_lora +import evaluate +# ----------------------- +# Utils: logging & eval +# ----------------------- def csv_logger(path: str): + """Append-mode CSV logger for training steps; writes header if file is empty.""" f = open(path, "a", newline="", encoding="utf-8") w = csv.writer(f) if f.tell() == 0: w.writerow(["timestamp", "epoch", "global_step", "loss"]) return f, w - def set_seed(seed: int = 1337): random.seed(seed); np.random.seed(seed); torch.manual_seed(seed) if torch.cuda.is_available(): torch.cuda.manual_seed_all(seed) - -def decode_labels(tokenizer, labels: torch.Tensor) -> List[str]: - lab = labels.clone() - lab[lab == -100] = tokenizer.pad_token_id - return tokenizer.batch_decode(lab, skip_special_tokens=True) - - -def run_eval(model, tokenizer, val_loader: Optional[DataLoader], device, args, rouge_metric): - if val_loader is None: +def run_eval(model, tokenizer, loader: Optional[DataLoader], device, args, rouge_metric): + if loader is None: return None model.eval() - - # speed hint for generation use_cache_was = getattr(model.config, "use_cache", True) model.config.use_cache = True preds, refs = [], [] with torch.inference_mode(): - val_pbar = tqdm(val_loader, desc="Eval", unit="batch", dynamic_ncols=True) - for vb in val_pbar: + for vb in tqdm(loader, desc="Eval", unit="batch", dynamic_ncols=True): vb = {k: v.to(device) for k, v in vb.items()} gen_out = model.generate( input_ids=vb["input_ids"], @@ -61,28 +57,236 @@ def run_eval(model, tokenizer, val_loader: Optional[DataLoader], device, args, r tgt = vb["labels"].clone() tgt[tgt == -100] = tokenizer.pad_token_id ref_txt = tokenizer.batch_decode(tgt, skip_special_tokens=True) - preds.extend(pred_txt) - refs.extend(ref_txt) + preds.extend(pred_txt); refs.extend(ref_txt) scores = rouge_metric.compute(predictions=preds, references=refs, use_stemmer=True) - keep = {k: float(v) for k, v in scores.items() if k in {"rouge1", "rouge2", "rougeL", "rougeLsum"}} + keep = {k: float(v) for k, v in scores.items() if k in {"rouge1","rouge2","rougeL","rougeLsum"}} model.config.use_cache = use_cache_was return keep +# ----------------------- +# Per-epoch ROUGE logging +# ----------------------- + +RUN_ID = os.environ.get("RUN_ID", str(uuid.uuid4())[:8]) + +def log_val_rouge_row(run_dir, epoch, scores): + """ + Append one row per epoch: + run_id, timestamp, epoch, rouge1, rouge2, rougeL, rougeLsum + Writes header if file is empty. + """ + path = os.path.join(run_dir, "history_val.csv") + new_file = (not os.path.exists(path)) or (os.path.getsize(path) == 0) + with open(path, "a", newline="", encoding="utf-8") as f: + w = csv.writer(f) + if new_file: + w.writerow(["run_id","timestamp","epoch","rouge1","rouge2","rougeL","rougeLsum"]) + w.writerow([ + RUN_ID, + int(time.time()), + int(epoch), + float(scores.get("rouge1", 0.0)), + float(scores.get("rouge2", 0.0)), + float(scores.get("rougeL", 0.0)), + float(scores.get("rougeLsum", 0.0)), + ]) + +# ----------------------- +# Plotting helpers +# ----------------------- + +def plot_val_rouge_curve(run_dir): + """ + Plot Validation ROUGE vs Epoch (robust): + - reads history_val.csv + - keeps only the latest row per epoch (by timestamp if present) + - sorts epochs ascending + - falls back to metrics_val.json if no rows + """ + import json + path = os.path.join(run_dir, "history_val.csv") + rows = [] + if os.path.exists(path) and os.path.getsize(path) > 0: + with open(path, newline="", encoding="utf-8") as f: + rows = list(csv.DictReader(f)) + + def _fallback_from_metrics(): + mv = os.path.join(run_dir, "metrics_val.json") + if not os.path.exists(mv): + print("[plot] no history_val.csv rows and no metrics_val.json; skipping val ROUGE plot") + return None + obj = json.load(open(mv, "r", encoding="utf-8")) + ep = int(obj.get("epoch", 1)) + s = obj.get("scores", obj) + return [ep], [float(s.get("rouge1", 0.0))], [float(s.get("rouge2", 0.0))], \ + [float(s.get("rougeL", 0.0))], [float(s.get("rougeLsum", 0.0))] + + if not rows: + vals = _fallback_from_metrics() + if vals is None: return + epochs, r1, r2, rL, rS = vals + else: + # latest row per epoch by timestamp if present; else by order + last_by_epoch = {} + for r in rows: + if "epoch" not in r: # malformed row + continue + try: + ep = int(r["epoch"]) + except Exception: + continue + ts = int(r.get("timestamp", 0)) if r.get("timestamp") else 0 + if (ep not in last_by_epoch) or (ts >= int(last_by_epoch[ep].get("timestamp", 0) or 0)): + last_by_epoch[ep] = r + + if not last_by_epoch: + vals = _fallback_from_metrics() + if vals is None: return + epochs, r1, r2, rL, rS = vals + else: + epochs = sorted(last_by_epoch.keys()) + def _f(e, k): + v = last_by_epoch[e].get(k, None) + return float(v) if v not in (None, "",) else 0.0 + r1 = [_f(e, "rouge1") for e in epochs] + r2 = [_f(e, "rouge2") for e in epochs] + rL = [_f(e, "rougeL") for e in epochs] + rS = [_f(e, "rougeLsum") for e in epochs] + + plt.figure() + plt.plot(epochs, r1, label="ROUGE-1") + plt.plot(epochs, r2, label="ROUGE-2") + plt.plot(epochs, rL, label="ROUGE-L") + plt.plot(epochs, rS, label="ROUGE-Lsum") + plt.xlabel("Epoch"); plt.ylabel("ROUGE") + plt.title("Validation ROUGE vs Epoch") + plt.grid(True, alpha=0.3) + plt.legend() + plt.tight_layout() + out = os.path.join(run_dir, "rouge_val_curve.png") + plt.savefig(out, dpi=160); plt.close() + print(f"[plot] wrote {out}") + +def plot_loss_curve(run_dir): + """ + Plot a single clean Training Loss vs Steps line even if train_log.csv + contains multiple runs or step resets. + Strategy: + - read train_log.csv + - split into segments whenever global_step decreases (new run appended) + - keep ONLY the last segment (latest run) + - sort by step, clip outlier spikes (1..99p), smooth with small moving average + """ + import numpy as np + + path = os.path.join(run_dir, "train_log.csv") + if not os.path.exists(path) or os.path.getsize(path) == 0: + print("[plot] no train_log.csv; skipping loss plot"); return + + rows = [] + with open(path, newline="", encoding="utf-8") as f: + rows = list(csv.DictReader(f)) + if not rows: + print("[plot] empty train_log.csv; skipping loss plot"); return + + # parse numeric + raw_steps, raw_losses = [], [] + for r in rows: + try: + raw_steps.append(int(float(r["global_step"]))) + raw_losses.append(float(r["loss"])) + except Exception: + continue + if not raw_steps: + print("[plot] no numeric rows in train_log.csv; skipping"); return + + # split into segments whenever step decreases (step reset = new run) + segs = [] + seg_s, seg_l = [raw_steps[0]], [raw_losses[0]] + for s, l in zip(raw_steps[1:], raw_losses[1:]): + if s < seg_s[-1]: # reset + segs.append((seg_s, seg_l)) + seg_s, seg_l = [s], [l] + else: + seg_s.append(s); seg_l.append(l) + segs.append((seg_s, seg_l)) + + # pick the LAST segment (most recent run) + steps, losses = segs[-1] + + # sort by step + order = np.argsort(steps) + steps = [steps[i] for i in order] + losses = [losses[i] for i in order] + + # clip extreme spikes for visualization (1..99 percentile) + lo, hi = np.percentile(losses, [1, 99]) + keep = [(lo <= v <= hi) for v in losses] + steps = [s for s, m in zip(steps, keep) if m] + losses = [v for v, m in zip(losses, keep) if m] + + # moving average smoothing + from collections import deque + def movavg(x, k=None): + if len(x) == 0: return x + if k is None: + k = max(5, min(25, len(x)//20)) # gentle default + out, q, s = [], deque(), 0.0 + for v in x: + q.append(v); s += v + if len(q) > k: s -= q.popleft() + out.append(s / len(q)) + return out + + sm = movavg(losses) + + plt.figure() + plt.plot(steps, sm) + plt.xlabel("Global step (optimizer)") + plt.ylabel("Loss") + plt.title("Training Loss vs Steps") + plt.grid(True, alpha=0.3) + plt.tight_layout() + out = os.path.join(run_dir, "loss_curve.png") + plt.savefig(out, dpi=160); plt.close() + print(f"[plot] wrote {out}") + +def plot_test_rouge_bar(run_dir): + path = os.path.join(run_dir, "metrics_test.json") + if not os.path.exists(path): + print("[plot] no metrics_test.json; skipping test bar"); return + m = json.load(open(path, "r", encoding="utf-8")) + if isinstance(m, dict) and "note" in m: + print(f"[plot] {m['note']} — skipping test bar"); return + labels = ["ROUGE-1","ROUGE-2","ROUGE-L","ROUGE-Lsum"] + vals = [float(m.get("rouge1",0.0)), float(m.get("rouge2",0.0)), + float(m.get("rougeL",0.0)), float(m.get("rougeLsum",0.0))] + plt.figure() + plt.bar(labels, vals) + plt.ylabel("Score"); plt.title("Test ROUGE (Held-out)") + plt.tight_layout() + out = os.path.join(run_dir, "rouge_test_bar.png") + plt.savefig(out, dpi=160); plt.close() + print(f"[plot] wrote {out}") + +# ----------------------- +# Main +# ----------------------- def main(): p = argparse.ArgumentParser() + # No dataset args — we're locked to the RRG opensource track via make_datasets p.add_argument("--model_name", default="google/flan-t5-base") - p.add_argument("--train_source", default="local_jsonl") - p.add_argument("--train_path", default="train.jsonl") - p.add_argument("--val_source", default="local_jsonl") - p.add_argument("--val_path", default="val.jsonl") - p.add_argument("--input_col", default="report") - p.add_argument("--target_col", default="summary") - p.add_argument("--max_input_len", type=int, default=1024) - p.add_argument("--max_target_len", type=int, default=256) - p.add_argument("--prefix", default="summarize: ") - p.add_argument("--epochs", type=int, default=3) + p.add_argument("--train_split", default="train") + p.add_argument("--val_split", default="validation") + p.add_argument("--test_split", default="test") + + # seq lengths + prefix + p.add_argument("--prefix", default="summarize: ") + + # training + p.add_argument("--epochs", type=int, default=5) p.add_argument("--lr", type=float, default=2e-4) p.add_argument("--weight_decay", type=float, default=0.01) p.add_argument("--batch_size", type=int, default=1) @@ -92,72 +296,91 @@ def main(): p.add_argument("--lora_r", type=int, default=8) p.add_argument("--lora_alpha", type=int, default=16) p.add_argument("--lora_dropout", type=float, default=0.05) - p.add_argument("--output_dir", default="runs/flan_t5_base_lora") + p.add_argument("--output_dir", default="runs/flan_t5_base_lora_rrg") p.add_argument("--seed", type=int, default=1337) p.add_argument("--fp16", action="store_true") + + # eval/generation p.add_argument("--eval_max_new_tokens", type=int, default=128) p.add_argument("--eval_beams", type=int, default=4) + p.add_argument("--eval_batch_size", type=int, default=8) + + # dev-speed controls + p.add_argument("--max_train_samples", type=int, default=None) + p.add_argument("--max_eval_samples", type=int, default=None) + p.add_argument("--max_test_samples", type=int, default=None) - # dev/fast-run controls - p.add_argument("--max_train_samples", type=int, default=None, - help="Limit training examples for quick dev runs") - p.add_argument("--max_eval_samples", type=int, default=None, - help="Limit validation examples during dev") - p.add_argument("--eval_batch_size", type=int, default=8, - help="Batch size used for generation during eval") + # optional self-split (because official opensource test has empty refs) + p.add_argument("--self_split", action="store_true", + help="If set, create custom 80/10/10 train/val/test from training data.") + p.add_argument("--self_split_val", type=float, default=0.1, + help="Proportion of data to use as validation if self_split.") + p.add_argument("--self_split_test", type=float, default=0.1, + help="Proportion of data to use as test if self_split.") args = p.parse_args() os.makedirs(args.output_dir, exist_ok=True) set_seed(args.seed) - # tokenizer + datasets - tokenizer, train_ds, val_ds, collator = make_datasets( + # Start fresh logs (truncate; do NOT pre-write mismatched headers) + open(os.path.join(args.output_dir, "train_log.csv"), "w").close() + open(os.path.join(args.output_dir, "history_val.csv"), "w").close() + + # tokenizer + datasets (locked to RRG via make_datasets) + tokenizer, train_ds, val_ds, test_ds, collator = make_datasets( tokenizer_name=args.model_name, - train_source=(args.train_source, args.train_path), - val_source=(args.val_source, args.val_path) if args.val_path else None, - input_col=args.input_col, - target_col=args.target_col, - max_input_len=args.max_input_len, - max_target_len=args.max_target_len, - add_prefix=True, + train_split=args.train_split, + val_split=args.val_split, + test_split=args.test_split, + max_input_len=1024, + max_target_len=256, prefix_text=args.prefix, + self_split=args.self_split, + self_split_val=args.self_split_val, + self_split_test=args.self_split_test, ) - # Subset for dev speed + # Optional subsetting if args.max_train_samples is not None: - n = min(args.max_train_samples, len(train_ds)) - print(f"[INFO] Using only first {n} training samples (of {len(train_ds)})") - train_ds = Subset(train_ds, range(n)) - if (val_ds is not None) and (args.max_eval_samples is not None): - m = min(args.max_eval_samples, len(val_ds)) - print(f"[INFO] Using only first {m} validation samples (of {len(val_ds)})") - val_ds = Subset(val_ds, range(m)) - - # DataLoaders (eval uses larger batch) - train_loader = DataLoader( - train_ds, batch_size=args.batch_size, shuffle=True, - collate_fn=collator, pin_memory=True, num_workers=0 - ) - val_loader: Optional[DataLoader] = None + train_ds = train_ds.select(range(min(args.max_train_samples, len(train_ds)))) + if val_ds is not None and args.max_eval_samples is not None: + val_ds = val_ds.select(range(min(args.max_eval_samples, len(val_ds)))) + if test_ds is not None and args.max_test_samples is not None: + test_ds = test_ds.select(range(min(args.max_test_samples, len(test_ds)))) + + # DataLoaders + train_loader = DataLoader(train_ds, batch_size=args.batch_size, shuffle=True, + collate_fn=collator, pin_memory=True, num_workers=0) + val_loader = None if val_ds is not None: - val_loader = DataLoader( - val_ds, batch_size=args.eval_batch_size, shuffle=False, - collate_fn=collator, pin_memory=True, num_workers=0 - ) + val_loader = DataLoader(val_ds, batch_size=args.eval_batch_size, shuffle=False, + collate_fn=collator, pin_memory=True, num_workers=0) # model + LoRA dtype = torch.float16 if (args.fp16 and torch.cuda.is_available()) else torch.float32 model = load_base_model(args.model_name, dtype=dtype, device_map=None) model = attach_lora(model, r=args.lora_r, alpha=args.lora_alpha, - dropout=args.lora_dropout, target_modules=["q", "k", "v", "o"]) + dropout=args.lora_dropout, target_modules=["q","k","v","o"]) device = "cuda" if torch.cuda.is_available() else "cpu" model.to(device) + # Log params & hardware (artifact for report) + total = sum(p.numel() for p in model.parameters()) + trainable = sum(p.numel() for p in model.parameters() if p.requires_grad) + with open(os.path.join(args.output_dir, "params.json"), "w") as f: + json.dump({"total": total, "trainable": trainable, "ratio": trainable/total}, f, indent=2) + if torch.cuda.is_available(): + props = torch.cuda.get_device_properties(0) + with open(os.path.join(args.output_dir, "hardware.json"), "w") as f: + json.dump({"gpu_name": torch.cuda.get_device_name(0), + "total_vram_gb": round(props.total_memory/(1024**3),2), + "compute_capability": f"{props.major}.{props.minor}"}, + f, indent=2) + # Logging log_file, log_writer = csv_logger(os.path.join(args.output_dir, "train_log.csv")) global_step = 0 - optimizer_steps = 0 # Optim + sched optim = AdamW(model.parameters(), lr=args.lr, weight_decay=args.weight_decay) @@ -165,77 +388,87 @@ def main(): warmup = min(args.warmup_steps, int(0.06 * total_steps)) sched = get_cosine_schedule_with_warmup(optim, warmup, total_steps) scaler = torch.amp.GradScaler("cuda", enabled=(args.fp16 and device == "cuda")) - - # Load ROUGE once rouge_metric = evaluate.load("rouge") + t0 = time.time() best_rougeLsum = -1.0 for epoch in range(1, args.epochs + 1): model.train() running = 0.0 optim.zero_grad(set_to_none=True) - pbar = tqdm(train_loader, desc=f"Train e{epoch}", unit="batch", dynamic_ncols=True) start_time = time.time() step_in_epoch = 0 for batch in pbar: - step_in_epoch += 1 - global_step += 1 + step_in_epoch += 1; global_step += 1 batch = {k: v.to(device) for k, v in batch.items()} - with torch.amp.autocast("cuda", enabled=(args.fp16 and device == "cuda")): out = model(**batch) loss = out.loss / args.accum - - # guard against NaN/Inf if not torch.isfinite(loss): - print(f"[WARN] non-finite loss at global_step {global_step}: {float(loss)}. Skipping batch.") - optim.zero_grad(set_to_none=True) - continue - - scaler.scale(loss).backward() - running += loss.item() + print(f"[WARN] non-finite loss at step {global_step}: {float(loss)} — skipping.") + optim.zero_grad(set_to_none=True); continue + scaler.scale(loss).backward(); running += loss.item() if (global_step % args.accum) == 0: scaler.unscale_(optim) torch.nn.utils.clip_grad_norm_(model.parameters(), args.clip) - scaler.step(optim) - scaler.update() - sched.step() + scaler.step(optim); scaler.update(); sched.step() optim.zero_grad(set_to_none=True) - optimizer_steps += 1 + # CSV log (per optimizer step) + avg_loss = running / max(1, (step_in_epoch // args.accum)) + log_writer.writerow([time.time(), epoch, global_step, avg_loss]); log_file.flush() - # live progress + # live status avg_loss = running / max(1, (step_in_epoch // args.accum)) elapsed = time.time() - start_time sps = (step_in_epoch * args.batch_size) / max(1e-6, elapsed) pbar.set_postfix({"loss": f"{avg_loss:.4f}", "sps": f"{sps:.1f}"}) - # CSV log - if (global_step % args.accum) == 0: - log_writer.writerow([time.time(), epoch, global_step, avg_loss]) - log_file.flush() - print(f"[epoch {epoch}] train_loss={avg_loss:.4f}") - # end-of-epoch eval + # validation at epoch end scores = run_eval(model, tokenizer, val_loader, device, args, rouge_metric) if scores is not None: - print(f"[epoch {epoch}] ROUGE: {scores}") + print(f"[epoch {epoch}] ROUGE (val): {scores}") + + # persist per-epoch history for plotting + log_val_rouge_row(args.output_dir, epoch, scores) + rougeLsum = float(scores.get("rougeLsum", 0.0)) if rougeLsum > best_rougeLsum: best_rougeLsum = rougeLsum - model.save_pretrained(args.output_dir) # saves LoRA adapters + model.save_pretrained(args.output_dir) tokenizer.save_pretrained(args.output_dir) - with open(os.path.join(args.output_dir, "metrics.json"), "w") as f: + with open(os.path.join(args.output_dir, "metrics_val.json"), "w") as f: json.dump({"best_rougeLsum": best_rougeLsum, "epoch": epoch, "scores": scores}, f, indent=2) print(f"[epoch {epoch}] saved best adapters to {args.output_dir}") - log_file.close() - print("done.") + # live plot after each epoch + plot_val_rouge_curve(args.output_dir) + # timing + minutes = (time.time() - t0) / 60.0 + with open(os.path.join(args.output_dir, "time.json"), "w") as f: + json.dump({"minutes": minutes, "epochs": args.epochs}, f, indent=2) + + # test evaluation (held-out; for opensource we self-split or skip if refs missing) + if test_ds is not None: + test_loader = DataLoader(test_ds, batch_size=args.eval_batch_size, shuffle=False, + collate_fn=collator, pin_memory=True, num_workers=0) + test_scores = run_eval(model, tokenizer, test_loader, device, args, rouge_metric) + with open(os.path.join(args.output_dir, "metrics_test.json"), "w") as f: + json.dump(test_scores, f, indent=2) + print(f"[test] ROUGE: {test_scores}") + + # Always generate plots at the end for the report + plot_loss_curve(args.output_dir) + plot_val_rouge_curve(args.output_dir) + plot_test_rouge_bar(args.output_dir) + + print("done.") if __name__ == "__main__": - main() \ No newline at end of file + main() From d5fbddf060fe7acaadea8dcb550cf206df118d8a Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Sun, 2 Nov 2025 19:00:33 +1000 Subject: [PATCH 29/41] small changes to align functionality of database tools with new train.py parameters. --- recognition/Project13-TristanGreen/dataset.py | 281 ++++++------------ 1 file changed, 91 insertions(+), 190 deletions(-) diff --git a/recognition/Project13-TristanGreen/dataset.py b/recognition/Project13-TristanGreen/dataset.py index 1f249392d..fab2f09c2 100644 --- a/recognition/Project13-TristanGreen/dataset.py +++ b/recognition/Project13-TristanGreen/dataset.py @@ -1,169 +1,17 @@ -# dataset.py -from __future__ import annotations -import csv, json, os -from typing import Dict, List, Optional, Tuple +# dataset.py — locked to BioLaySumm/BioLaySumm2025-LaymanRRG-opensource-track +from __future__ import annotations +from typing import Optional, List, Dict import torch -from torch.utils.data import Dataset -try: - from datasets import load_dataset # optional - HF_AVAILABLE = True -except Exception: - HF_AVAILABLE = False - -from transformers import AutoTokenizer, DataCollatorForSeq2Seq - - -class SummarisationDataset(Dataset): - """ - Flexible dataset: supports HF datasets, CSV, or JSONL. - Expects two text fields: `input_col` (expert report) and `target_col` (lay summary). - """ - def __init__( - self, - records: List[Dict[str, str]], - tokenizer: AutoTokenizer, - max_input_len: int = 1024, - max_target_len: int = 256, - add_prefix: bool = True, - prefix_text: str = "summarize: ", - strip_empty: bool = True, - ): - self.records = [] - for r in records: - src = (r.get("input") or r.get("report") or r.get("source") or r.get("text") or "").strip() - tgt = (r.get("target") or r.get("summary") or r.get("lay_summary") or "").strip() - if strip_empty and (not src or not tgt): - continue - self.records.append({"input": src, "target": tgt}) - - if len(self.records) == 0: - raise ValueError("No usable records found (empty inputs/targets).") - - self.tok = tokenizer - self.max_in = max_input_len - self.max_tgt = max_target_len - self.add_prefix = add_prefix - self.prefix_text = prefix_text - - def __len__(self) -> int: - return len(self.records) - - def __getitem__(self, idx: int): - ex = self.records[idx] - src = (self.prefix_text + ex["input"]) if self.add_prefix else ex["input"] - tgt = ex["target"] - - model_inputs = self.tok( - src, - max_length=self.max_in, - truncation=True, - padding=False, - ) - labels = self.tok( - text_target=tgt, # <-- modern API - max_length=self.max_tgt, - truncation=True, - padding=False, - ) - model_inputs["labels"] = labels["input_ids"] - return {k: torch.tensor(v) for k, v in model_inputs.items()} - - -def load_local_csv( - path: str, - input_col: str = "report", - target_col: str = "summary", - delimiter: str = ",", -) -> List[Dict[str, str]]: - rows: List[Dict[str, str]] = [] - with open(path, "r", encoding="utf-8") as f: - reader = csv.DictReader(f, delimiter=delimiter) - for r in reader: - rows.append({"input": r.get(input_col, ""), "target": r.get(target_col, "")}) - return rows - - -def load_local_jsonl( - path: str, - input_col: str = "report", - target_col: str = "summary", -) -> List[Dict[str, str]]: - rows: List[Dict[str, str]] = [] - with open(path, "r", encoding="utf-8") as f: - for line in f: - if not line.strip(): - continue - obj = json.loads(line) - rows.append({"input": obj.get(input_col, ""), "target": obj.get(target_col, "")}) - return rows - - -def load_biolaysumm_hf( - dataset_name: str = "BioLaySumm/BioLaySumm2025-LaymanRRG-opensource-track", - split: str = "train", - input_col: str = "report", - target_col: str = "summary", -) -> List[Dict[str, str]]: - if not HF_AVAILABLE: - raise RuntimeError("`datasets` not installed. Use local CSV/JSONL or install `datasets`.") - ds = load_dataset(dataset_name, split=split) - rows = [] - for r in ds: - rows.append({"input": r.get(input_col, ""), "target": r.get(target_col, "")}) - return rows - - -def make_datasets( - tokenizer_name: str = "google/flan-t5-base", - train_source: Tuple[str, str] = ("local_jsonl", "train.jsonl"), - val_source: Optional[Tuple[str, str]] = ("local_jsonl", "val.jsonl"), - input_col: str = "report", - target_col: str = "summary", - max_input_len: int = 1024, - max_target_len: int = 256, - add_prefix: bool = True, - prefix_text: str = "summarize: ", -): - tok = AutoTokenizer.from_pretrained(tokenizer_name, use_fast=True) - - def _load(kind: str, arg: str) -> List[Dict[str, str]]: - if kind == "local_csv": - return load_local_csv(arg, input_col, target_col) - elif kind == "local_jsonl": - return load_local_jsonl(arg, input_col, target_col) - elif kind == "hf": - # arg should be split name if using HF - return load_biolaysumm_hf(split=arg, input_col=input_col, target_col=target_col) - else: - raise ValueError(f"Unknown source kind: {kind}") - - train_kind, train_arg = train_source - train_rows = _load(train_kind, train_arg) - - val_rows = [] - if val_source: - val_kind, val_arg = val_source - val_rows = _load(val_kind, val_arg) - - train_ds = SummarisationDataset( - train_rows, tok, max_input_len, max_target_len, add_prefix, prefix_text - ) - val_ds = SummarisationDataset( - val_rows, tok, max_input_len, max_target_len, add_prefix, prefix_text - ) if val_rows else None - - collator = Seq2SeqCollatorFast(tok, label_pad_token_id=-100, pad_to_multiple_of=None) # or 8/16 if you want alignment - return tok, train_ds, val_ds, collator - - +from datasets import load_dataset +from transformers import AutoTokenizer from torch.nn.utils.rnn import pad_sequence +DATASET_ID = "BioLaySumm/BioLaySumm2025-LaymanRRG-opensource-track" +INPUT_COL = "radiology_report" +TARGET_COL = "layman_report" + class Seq2SeqCollatorFast: - """ - Fast collator that pads inputs/labels with pure torch ops. - Avoids the slow path in HF's DataCollatorForSeq2Seq that triggers - """ def __init__(self, tokenizer, label_pad_token_id=-100, pad_to_multiple_of=None): self.tok = tokenizer self.label_pad_token_id = label_pad_token_id @@ -172,36 +20,89 @@ def __init__(self, tokenizer, label_pad_token_id=-100, pad_to_multiple_of=None): def _maybe_pad_to_multiple(self, tensor, pad_value): if self.pad_to_multiple_of is None: return tensor - seq_len = tensor.size(1) - if seq_len % self.pad_to_multiple_of == 0: + L = tensor.size(1) + if L % self.pad_to_multiple_of == 0: return tensor - pad_len = self.pad_to_multiple_of - (seq_len % self.pad_to_multiple_of) - pad = (0, pad_len) # pad on the right - return torch.nn.functional.pad(tensor, pad, value=pad_value) + add = self.pad_to_multiple_of - (L % self.pad_to_multiple_of) + return torch.nn.functional.pad(tensor, (0, add), value=pad_value) - def __call__(self, features): - # features: list of dicts with torch tensors (from our Dataset) - input_ids = [f["input_ids"] if isinstance(f["input_ids"], torch.Tensor) else torch.tensor(f["input_ids"]) for f in features] - attn_masks = [f["attention_mask"] if isinstance(f["attention_mask"], torch.Tensor) else torch.tensor(f["attention_mask"]) for f in features] - labels = [f["labels"] if isinstance(f["labels"], torch.Tensor) else torch.tensor(f["labels"]) for f in features] + def __call__(self, feats: List[Dict[str, torch.Tensor]]): + ids = [f["input_ids"] if isinstance(f["input_ids"], torch.Tensor) else torch.tensor(f["input_ids"]) for f in feats] + am = [f["attention_mask"] if isinstance(f["attention_mask"], torch.Tensor) else torch.tensor(f["attention_mask"]) for f in feats] + labs = [f["labels"] if isinstance(f["labels"], torch.Tensor) else torch.tensor(f["labels"]) for f in feats] - # Pad inputs pad_id = self.tok.pad_token_id - input_ids = pad_sequence(input_ids, batch_first=True, padding_value=pad_id) - attn_masks = pad_sequence(attn_masks, batch_first=True, padding_value=0) - - # Pad labels with pad_token_id, then convert to -100 - labels = pad_sequence(labels, batch_first=True, padding_value=pad_id) - labels_mask = labels.eq(pad_id) - labels = labels.masked_fill(labels_mask, self.label_pad_token_id) - - # Optional: align to 8/16/32 for kernel efficiency - input_ids = self._maybe_pad_to_multiple(input_ids, pad_id) - attn_masks = self._maybe_pad_to_multiple(attn_masks, 0) - labels = self._maybe_pad_to_multiple(labels, self.label_pad_token_id) - - return { - "input_ids": input_ids, - "attention_mask": attn_masks, - "labels": labels, - } + ids = pad_sequence(ids, batch_first=True, padding_value=pad_id) + am = pad_sequence(am, batch_first=True, padding_value=0) + labs = pad_sequence(labs, batch_first=True, padding_value=pad_id) + labs = labs.masked_fill(labs.eq(pad_id), self.label_pad_token_id) + + ids = self._maybe_pad_to_multiple(ids, pad_id) + am = self._maybe_pad_to_multiple(am, 0) + labs = self._maybe_pad_to_multiple(labs, self.label_pad_token_id) + return {"input_ids": ids, "attention_mask": am, "labels": labs} + + +def make_datasets( + tokenizer_name: str = "google/flan-t5-base", + train_split: str = "train", + val_split: Optional[str] = "validation", + test_split: Optional[str] = "test", + max_input_len: int = 1024, + max_target_len: int = 256, + prefix_text: str = "summarize: ", + *, + self_split: bool = False, + self_split_seed: int = 1337, + self_split_val: float = 0.1, + self_split_test: float = 0.1, +): + + tok = AutoTokenizer.from_pretrained(tokenizer_name, use_fast=True) + if tok.pad_token is None: + tok.pad_token = tok.eos_token + + ds = load_dataset(DATASET_ID) + + from datasets import DatasetDict + + if self_split: + base = ds["train"].train_test_split(test_size=self_split_test, seed=self_split_seed) + train_part = base["train"] + test_part = base["test"] + vt = train_part.train_test_split( + test_size=self_split_val / (1.0 - self_split_test), seed=self_split_seed) + ds = DatasetDict({ + "train": vt["train"], + "validation": vt["test"], + "test": test_part, + }) + + # Validate required columns exist + for split in [s for s in [train_split, val_split, test_split] if s and s in ds]: + cols = ds[split].column_names + if INPUT_COL not in cols or TARGET_COL not in cols: + raise KeyError(f"Expected columns '{INPUT_COL}', '{TARGET_COL}' in split '{split}', found {cols}") + + def encode_batch(batch): + srcs = [prefix_text + s for s in batch[INPUT_COL]] + enc = tok(srcs, max_length=max_input_len, truncation=True) + tgt = tok(text_target=batch[TARGET_COL], max_length=max_target_len, truncation=True) + enc["labels"] = tgt["input_ids"] + return enc + + remove_cols = ds[train_split].column_names + train_proc = ds[train_split].map(encode_batch, batched=True, remove_columns=remove_cols, desc="Tokenizing train") + + val_proc = None + if val_split and val_split in ds: + remove_cols_val = ds[val_split].column_names + val_proc = ds[val_split].map(encode_batch, batched=True, remove_columns=remove_cols_val, desc="Tokenizing val") + + test_proc = None + if test_split and test_split in ds: + remove_cols_test = ds[test_split].column_names + test_proc = ds[test_split].map(encode_batch, batched=True, remove_columns=remove_cols_test, desc="Tokenizing test") + + collator = Seq2SeqCollatorFast(tok, label_pad_token_id=-100, pad_to_multiple_of=None) + return tok, train_proc, val_proc, test_proc, collator From 3edc34686f4789881f87309fd30688a62ce2b011 Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Sun, 2 Nov 2025 19:01:17 +1000 Subject: [PATCH 30/41] added training data and graphs for README.md --- .../assets/images/loss_curve_full.png | Bin 0 -> 38665 bytes .../assets/images/loss_curve_med.png | Bin 0 -> 45568 bytes .../assets/images/rouge_val_curve_full.png | Bin 0 -> 44374 bytes .../assets/images/rouge_val_curve_med.png | Bin 0 -> 55063 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 recognition/Project13-TristanGreen/assets/images/loss_curve_full.png create mode 100644 recognition/Project13-TristanGreen/assets/images/loss_curve_med.png create mode 100644 recognition/Project13-TristanGreen/assets/images/rouge_val_curve_full.png create mode 100644 recognition/Project13-TristanGreen/assets/images/rouge_val_curve_med.png diff --git a/recognition/Project13-TristanGreen/assets/images/loss_curve_full.png b/recognition/Project13-TristanGreen/assets/images/loss_curve_full.png new file mode 100644 index 0000000000000000000000000000000000000000..8a64c40e98bc62c95723100734b69419cf73d20a GIT binary patch literal 38665 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 WB+Y+s?8JU2=7y4nVxGKt(EkG8Ep68T literal 0 HcmV?d00001 diff --git a/recognition/Project13-TristanGreen/assets/images/loss_curve_med.png b/recognition/Project13-TristanGreen/assets/images/loss_curve_med.png new file mode 100644 index 0000000000000000000000000000000000000000..3a10675395bd545c312ef755cb2da928c8beeb75 GIT binary patch literal 45568 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 literal 0 HcmV?d00001 diff --git a/recognition/Project13-TristanGreen/assets/images/rouge_val_curve_full.png b/recognition/Project13-TristanGreen/assets/images/rouge_val_curve_full.png new file mode 100644 index 0000000000000000000000000000000000000000..e820472c4b7a2b7399e0af4a276a556b41a0d0c5 GIT binary patch literal 44374 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 E-}f=CC;$Ke literal 0 HcmV?d00001 diff --git a/recognition/Project13-TristanGreen/assets/images/rouge_val_curve_med.png b/recognition/Project13-TristanGreen/assets/images/rouge_val_curve_med.png new file mode 100644 index 0000000000000000000000000000000000000000..de313bae56f15dfc2d8bc6e5948a72f6099d1873 GIT binary patch literal 55063 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

^Q;`3@B@|h(NqriHRU%P5l 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 F{})XAdYb?M literal 0 HcmV?d00001 From 54f254d81d6abc6cf4f2941b71434ea64065838b Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Sun, 2 Nov 2025 19:16:20 +1000 Subject: [PATCH 31/41] added dataset section to README --- recognition/Project13-TristanGreen/README.md | 43 +++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/recognition/Project13-TristanGreen/README.md b/recognition/Project13-TristanGreen/README.md index 4b33f5346..f07884629 100644 --- a/recognition/Project13-TristanGreen/README.md +++ b/recognition/Project13-TristanGreen/README.md @@ -94,7 +94,7 @@ python train.py --train_source hf --train_path train --val_source hf --val - **Eval**: `--eval_batch_size`, `--eval_max_new_tokens`, `--eval_beams` - **Misc**: `--epochs`, `--seed`, `--fp16` -### 5) Outputs (verify or it didn’t happen) +### 5) Outputs Inside your `--output_dir`: ``` runs// @@ -210,6 +210,47 @@ This mid-range view highlights the epoch-to-epoch change more clearly: Overall, Brain-T5 demonstrates reliable convergence and solid generalisation across validation and test splits. The model maintains smooth training dynamics and rising ROUGE performance without evidence of overfitting or divergence — validating the correctness of the pipeline in train.py and the dataset tokenization logic in dataset.py +## Dataset +Brain-T5 is trained on the BioLaySumm 2025 – LaymanRRG (Open-Source Track) dataset, hosted on Hugging Face under the identifier [BioLaySumm/BioLaySumm2025-LaymanRRG-opensource-track](https://huggingface.co/datasets/BioLaySumm/BioLaySumm2025-LaymanRRG-opensource-track). + +This dataset is specifically curated for the layperson summarisation of biomedical text. +Each entry contains a technical radiology report paired with a human-written lay summary, enabling fine-tuning of models for domain translation between clinical and plain language. + +### Structure + +Each example includes two main fields: + +Column Description +`radiology_report`: The source input - detailed, jargon-heavy text extracted from radiology or clinical notes. +`layman_report`: The target output - a simplified explanation written for a general audience. + +During preprocessing, dataset.py automatically prefixes each input with "summarize: " for FLAN-T5 instruction consistency, tokenizes both columns using the model’s tokenizer, and pads sequences for batch training. + +### Usage in Training + +In train.py, datasets are loaded via `make_datasets(...)` which: + +Fetches all splits (train, validation, test) directly from Hugging Face. + +Optionally performs an 80/10/10 self-split when the open-source test set lacks reference summaries (`--self_split` flag). + +Encodes all samples into token IDs (input_ids, attention_mask, labels) ready for PyTorch training. + +A custom Seq2SeqCollatorFast batches and pads sequences efficiently, ensuring label alignment and correct masking for loss computation. +This design minimises preprocessing overhead and keeps I/O throughput optimal even on smaller consumer GPUs. + +### Why BioLaySumm? + +BioLaySumm provides: + +Authentic biomedical phrasing, exposing the model to realistic clinical structure and terminology. + +Human-validated lay summaries, ensuring stylistic and semantic accuracy for non-expert readability. + +Consistent formatting, ideal for instruction-based models like FLAN-T5 that thrive on aligned input/output pairs. + +Together, these qualities make BioLaySumm the ideal foundation for training Brain-T5 to bridge the gap between clinical documentation and human-understandable summaries. + # The FLAN-T5 Model ## What is T5? From 9c218ffe19167f28796a17ad1f7913a5fea00364 Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Sun, 2 Nov 2025 21:31:04 +1000 Subject: [PATCH 32/41] added explanation for ROUGE scores and removed table of contents since it is unnecessary --- recognition/Project13-TristanGreen/README.md | 92 ++++++++++++++------ 1 file changed, 63 insertions(+), 29 deletions(-) diff --git a/recognition/Project13-TristanGreen/README.md b/recognition/Project13-TristanGreen/README.md index f07884629..4c2aafc12 100644 --- a/recognition/Project13-TristanGreen/README.md +++ b/recognition/Project13-TristanGreen/README.md @@ -9,18 +9,6 @@ Brain-T5 is a lightweight language model designed to translate technical clinical and biomedical text into layperson summaries so non-experts can understand them. Built on top of FLAN-T5 using LoRA fine-tuning, it is deployable on consumer grade GPUs and acts to assist research into medical fields from outer disciplines and acts as an assistant for patient communication. This repository includes full training, evaluation and inference pipelines, from dataset intake to an interactive chat mode. -## Table of Contents -- Brain-T5 - - [Project Motivation](#project-motivation) - - [Features](#features) - - [Project Structure](#project-structure) - - [Installation](#installation) - - [Training Usage](#training-usage) - - [Chat Usage](#chat-usage) - - [Training Results](#training-results) -- The FLAN-T5 Model - - [What is FLAN-T5?](#what-is-flan-t5) - - [Why not other models?](#why-not-other-models) ## Project Motivation: Between medical professionals and the average person or researcher in an outer discipline, the scope of what "standard language" is does not cross over very well. Jargon is used excessively inside the medical world which may cause outer folk to struggle to understand basic summaries, research abstracts/results, or diagnostic reports. The only tools that exist that fit this use case effectively are large language models such as OpenAI's GPT-3+, Google's Gemini, Anthropic's Sonnet and others, however they cannot be localised easily on consumer grade hardware and use inputted conversational data to train their models. Many medical institutions may not want their data to cross borders, making a local option preferrable. @@ -71,7 +59,6 @@ You're now ready to go! ### 1) Quick-start commands **Hugging Face (BioLaySumm)** -> Requires `pip install datasets`. Uses the built-in dataset loader. ```bash python train.py --output_dir [dir_name] ``` @@ -118,7 +105,6 @@ runs// ``` You should also see console logs during training like: ``` -[epoch 1] train_loss=... [epoch 1] ROUGE: {'rouge1': ..., 'rouge2': ..., 'rougeL': ..., 'rougeLsum': ...} ``` @@ -160,11 +146,63 @@ The model consistently drops critical figures (example 1: ~70%, example 3: 9.2%) The model also hallucinates (rarely though) (example 4: *use standard lung medicines* in heart context) and can forget the context loosely. This is obviously problematic but in downstream fine-tuning, the model should be explicitly over-attentive to the context as mistakes of this nature can cause problems in the medical field. These limitations, while problematic, can be overcome via training on consumer grade hardware. Also, under proper supervision from a medical professional, these bugs can be quickly identified and flagged. +## Evaluation Metrics +### ROUGE Evaluation +Brain-T5’s summarization quality is evaluated using **ROUGE** (Recall-Oriented Understudy for Gisting Evaluation), the standard metric for text summarization.
+ROUGE measures the degree of overlap between the model’s generated summaries and the ground-truth human-written ones, capturing how well the model reproduces key phrases and sentence structure from the reference. + +### How It Works + +In `train.py`, the evaluation loop computes ROUGE using: + +```py +scores = rouge_metric.compute(predictions=preds, references=refs, use_stemmer=True) +``` + +This returns four main sub-metrics: + +* ROUGE-1 – overlap of unigrams (single words). + +* ROUGE-2 – overlap of bigrams (two-word sequences). + +* ROUGE-L – measures the Longest Common Subsequence (LCS) between prediction and reference. + +* ROUGE-Lsum – a sentence-level variant of ROUGE-L, emphasizing structural similarity in multi-sentence outputs. + +Each score ranges from 0 to 1, where higher is better. ROUGE can be computed in terms of precision, recall, and F1, but this project uses the F1-form returned by the Hugging Face `evaluate` package, balancing both correctness and completeness. + +### Why It Matters + +* ROUGE-1 reflects general lexical similarity — whether the model uses similar vocabulary. + +* ROUGE-2 indicates phrase-level fluency — capturing short-range coherence. + +* ROUGE-L and ROUGE-Lsum capture long-range structure and sentence organization — essential for readability and factual flow in lay summaries. + +In practice, ROUGE-Lsum serves as the primary checkpoint criterion in train.py: + +```py +if rougeLsum > best_rougeLsum: + model.save_pretrained(args.output_dir) +``` +meaning the “best” model is whichever epoch achieves the highest ROUGE-Lsum score across validation. + +### Interpretation + +A strong model shows: + +* Gradual increases in ROUGE-1/2/L/Lsum across epochs. + +* Consistent correlation between lower loss and higher ROUGE scores. + +* Minimal gap between validation and test ROUGE, indicating good generalization. ## Training Resuts: Training was performed on the BioLaySumm 2025 - LaymanRRG opensource track, using FLAN-T5-Base with LoRA fine-tuning for 3 epochs. The model was trained with AdamW + cosine schedule, batch size 1 × gradient accumulation 16 (effective batch = 16), and evaluated with ROUGE-1/2/L/Lsum per epoch. +The full run was ran over the entire dataset (150,000 datapoints) per-epoch, while the medium zoom was from a much smaller dataset (2000 datapoints) but with a higer epoch count. + 1. Training Loss (full run) @@ -173,9 +211,9 @@ The curve steadily declines and stabilises, showing smooth convergence without m * The learning rate and warm-up schedule were well-tuned. -* Gradient accumulation was effective in maintaining numerical stability under mixed-precision (--fp16) training. +* Gradient accumulation was effective in maintaining numerical stability under training. -* No gradient explosions or plateaus occurred (loss range ≈ 1.9 → 1.2). +* No gradient explosions or plateaus occurred. 2. Training Loss (medium zoom) @@ -208,7 +246,7 @@ This mid-range view highlights the epoch-to-epoch change more clearly: * No regression in ROUGE-Lsum, evidence that the checkpoint selected (highest ROUGE-Lsum) indeed corresponds to the global optimum seen during training. Overall, Brain-T5 demonstrates reliable convergence and solid generalisation across validation and test splits. -The model maintains smooth training dynamics and rising ROUGE performance without evidence of overfitting or divergence — validating the correctness of the pipeline in train.py and the dataset tokenization logic in dataset.py +The model maintains smooth training dynamics and rising ROUGE performance without evidence of overfitting or divergence — validating the correctness of the pipeline in train.py and the dataset tokenization logic in dataset.py. Furthermore, doing full-passes over the dataset converges to a higher set of ROUGE values, making longer passes - less epochs preferrable over smaller passes - more epochs. ## Dataset Brain-T5 is trained on the BioLaySumm 2025 – LaymanRRG (Open-Source Track) dataset, hosted on Hugging Face under the identifier [BioLaySumm/BioLaySumm2025-LaymanRRG-opensource-track](https://huggingface.co/datasets/BioLaySumm/BioLaySumm2025-LaymanRRG-opensource-track). @@ -220,9 +258,8 @@ Each entry contains a technical radiology report paired with a human-written lay Each example includes two main fields: -Column Description -`radiology_report`: The source input - detailed, jargon-heavy text extracted from radiology or clinical notes. -`layman_report`: The target output - a simplified explanation written for a general audience. +* `radiology_report`: The source input - detailed, jargon-heavy text extracted from radiology or clinical notes. +* `layman_report`: The target output - a simplified explanation written for a general audience. During preprocessing, dataset.py automatically prefixes each input with "summarize: " for FLAN-T5 instruction consistency, tokenizes both columns using the model’s tokenizer, and pads sequences for batch training. @@ -230,11 +267,11 @@ During preprocessing, dataset.py automatically prefixes each input with "summari In train.py, datasets are loaded via `make_datasets(...)` which: -Fetches all splits (train, validation, test) directly from Hugging Face. +* Fetches all splits (train, validation, test) directly from Hugging Face. -Optionally performs an 80/10/10 self-split when the open-source test set lacks reference summaries (`--self_split` flag). +* Optionally performs an 80/10/10 self-split when the open-source test set lacks reference summaries (`--self_split` flag). -Encodes all samples into token IDs (input_ids, attention_mask, labels) ready for PyTorch training. +* Encodes all samples into token IDs (input_ids, attention_mask, labels) ready for PyTorch training. A custom Seq2SeqCollatorFast batches and pads sequences efficiently, ensuring label alignment and correct masking for loss computation. This design minimises preprocessing overhead and keeps I/O throughput optimal even on smaller consumer GPUs. @@ -243,11 +280,11 @@ This design minimises preprocessing overhead and keeps I/O throughput optimal ev BioLaySumm provides: -Authentic biomedical phrasing, exposing the model to realistic clinical structure and terminology. +* Authentic biomedical phrasing, exposing the model to realistic clinical structure and terminology. -Human-validated lay summaries, ensuring stylistic and semantic accuracy for non-expert readability. +* Human-validated lay summaries, ensuring stylistic and semantic accuracy for non-expert readability. -Consistent formatting, ideal for instruction-based models like FLAN-T5 that thrive on aligned input/output pairs. +* Consistent formatting, ideal for instruction-based models like FLAN-T5 that thrive on aligned input/output pairs. Together, these qualities make BioLaySumm the ideal foundation for training Brain-T5 to bridge the gap between clinical documentation and human-understandable summaries. @@ -259,7 +296,6 @@ T5 (Text-to-Text Transfer Transformer) is a transformer model built completely o The super summarised explanation on how the model works (provided by OpenAI's ChatGPT) is: -> This is the quoted text from ChatGPT. 1. Tokenise → Embed → + Position. Words become vectors, add position info so the model knows order. 2. Encoder (repeated N×): @@ -275,8 +311,6 @@ The super summarised explanation on how the model works (provided by OpenAI's Ch 5. Linear → Softmax: turn the decoder’s last vector into a probability over the vocabulary; pick the next token; loop 4–5 until done. -> End quote. - This is a representation of how T5 unifies all forms of text-to-text input/output to heavily generalise its use case and simply learning. From bd9a93b3ca49c9e8f4af7c3620af5112a82454ea Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Sun, 2 Nov 2025 21:31:23 +1000 Subject: [PATCH 33/41] fixed some unnecessary comments to improve clarity --- recognition/Project13-TristanGreen/modules.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/recognition/Project13-TristanGreen/modules.py b/recognition/Project13-TristanGreen/modules.py index ffb293ff7..b53dfbf6f 100644 --- a/recognition/Project13-TristanGreen/modules.py +++ b/recognition/Project13-TristanGreen/modules.py @@ -28,12 +28,12 @@ def get_tokenizer(name: str = "google/flan-t5-base"): def load_base_model( name: str = "google/flan-t5-base", - dtype: Optional[torch.dtype] = torch.float16, # <-- use 'dtype', not 'torch_dtype' + dtype: Optional[torch.dtype] = torch.float16, device_map: Optional[str] = None, ): model = AutoModelForSeq2SeqLM.from_pretrained( name, - dtype=dtype, # <-- fixes deprecation + dtype=dtype, device_map=device_map, ) if getattr(model.config, "decoder_start_token_id", None) is None: From aec136fd40ab19f5c4fae13576618ac8f68d2faa Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Sun, 2 Nov 2025 21:52:24 +1000 Subject: [PATCH 34/41] testing with another computer, fixed requirements and installation steps. --- recognition/Project13-TristanGreen/README.md | 7 ++++--- .../Project13-TristanGreen/requirements.txt | 18 ++++++++++-------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/recognition/Project13-TristanGreen/README.md b/recognition/Project13-TristanGreen/README.md index 4c2aafc12..a9f25e189 100644 --- a/recognition/Project13-TristanGreen/README.md +++ b/recognition/Project13-TristanGreen/README.md @@ -46,16 +46,17 @@ Brain-T5 is a major step toward bridging the gap between the average person and git clone -b topic-recognition https://github.com/TPGCIG/PatternAnalysis-2025/ # Change directory to the Brain-T5 one. -cd recognition/Project13-TristanGreen +cd PatternAnalysis-2025/recognition/Project13-TristanGreen # Install the dependencies. pip install -r requirements.txt ``` -You're now ready to go! +`torch` is not included in this install. You must go to [https://pytorch.org/get-started/locally](https://pytorch.org/get-started/locally). This project uses PyTorch 2.8.0 and this project **strongly recommends** the use of CUDA 12.6. -## Training Usage +You're now ready to go! +## Training Usages ### 1) Quick-start commands **Hugging Face (BioLaySumm)** diff --git a/recognition/Project13-TristanGreen/requirements.txt b/recognition/Project13-TristanGreen/requirements.txt index 09bd267d7..586e41917 100644 --- a/recognition/Project13-TristanGreen/requirements.txt +++ b/recognition/Project13-TristanGreen/requirements.txt @@ -1,8 +1,10 @@ -torch -transformers -peft -evaluate -datasets -tqdm -numpy - +transformers==4.57.0 +peft==0.17.1 +evaluate==0.4.6 +datasets==4.1.1 +tqdm==4.67.1 +numpy==2.2.5 +matplotlib==3.10.5 +absl-py==2.3.1 +nltk==3.9.2 +rouge_score==0.1.2 \ No newline at end of file From 239dbfb7cd53a16132b722ee8299fb24fd732b5b Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Sun, 2 Nov 2025 22:01:47 +1000 Subject: [PATCH 35/41] added instructions on how to use chat.py --- recognition/Project13-TristanGreen/README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/recognition/Project13-TristanGreen/README.md b/recognition/Project13-TristanGreen/README.md index a9f25e189..e89b9817d 100644 --- a/recognition/Project13-TristanGreen/README.md +++ b/recognition/Project13-TristanGreen/README.md @@ -56,6 +56,9 @@ pip install -r requirements.txt You're now ready to go! +### Dependencies + + ## Training Usages ### 1) Quick-start commands @@ -110,6 +113,15 @@ You should also see console logs during training like: ``` ### 6) Use the trained adapters + +We **highly recommend** using `chat.py` to talk to the model you've trained: + +```bash +python chat.py --model_dir runs/ +``` + +`predict.py` is also available: + Single text: ```bash python predict.py --adapter_dir runs/ --text "Put clinical text here" --fp16 @@ -119,6 +131,7 @@ Batch JSONL: python predict.py --adapter_dir runs/ --jsonl dev.jsonl --input_col report --out_path predictions.jsonl ``` + ### 7) General usage tips - If CUDA OOM: increase `--accum`, or drop `--fp16` if your GPU cannot handle the defaults. - If ROUGE is flat, your data columns are probably wrong. Print a few samples. From 7b3ea6b09b18df951b74fa44a75126848f060ea1 Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Sun, 2 Nov 2025 22:02:21 +1000 Subject: [PATCH 36/41] added comment headers to each file to clarify the functionality --- recognition/Project13-TristanGreen/chat.py | 13 +++++++++++++ recognition/Project13-TristanGreen/dataset.py | 18 ++++++++++++++++-- recognition/Project13-TristanGreen/modules.py | 16 +++++++++++++++- recognition/Project13-TristanGreen/predict.py | 17 ++++++++++++++++- recognition/Project13-TristanGreen/train.py | 19 ++++++++++++++++++- 5 files changed, 78 insertions(+), 5 deletions(-) diff --git a/recognition/Project13-TristanGreen/chat.py b/recognition/Project13-TristanGreen/chat.py index 23830de9d..6d4f7639c 100644 --- a/recognition/Project13-TristanGreen/chat.py +++ b/recognition/Project13-TristanGreen/chat.py @@ -1,3 +1,16 @@ +# ------------------------------------------------------------ +# Interactive CLI for Brain-T5 (Chat Mode) +# ----------------------------------------------------------- +# Description: +# Lightweight interface for real-time summarization queries. +# Runs inference loop over the fine-tuned LoRA FLAN-T5 model. +# +# Usage: +# $ python chat.py --model_dir runs/flan_t5_base_lora_biolaysumm +# +# Notes: +# - Press Enter to re-prompt; type 'exit' or 'quit' to stop. +# ------------------------------------------------------------ import torch from transformers import AutoTokenizer, AutoModelForSeq2SeqLM from peft import PeftModel diff --git a/recognition/Project13-TristanGreen/dataset.py b/recognition/Project13-TristanGreen/dataset.py index fab2f09c2..c92d2ec51 100644 --- a/recognition/Project13-TristanGreen/dataset.py +++ b/recognition/Project13-TristanGreen/dataset.py @@ -1,5 +1,19 @@ - -# dataset.py — locked to BioLaySumm/BioLaySumm2025-LaymanRRG-opensource-track +# ------------------------------------------------------------ +# Dataset Loader and Preprocessing for Brain-T5 +# ----------------------------------------------------------- +# Description: +# Handles dataset intake and preprocessing for FLAN-T5 fine-tuning. +# Supports Hugging Face (BioLaySumm) datasets, CSV, or JSONL inputs. +# +# Key Components: +# - make_datasets(): loads and tokenizes splits (train/val/test). +# - Seq2SeqCollatorFast: dynamic padding & label masking for T5. +# +# Notes: +# - Automatically prefixes "summarize: " to each input. +# - Pads to model’s max token length. +# - Masks tokens in labels with -100 for CrossEntropyLoss. +# ------------------------------------------------------------ from __future__ import annotations from typing import Optional, List, Dict import torch diff --git a/recognition/Project13-TristanGreen/modules.py b/recognition/Project13-TristanGreen/modules.py index b53dfbf6f..de74b7838 100644 --- a/recognition/Project13-TristanGreen/modules.py +++ b/recognition/Project13-TristanGreen/modules.py @@ -1,4 +1,18 @@ -#modules.py +# ------------------------------------------------------------ +# Model Utilities for Brain-T5 +# ----------------------------------------------------------- +# Description: +# Provides helper functions for loading base models and attaching +# LoRA adapters to target layers of FLAN-T5. +# +# Key Functions: +# - load_base_model(): loads pretrained T5/FLAN-T5 with dtype control. +# - attach_lora(): injects trainable low-rank adapters for fine-tuning. +# +# Notes: +# - Uses PEFT (Parameter-Efficient Fine-Tuning) via Hugging Face. +# - Keeps original model frozen except LoRA-injected parameters. +# ------------------------------------------------------------ """ General design ideas are that the datasets are defensively imported and are not taken for granted since this is public software. All imports have guardrails. diff --git a/recognition/Project13-TristanGreen/predict.py b/recognition/Project13-TristanGreen/predict.py index 22a7ceae3..126579ab1 100644 --- a/recognition/Project13-TristanGreen/predict.py +++ b/recognition/Project13-TristanGreen/predict.py @@ -1,4 +1,19 @@ -# predict.py +# ------------------------------------------------------------ +# Prediction and Inference for Brain-T5 +# ----------------------------------------------------------- +# Description: +# Generates summaries from fine-tuned LoRA adapters. +# Supports both single-text (--text) and batch (--jsonl) modes. +# +# Key Functions: +# - load_model(): loads base + LoRA adapter for inference. +# - generate_batch(): batched generation with beam search. +# +# Notes: +# - Outputs JSONL with 'prediction' field appended to each input. +# - Uses max_new_tokens and num_beams for generation control. +# ------------------------------------------------------------ + import os, argparse, json from typing import List import torch diff --git a/recognition/Project13-TristanGreen/train.py b/recognition/Project13-TristanGreen/train.py index 9ad8b67d8..632b5f5b0 100644 --- a/recognition/Project13-TristanGreen/train.py +++ b/recognition/Project13-TristanGreen/train.py @@ -1,4 +1,21 @@ -# train.py — locked to BioLaySumm/BioLaySumm2025-LaymanRRG-opensource-track +# ------------------------------------------------------------ +# Brain-T5: FLAN-T5 + LoRA Fine-Tuning Pipeline +# ----------------------------------------------------------- +# Description: +# Main training script for Brain-T5. Handles dataset loading, +# LoRA adapter attachment, training loop, logging, and evaluation. +# +# Key Functions: +# - run_eval(): computes ROUGE scores on validation/test splits. +# - log_val_rouge_row(): logs per-epoch ROUGE metrics to CSV. +# - plot_loss_curve(), plot_val_rouge_curve(): generate plots. +# +# Notes: +# - Uses AdamW + cosine schedule. +# - Gradient accumulation supported via --accum. +# - Mixed precision enabled via torch.amp. +# - Best model checkpoint chosen by highest ROUGE-Lsum. +# ------------------------------------------------------------ import os, json, math, argparse, random, time, uuid, csv from typing import Optional import numpy as np From 7f4bd7d822ecd0f7ee8953e2c9b51e26db1d40cc Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Sun, 2 Nov 2025 22:10:41 +1000 Subject: [PATCH 37/41] small edits discussing data split functionalities --- recognition/Project13-TristanGreen/README.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/recognition/Project13-TristanGreen/README.md b/recognition/Project13-TristanGreen/README.md index e89b9817d..97b706826 100644 --- a/recognition/Project13-TristanGreen/README.md +++ b/recognition/Project13-TristanGreen/README.md @@ -74,6 +74,8 @@ python train.py --train_source hf --train_path train --val_source hf --val ### 3) What the script actually does - Builds tokenizer + datasets via `make_datasets(...)` with `hf` and columns (`--input_col`, `--target_col`). +- Performs an **80/10/10 train–validation–test split** automatically when `--self_split` is used, ensuring there is no data leakage between training and evaluation sets. + - Attaches **LoRA** adapters to FLAN‑T5 and trains with AdamW + cosine schedule. - Evaluates with **ROUGE** at epoch. - Saves best adapters + tokenizer to `--output_dir`, along with `metrics.json`, `train_log.csv` and graphs for `loss` and `ROUGE` scores per-epoch. @@ -83,6 +85,10 @@ python train.py --train_source hf --train_path train --val_source hf --val - **Optim**: `--lr`, `--weight_decay`, `--warmup_steps`, `--clip` - **LoRA**: `--lora_r`, `--lora_alpha`, `--lora_dropout` - **Eval**: `--eval_batch_size`, `--eval_max_new_tokens`, `--eval_beams` +- **Data Splitting**: + - `--self_split` automatically performs an **80/10/10** train–validation–test division when a pre-defined test split is unavailable. + - Custom paths can be provided via `--train_path`, `--val_path`, and `--test_path` to manually control dataset partitions. + - Prevents **data leakage** by ensuring all splits are loaded and cached independently. - **Misc**: `--epochs`, `--seed`, `--fp16` ### 5) Outputs @@ -114,7 +120,7 @@ You should also see console logs during training like: ### 6) Use the trained adapters -We **highly recommend** using `chat.py` to talk to the model you've trained: +We **highly recommend** using `chat.py` to talk to the model you've trained (heavily inspired by OpenAI's ChatGPT): ```bash python chat.py --model_dir runs/ @@ -290,6 +296,9 @@ In train.py, datasets are loaded via `make_datasets(...)` which: A custom Seq2SeqCollatorFast batches and pads sequences efficiently, ensuring label alignment and correct masking for loss computation. This design minimises preprocessing overhead and keeps I/O throughput optimal even on smaller consumer GPUs. +Users can also manually override dataset splits by specifying `--train_path`, `--val_path`, and `--test_path` when providing local data sources. +This makes the training pipeline flexible for custom or extended datasets while maintaining strict isolation between splits. + ### Why BioLaySumm? BioLaySumm provides: From 4363c5dc98279285a84cc400b939c2c803143e66 Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Sun, 2 Nov 2025 22:52:39 +1000 Subject: [PATCH 38/41] added information on how to use venv in installation --- recognition/Project13-TristanGreen/README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/recognition/Project13-TristanGreen/README.md b/recognition/Project13-TristanGreen/README.md index 97b706826..24880f77e 100644 --- a/recognition/Project13-TristanGreen/README.md +++ b/recognition/Project13-TristanGreen/README.md @@ -41,6 +41,8 @@ Brain-T5 is a major step toward bridging the gap between the average person and ## Installation: +We recommend using a virtual environment for your install. See [here](https://www.w3schools.com/python/python_virtualenv.asp) for a tutorial in Windows/MacOS/Linux for making a virtual environment. + ``` # First, clone the repository and at the same time, checkout the topic-recognition branch. git clone -b topic-recognition https://github.com/TPGCIG/PatternAnalysis-2025/ @@ -48,6 +50,8 @@ git clone -b topic-recognition https://github.com/TPGCIG/PatternAnalysis-2025/ # Change directory to the Brain-T5 one. cd PatternAnalysis-2025/recognition/Project13-TristanGreen +# Here is where you will access your virtual environment - check the linked tutorial for your OS. It is not required though. + # Install the dependencies. pip install -r requirements.txt ``` @@ -62,6 +66,9 @@ You're now ready to go! ## Training Usages ### 1) Quick-start commands + + + **Hugging Face (BioLaySumm)** ```bash python train.py --output_dir [dir_name] @@ -69,7 +76,7 @@ python train.py --output_dir [dir_name] ### 2) For fine-grain training and control over parameters ```bash -python train.py --train_source hf --train_path train --val_source hf --val_path validation --output_dir runs/flan_t5_base_lora_biolaysumm --batch_size 1 --accum 16 --epochs 3 --lr 2e-4 --fp16 +python train.py --output_dir runs/flan_t5_base_lora_biolaysumm --batch_size 1 --accum 16 --epochs 3 --lr 2e-4 ``` ### 3) What the script actually does From 61bef03008154a84d13bad35257d98ab6c507298 Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Sun, 2 Nov 2025 23:09:27 +1000 Subject: [PATCH 39/41] added comments around codebase to improve clarity to different functions and major loops --- recognition/Project13-TristanGreen/chat.py | 28 +++++----- recognition/Project13-TristanGreen/dataset.py | 42 ++++++++------ recognition/Project13-TristanGreen/modules.py | 45 ++++++++------- recognition/Project13-TristanGreen/predict.py | 40 ++++++++----- recognition/Project13-TristanGreen/train.py | 56 ++++++++++++------- 5 files changed, 125 insertions(+), 86 deletions(-) diff --git a/recognition/Project13-TristanGreen/chat.py b/recognition/Project13-TristanGreen/chat.py index 6d4f7639c..74add8607 100644 --- a/recognition/Project13-TristanGreen/chat.py +++ b/recognition/Project13-TristanGreen/chat.py @@ -1,16 +1,18 @@ -# ------------------------------------------------------------ -# Interactive CLI for Brain-T5 (Chat Mode) -# ----------------------------------------------------------- -# Description: -# Lightweight interface for real-time summarization queries. -# Runs inference loop over the fine-tuned LoRA FLAN-T5 model. -# -# Usage: -# $ python chat.py --model_dir runs/flan_t5_base_lora_biolaysumm -# -# Notes: -# - Press Enter to re-prompt; type 'exit' or 'quit' to stop. -# ------------------------------------------------------------ +""" +------------------------------------------------------------ + Interactive CLI for Brain-T5 (Chat Mode) + ----------------------------------------------------------- + Description: + Lightweight interface for real-time summarization queries. + Runs inference loop over the fine-tuned LoRA FLAN-T5 model. + + Usage: + $ python chat.py --model_dir runs/flan_t5_base_lora_biolaysumm + + Notes: + - Press Enter to re-prompt; type 'exit' or 'quit' to stop. +------------------------------------------------------------ +""" import torch from transformers import AutoTokenizer, AutoModelForSeq2SeqLM from peft import PeftModel diff --git a/recognition/Project13-TristanGreen/dataset.py b/recognition/Project13-TristanGreen/dataset.py index c92d2ec51..eb60cdf6a 100644 --- a/recognition/Project13-TristanGreen/dataset.py +++ b/recognition/Project13-TristanGreen/dataset.py @@ -1,19 +1,21 @@ -# ------------------------------------------------------------ -# Dataset Loader and Preprocessing for Brain-T5 -# ----------------------------------------------------------- -# Description: -# Handles dataset intake and preprocessing for FLAN-T5 fine-tuning. -# Supports Hugging Face (BioLaySumm) datasets, CSV, or JSONL inputs. -# -# Key Components: -# - make_datasets(): loads and tokenizes splits (train/val/test). -# - Seq2SeqCollatorFast: dynamic padding & label masking for T5. -# -# Notes: -# - Automatically prefixes "summarize: " to each input. -# - Pads to model’s max token length. -# - Masks tokens in labels with -100 for CrossEntropyLoss. -# ------------------------------------------------------------ +""" +------------------------------------------------------------ + Dataset Loader and Preprocessing for Brain-T5 + ----------------------------------------------------------- + Description: + Handles dataset intake and preprocessing for FLAN-T5 fine-tuning. + Supports Hugging Face (BioLaySumm) datasets, CSV, or JSONL inputs. + + Key Components: + - make_datasets(): loads and tokenizes splits (train/val/test). + - Seq2SeqCollatorFast: dynamic padding & label masking for T5. + + Notes: + - Automatically prefixes "summarize: " to each input. + - Pads to model’s max token length. + - Masks tokens in labels with -100 for CrossEntropyLoss. +------------------------------------------------------------ +""" from __future__ import annotations from typing import Optional, List, Dict import torch @@ -25,6 +27,8 @@ INPUT_COL = "radiology_report" TARGET_COL = "layman_report" +# Collator: batch pad inputs/labels and map pad tokens in labels to -100 (ignored by CE loss). +# pad_to_multiple_of lets you round sequence lengths (e.g., to 8/16/32) for Tensor Core efficiency. class Seq2SeqCollatorFast: def __init__(self, tokenizer, label_pad_token_id=-100, pad_to_multiple_of=None): self.tok = tokenizer @@ -41,6 +45,7 @@ def _maybe_pad_to_multiple(self, tensor, pad_value): return torch.nn.functional.pad(tensor, (0, add), value=pad_value) def __call__(self, feats: List[Dict[str, torch.Tensor]]): + # IMPORTANT: convert tokenizer pad tokens in labels to -100 so loss ignores padded positions. ids = [f["input_ids"] if isinstance(f["input_ids"], torch.Tensor) else torch.tensor(f["input_ids"]) for f in feats] am = [f["attention_mask"] if isinstance(f["attention_mask"], torch.Tensor) else torch.tensor(f["attention_mask"]) for f in feats] labs = [f["labels"] if isinstance(f["labels"], torch.Tensor) else torch.tensor(f["labels"]) for f in feats] @@ -56,7 +61,8 @@ def __call__(self, feats: List[Dict[str, torch.Tensor]]): labs = self._maybe_pad_to_multiple(labs, self.label_pad_token_id) return {"input_ids": ids, "attention_mask": am, "labels": labs} - +# Build tokenizer + HF datasets with optional self-split (80/10/10). +# Ensures input instruction prefix and truncation to max lengths. def make_datasets( tokenizer_name: str = "google/flan-t5-base", train_split: str = "train", @@ -80,6 +86,7 @@ def make_datasets( from datasets import DatasetDict + # Vectorize one batch: add instruction prefix, tokenize src/tgt independently, attach 'labels'. if self_split: base = ds["train"].train_test_split(test_size=self_split_test, seed=self_split_seed) train_part = base["train"] @@ -98,6 +105,7 @@ def make_datasets( if INPUT_COL not in cols or TARGET_COL not in cols: raise KeyError(f"Expected columns '{INPUT_COL}', '{TARGET_COL}' in split '{split}', found {cols}") + # Vectorize one batch: add instruction prefix, tokenize src/tgt independently, attach 'labels'. def encode_batch(batch): srcs = [prefix_text + s for s in batch[INPUT_COL]] enc = tok(srcs, max_length=max_input_len, truncation=True) diff --git a/recognition/Project13-TristanGreen/modules.py b/recognition/Project13-TristanGreen/modules.py index de74b7838..896768ae3 100644 --- a/recognition/Project13-TristanGreen/modules.py +++ b/recognition/Project13-TristanGreen/modules.py @@ -1,21 +1,19 @@ -# ------------------------------------------------------------ -# Model Utilities for Brain-T5 -# ----------------------------------------------------------- -# Description: -# Provides helper functions for loading base models and attaching -# LoRA adapters to target layers of FLAN-T5. -# -# Key Functions: -# - load_base_model(): loads pretrained T5/FLAN-T5 with dtype control. -# - attach_lora(): injects trainable low-rank adapters for fine-tuning. -# -# Notes: -# - Uses PEFT (Parameter-Efficient Fine-Tuning) via Hugging Face. -# - Keeps original model frozen except LoRA-injected parameters. -# ------------------------------------------------------------ """ -General design ideas are that the datasets are defensively imported and are not -taken for granted since this is public software. All imports have guardrails. +------------------------------------------------------------ + Model Utilities for Brain-T5 + ----------------------------------------------------------- + Description: + Provides helper functions for loading base models and attaching + LoRA adapters to target layers of FLAN-T5. + + Key Functions: + - load_base_model(): loads pretrained T5/FLAN-T5 with dtype control. + - attach_lora(): injects trainable low-rank adapters for fine-tuning. + + Notes: + - Uses PEFT (Parameter-Efficient Fine-Tuning) via Hugging Face. + - Keeps original model frozen except LoRA-injected parameters. +------------------------------------------------------------ """ from __future__ import annotations from typing import Optional, Dict, Any, List @@ -32,14 +30,15 @@ except Exception: PEFT_AVAILABLE = False - +# Use fast tokenizer; default pad_token from eos_token if missing (required by T5 decoding). def get_tokenizer(name: str = "google/flan-t5-base"): tok = AutoTokenizer.from_pretrained(name, use_fast=True) if tok.pad_token is None: tok.pad_token = tok.eos_token return tok - +# Load FLAN-T5 with dtype/device_map options. +# Ensure decoder_start_token_id is set so generation starts from a valid token. def load_base_model( name: str = "google/flan-t5-base", dtype: Optional[torch.dtype] = torch.float16, @@ -54,7 +53,8 @@ def load_base_model( model.config.decoder_start_token_id = model.config.pad_token_id return model - +# Inject LoRA on attention projections (q/k/v/o). Bias=none keeps adapter minimal. +# r/alpha/dropout control rank, scaling, and regularization of the adapters. def attach_lora(model, r: int = 8, alpha: int = 16, dropout: float = 0.05, target_modules: Optional[List[str]] = None): if not PEFT_AVAILABLE: raise RuntimeError("peft not installed. `pip install peft` to use LoRA.") @@ -66,7 +66,10 @@ def attach_lora(model, r: int = 8, alpha: int = 16, dropout: float = 0.05, targe ) return get_peft_model(model, cfg) - +# Convenience generation wrapper (batched): +# - Applies optional "summarize: " prefix. +# - Pads/truncates, moves to device, decodes without special tokens. +# - Beam search defaults tuned for readability over speed. @torch.no_grad() def generate( model, diff --git a/recognition/Project13-TristanGreen/predict.py b/recognition/Project13-TristanGreen/predict.py index 126579ab1..1e5efcb2b 100644 --- a/recognition/Project13-TristanGreen/predict.py +++ b/recognition/Project13-TristanGreen/predict.py @@ -1,25 +1,28 @@ -# ------------------------------------------------------------ -# Prediction and Inference for Brain-T5 -# ----------------------------------------------------------- -# Description: -# Generates summaries from fine-tuned LoRA adapters. -# Supports both single-text (--text) and batch (--jsonl) modes. -# -# Key Functions: -# - load_model(): loads base + LoRA adapter for inference. -# - generate_batch(): batched generation with beam search. -# -# Notes: -# - Outputs JSONL with 'prediction' field appended to each input. -# - Uses max_new_tokens and num_beams for generation control. -# ------------------------------------------------------------ +""" +------------------------------------------------------------ + Prediction and Inference for Brain-T5 + ----------------------------------------------------------- + Description: + Generates summaries from fine-tuned LoRA adapters. + Supports both single-text (--text) and batch (--jsonl) modes. + Key Functions: + - load_model(): loads base + LoRA adapter for inference. + - generate_batch(): batched generation with beam search. + + Notes: + - Outputs JSONL with 'prediction' field appended to each input. + - Uses max_new_tokens and num_beams for generation control. +------------------------------------------------------------ +""" import os, argparse, json from typing import List import torch from transformers import AutoModelForSeq2SeqLM, AutoTokenizer from peft import PeftModel +# Load tokenizer from adapter_dir (ensures identical preproc as training), attach LoRA onto base. +# dtype=float16 only when CUDA+--fp16; always move model to device and set eval(). def load_model(adapter_dir: str, base_model: str, fp16: bool): tok = AutoTokenizer.from_pretrained(adapter_dir) dtype = torch.float16 if (fp16 and torch.cuda.is_available()) else torch.float32 @@ -35,6 +38,7 @@ def chunk(lst: List[str], n: int): for i in range(0, len(lst), n): yield lst[i:i+n] +# Generate a batch with beam search; always prefix with instruction to match training distribution. def generate_batch(model, tok, device, texts: List[str], max_in: int, max_new: int, beams: int, prefix: str): batch = [prefix + t for t in texts] enc = tok(batch, return_tensors="pt", truncation=True, max_length=max_in, padding=True).to(device) @@ -66,6 +70,12 @@ def main(): ap.add_argument("--fp16", action="store_true") args = ap.parse_args() + # Modes: + # --text "..." -> print single summary to stdout + # --jsonl file.jsonl -> stream predictions and write to --out_path + # --input_col selects field in JSONL to summarize (default: 'report') + + tok, model, device = load_model(args.adapter_dir, args.base_model, args.fp16) # single text mode diff --git a/recognition/Project13-TristanGreen/train.py b/recognition/Project13-TristanGreen/train.py index 632b5f5b0..3594bf52c 100644 --- a/recognition/Project13-TristanGreen/train.py +++ b/recognition/Project13-TristanGreen/train.py @@ -1,21 +1,23 @@ -# ------------------------------------------------------------ -# Brain-T5: FLAN-T5 + LoRA Fine-Tuning Pipeline -# ----------------------------------------------------------- -# Description: -# Main training script for Brain-T5. Handles dataset loading, -# LoRA adapter attachment, training loop, logging, and evaluation. -# -# Key Functions: -# - run_eval(): computes ROUGE scores on validation/test splits. -# - log_val_rouge_row(): logs per-epoch ROUGE metrics to CSV. -# - plot_loss_curve(), plot_val_rouge_curve(): generate plots. -# -# Notes: -# - Uses AdamW + cosine schedule. -# - Gradient accumulation supported via --accum. -# - Mixed precision enabled via torch.amp. -# - Best model checkpoint chosen by highest ROUGE-Lsum. -# ------------------------------------------------------------ +""" +------------------------------------------------------------ + Brain-T5: FLAN-T5 + LoRA Fine-Tuning Pipeline + ----------------------------------------------------------- + Description: + Main training script for Brain-T5. Handles dataset loading, + LoRA adapter attachment, training loop, logging, and evaluation. + + Key Functions: + - run_eval(): computes ROUGE scores on validation/test splits. + - log_val_rouge_row(): logs per-epoch ROUGE metrics to CSV. + - plot_loss_curve(), plot_val_rouge_curve(): generate plots. + + Notes: + - Uses AdamW + cosine schedule. + - Gradient accumulation supported via --accum. + - Mixed precision enabled via torch.amp. + - Best model checkpoint chosen by highest ROUGE-Lsum. +------------------------------------------------------------ +""" import os, json, math, argparse, random, time, uuid, csv from typing import Optional import numpy as np @@ -50,6 +52,11 @@ def set_seed(seed: int = 1337): if torch.cuda.is_available(): torch.cuda.manual_seed_all(seed) +# Eval loop: generate summaries for a dataloader and compute ROUGE. +# Notes: +# - We re-enable use_cache for fast generation. +# - Convert label pad (-100) back to tokenizer.pad_token_id before decoding refs. +# - no_repeat_ngram_size=3 reduces trivial repetition. def run_eval(model, tokenizer, loader: Optional[DataLoader], device, args, rouge_metric): if loader is None: return None @@ -61,6 +68,7 @@ def run_eval(model, tokenizer, loader: Optional[DataLoader], device, args, rouge with torch.inference_mode(): for vb in tqdm(loader, desc="Eval", unit="batch", dynamic_ncols=True): vb = {k: v.to(device) for k, v in vb.items()} + # Beam search generation for evaluation (deterministic-ish) gen_out = model.generate( input_ids=vb["input_ids"], attention_mask=vb["attention_mask"], @@ -87,6 +95,8 @@ def run_eval(model, tokenizer, loader: Optional[DataLoader], device, args, rouge RUN_ID = os.environ.get("RUN_ID", str(uuid.uuid4())[:8]) +# Persist per-epoch validation ROUGE to CSV for plotting and auditing. +# If multiple runs append to same file, we keep last row per epoch when plotting. def log_val_rouge_row(run_dir, epoch, scores): """ Append one row per epoch: @@ -113,6 +123,8 @@ def log_val_rouge_row(run_dir, epoch, scores): # Plotting helpers # ----------------------- +# Plot validation ROUGE vs epoch. +# Robust to restarts: we select the *latest* row per epoch (by timestamp) to avoid stale re-runs. def plot_val_rouge_curve(run_dir): """ Plot Validation ROUGE vs Epoch (robust): @@ -340,7 +352,7 @@ def main(): os.makedirs(args.output_dir, exist_ok=True) set_seed(args.seed) - # Start fresh logs (truncate; do NOT pre-write mismatched headers) + # Fresh logs for this run (truncate old content so headers/steps align with current run). open(os.path.join(args.output_dir, "train_log.csv"), "w").close() open(os.path.join(args.output_dir, "history_val.csv"), "w").close() @@ -399,7 +411,10 @@ def main(): log_file, log_writer = csv_logger(os.path.join(args.output_dir, "train_log.csv")) global_step = 0 - # Optim + sched + # Optimizer & schedule: + # - AdamW with weight decay. + # - Cosine schedule with ~6% warmup (capped by --warmup_steps). + # - GradScaler enabled only when --fp16 on CUDA. optim = AdamW(model.parameters(), lr=args.lr, weight_decay=args.weight_decay) total_steps = math.ceil(len(train_loader) / args.accum) * args.epochs warmup = min(args.warmup_steps, int(0.06 * total_steps)) @@ -442,6 +457,7 @@ def main(): avg_loss = running / max(1, (step_in_epoch // args.accum)) elapsed = time.time() - start_time sps = (step_in_epoch * args.batch_size) / max(1e-6, elapsed) + # Live progress: smoothed loss and samples/sec for quick sanity checks. pbar.set_postfix({"loss": f"{avg_loss:.4f}", "sps": f"{sps:.1f}"}) print(f"[epoch {epoch}] train_loss={avg_loss:.4f}") From 032ce58d1ef9098f7471ecb20ebe223e7a87ac2c Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Mon, 3 Nov 2025 01:16:25 +1000 Subject: [PATCH 40/41] slight edits to remove unnecessary command line args from README and train --- recognition/Project13-TristanGreen/README.md | 6 ++++-- recognition/Project13-TristanGreen/train.py | 5 +---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/recognition/Project13-TristanGreen/README.md b/recognition/Project13-TristanGreen/README.md index 24880f77e..3e9fe3541 100644 --- a/recognition/Project13-TristanGreen/README.md +++ b/recognition/Project13-TristanGreen/README.md @@ -88,13 +88,15 @@ python train.py --output_dir runs/flan_t5_base_lora_biolaysumm --batch_size 1 - Saves best adapters + tokenizer to `--output_dir`, along with `metrics.json`, `train_log.csv` and graphs for `loss` and `ROUGE` scores per-epoch. ### 4) Arguments + - **Batching**: `--batch_size`, `--accum` (effective batch = batch_size × accum) - **Optim**: `--lr`, `--weight_decay`, `--warmup_steps`, `--clip` - **LoRA**: `--lora_r`, `--lora_alpha`, `--lora_dropout` - **Eval**: `--eval_batch_size`, `--eval_max_new_tokens`, `--eval_beams` +- **Limiters**: `--max_train_samples`, `--max_eval_samples`, `--max_test_samples` - **Data Splitting**: - - `--self_split` automatically performs an **80/10/10** train–validation–test division when a pre-defined test split is unavailable. - - Custom paths can be provided via `--train_path`, `--val_path`, and `--test_path` to manually control dataset partitions. + - `--self_split_#` automatically performs an **80/10/10** train–validation–test division when a pre-defined test split is unavailable. + - `--train_split`, `--val_split`, `--test_split` can be used to manually split the dataset. - Prevents **data leakage** by ensuring all splits are loaded and cached independently. - **Misc**: `--epochs`, `--seed`, `--fp16` diff --git a/recognition/Project13-TristanGreen/train.py b/recognition/Project13-TristanGreen/train.py index 3594bf52c..e754614b9 100644 --- a/recognition/Project13-TristanGreen/train.py +++ b/recognition/Project13-TristanGreen/train.py @@ -311,9 +311,6 @@ def main(): p.add_argument("--val_split", default="validation") p.add_argument("--test_split", default="test") - # seq lengths + prefix - p.add_argument("--prefix", default="summarize: ") - # training p.add_argument("--epochs", type=int, default=5) p.add_argument("--lr", type=float, default=2e-4) @@ -364,7 +361,7 @@ def main(): test_split=args.test_split, max_input_len=1024, max_target_len=256, - prefix_text=args.prefix, + prefix_text="summarise", self_split=args.self_split, self_split_val=args.self_split_val, self_split_test=args.self_split_test, From 22171a733068160ab6ef0339e8e744d108d70692 Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Mon, 3 Nov 2025 02:36:51 +1000 Subject: [PATCH 41/41] typo in train.py, added in justification for parameters in README --- recognition/Project13-TristanGreen/README.md | 54 +++++++++++--------- recognition/Project13-TristanGreen/train.py | 2 +- 2 files changed, 32 insertions(+), 24 deletions(-) diff --git a/recognition/Project13-TristanGreen/README.md b/recognition/Project13-TristanGreen/README.md index 3e9fe3541..5cab90397 100644 --- a/recognition/Project13-TristanGreen/README.md +++ b/recognition/Project13-TristanGreen/README.md @@ -60,16 +60,21 @@ pip install -r requirements.txt You're now ready to go! -### Dependencies - +### Dependencies (Named as they are installable via pip) +* transformers 4.57.0 +* peft 0.17.1 +* evaluate 0.4.6 +* datasets 4.1.1 +* tqdm 4.67.1 +* numpy 2.2.5 +* matplotlib 3.10.5 +* absl-py 2.3.1 +* nltk 3.9.2 +* rouge_score 0.1.2 ## Training Usages ### 1) Quick-start commands - - - -**Hugging Face (BioLaySumm)** ```bash python train.py --output_dir [dir_name] ``` @@ -80,7 +85,7 @@ python train.py --output_dir runs/flan_t5_base_lora_biolaysumm --batch_size 1 ``` ### 3) What the script actually does -- Builds tokenizer + datasets via `make_datasets(...)` with `hf` and columns (`--input_col`, `--target_col`). +- Builds tokenizer + datasets via `make_datasets(...)` with `hf`. - Performs an **80/10/10 train–validation–test split** automatically when `--self_split` is used, ensuring there is no data leakage between training and evaluation sets. - Attaches **LoRA** adapters to FLAN‑T5 and trains with AdamW + cosine schedule. @@ -277,6 +282,25 @@ This mid-range view highlights the epoch-to-epoch change more clearly: Overall, Brain-T5 demonstrates reliable convergence and solid generalisation across validation and test splits. The model maintains smooth training dynamics and rising ROUGE performance without evidence of overfitting or divergence — validating the correctness of the pipeline in train.py and the dataset tokenization logic in dataset.py. Furthermore, doing full-passes over the dataset converges to a higher set of ROUGE values, making longer passes - less epochs preferrable over smaller passes - more epochs. +### Pre-processing + +We keep the input text *as written* (no lowercasing, stop‑word removal or punctuation stripping) and rely on the FLAN‑T5 tokenizer to handle normalization. Concretely: + +- **Instruction prefix:** each input is prepended with a task prompt (e.g., `summarize: `) so the format matches FLAN‑T5’s instruction‑tuning. +- **Tokenization:** Hugging Face’s fast tokenizer for FLAN‑T5 (SentencePiece) encodes inputs/targets; the pad token is set to `` when missing (T5 requirement). Inputs are truncated/padded to **1024** tokens; targets to **256** tokens. +- **Label masking:** target padding positions are set to **-100** so they are ignored by the cross‑entropy loss during training. +- **Decoding safety:** we ensure `decoder_start_token_id` is defined so generation starts from a valid token. + +### Train/Validation/Test splits — justification + +- **Official splits when available.** If the dataset provides `train/validation/test`, we honor them exactly. +- **Self‑split when the test lacks references.** With `--self_split`, we create an **80/10/10** split *from the training partition only* to avoid leakage. A fixed random seed makes the partition reproducible. +- **Why 80/10/10 Split?** It gives the model the bulk of data for parameter estimation (80%), a sufficient **validation** slice (10%) for model selection/early‑stopping by ROUGE‑Lsum, and a **held‑out test** slice (10%) that is touched **once** at the end for unbiased reporting. Using different balances (e.g. 33/33/34) starves the component on training which requires the most compute, the training. If most of the dataset is committed to evaluation, the model starves and severely underperforms. The 20% used for ROUGE/Eval are valuable for evaluation, but evaluation does not dictate the quality of the model like training does, it only tests it. +- **Learning rate of 2e-4** - Conservative base LR for **LoRA‑only** updates on T5‑base. Stable with cosine decay and accumulation on small batches. +- **Weight_decay of 0.01** - Light L2 to regularise LoRA adapters (AdamW). Keeps updates from drifting without fighting low‑rank adaptation. +- **lora_r=8, lora_alpha=16, lora_dropout=0.05** Balanced adapter capacity vs stability. The **effective update scale** is roughly `lr × (alpha / r)` (= 2× lr here). `r=8` is a common sweet spot for T5‑base; small dropout helps generalisation without fighting instruction‑tuned priors. + + ## Dataset Brain-T5 is trained on the BioLaySumm 2025 – LaymanRRG (Open-Source Track) dataset, hosted on Hugging Face under the identifier [BioLaySumm/BioLaySumm2025-LaymanRRG-opensource-track](https://huggingface.co/datasets/BioLaySumm/BioLaySumm2025-LaymanRRG-opensource-track). @@ -292,22 +316,6 @@ Each example includes two main fields: During preprocessing, dataset.py automatically prefixes each input with "summarize: " for FLAN-T5 instruction consistency, tokenizes both columns using the model’s tokenizer, and pads sequences for batch training. -### Usage in Training - -In train.py, datasets are loaded via `make_datasets(...)` which: - -* Fetches all splits (train, validation, test) directly from Hugging Face. - -* Optionally performs an 80/10/10 self-split when the open-source test set lacks reference summaries (`--self_split` flag). - -* Encodes all samples into token IDs (input_ids, attention_mask, labels) ready for PyTorch training. - -A custom Seq2SeqCollatorFast batches and pads sequences efficiently, ensuring label alignment and correct masking for loss computation. -This design minimises preprocessing overhead and keeps I/O throughput optimal even on smaller consumer GPUs. - -Users can also manually override dataset splits by specifying `--train_path`, `--val_path`, and `--test_path` when providing local data sources. -This makes the training pipeline flexible for custom or extended datasets while maintaining strict isolation between splits. - ### Why BioLaySumm? BioLaySumm provides: diff --git a/recognition/Project13-TristanGreen/train.py b/recognition/Project13-TristanGreen/train.py index e754614b9..4072069c6 100644 --- a/recognition/Project13-TristanGreen/train.py +++ b/recognition/Project13-TristanGreen/train.py @@ -361,7 +361,7 @@ def main(): test_split=args.test_split, max_input_len=1024, max_target_len=256, - prefix_text="summarise", + prefix_text="summarize", self_split=args.self_split, self_split_val=args.self_split_val, self_split_test=args.self_split_test,

FU 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 literal 0 HcmV?d00001 From 592e0e0556d36a4046c0aa469aac6a9791ba34c0 Mon Sep 17 00:00:00 2001 From: TPGCIG Date: Fri, 17 Oct 2025 17:37:55 +1000 Subject: [PATCH 15/41] moved brain image --- .../assets/images/brain t5.png | Bin 0 -> 82826 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 recognition/Project13-TristanGreen/assets/images/brain t5.png diff --git a/recognition/Project13-TristanGreen/assets/images/brain t5.png b/recognition/Project13-TristanGreen/assets/images/brain t5.png new file mode 100644 index 0000000000000000000000000000000000000000..cab463a0a375634de80cb0bfa2b7d93d2f37bb22 GIT binary patch literal 82826 zcmZU)byQnV)c2c&0KwfYNDCBqhv4ol?ga{MarfZvP$(2BPJ!a?E-hY4ad!*uaQQvY z`>uP}y8k3Ov-X)enb|Y@Gv7TYQbSE13!NMt003YqD#&O703aX$08ECUyp&YucGtap z0bR7@r2s$2DE9yWC_qt0@~x-IVLNKNrMwsWgN|TzE2G`S@kb&Z16o{tG`tWj(C4n_ zeo|bs7|vXPlo|aLGG_WJjFXhWGN}4d5cemN8D&+oQD(Gig5@xjP-ouQZj5JodWlh| z>AGwgujOINwz?vJ^6=YzfnB!NA{!bAqNc_)nDn390=t(vlFXYWy6*SVKCdv|Eb1| zOp_2QV;g9ay&e>u9U|a&arFPzf(5a;>vF#AIx#xSylOf4iBu=KdaI#C8%LL}CHV;p zxz(twfi=5TFCF>XH=-;25=?zvhjBWv67UHL^hNf74`C z9Mzi<+ncuhcD~8pp##;uf+cIezw|QGLMQwYvIb&BI9`Ru_fm+TZCkUJj&G?B$D)2b zf2rc{_I%N5izuR-W%&RGXoR2K4aYhI#3Cal^uZ<(tPh=0rGo%tP8J;~AmJgj-i# zv7v92t}`3RZ19VHQt&E$@6-mW1Y_|X&4OBOS2zU$P}laz=;re5J}v=x3VzbqJx$h4 zsXZ95TZe4*sH@+Z)`KBhuHT3v?;ZX!E<0;SG(HYIUt%VUGnFZDSW{6mNIXhKR~E0+ z#SlN0m(3m8PUQq7r!D1J>_>2Nhq^BQ5Z(oErvEC!K-Itod&UGaBV}kKz3!?H)j@BO zwG_IxH~G;m7>peL?7ZyPb<+2hk~qu0dRXxr8_rxCSlT;z zVFML9Htw5hnM%r4H1*CZAkdA^THAgjFhgtt4$q)kBn)`=S$%Q&U#H*+yl$Pct=AkG zLsPu{GOfXFtb?tkWIv<2$#_E%R1(x(wt;q-4|OdM)aIsn>JwmD z<(KyIGYs1W7a3(HzVsr6k*YYt>fD_T^Go-UA37M}AL3zLSbviQpPAzaGyPAfUfktF zKEIU!b;oys|I)FLs(|?Rv(Pa`73@C9kdl}I$Bb10rj$0)Y=V0%1 zNPV-rby6+xw1Z_oC1B9n2LmCc(8J7+xwJtO%w*2i8VV>B-c>=|Ygi1VAlhnmHx?Ry zH_k15B)8H$x zvGDwQZLU}0T^OUpQK{!34S!_d;BtN@%gf_r{r5Po9S+C7G1NEpJErCyCyQHB$1;R6 zu-qm4R!SiHhXW^q6JAXm3P?;X2m{6ae0TX{sFJ43D z?58$R(!3k{TEl(?r}o2NAW&VmvhE$Jlo#daAEAgoz6dpARFP>pIyUb&@*D(;c74sEahlY(RTYl>n$@uJ9&R#@- z%04+^;E0)w#f%!bucrSrdH+QIg9&aViC;z|R>@`WY^eq7%H!;fOteBVqYS4r8;xd{ zIz?Po(bExS*D(1VJHKk{Sq*?n+9C7&bBtxTmO9FOg%8>pB z`J3jsxWUntDKQg46?n$t$K>g+%3)Y)w;2@C@ScbPO7b8uEBaY-R~ ze^^WFM-xhpf1MzlLldTu)TenL_g+R|bq7WZ|NSBTU-IhEU`Nb5ROMXh&w(>B-a4LU zwP;gc0S~W8da|!IcDdz$DcNwn6`>rII|X~5+|uRpelE@O2Ts08<_FwHfD_Xhq^Pj0 z`TC&YHXfV@hAK}}pFtZ59g6DQI_7EhLT(+`ETSCM^)K$LWG#>sXK<9V~Nln}h@agClqckstc<)XTL^-%bS) z@HuAyH7Vpl(eK86&`0ERP^6_$i3UOfIgl(B<0j%Adj%@{13LFd(^Kpm^YpID!c*Hc z)FKoej~Q~aCeNwf*%$2m0MjZ7X}+G4fUasJ4FuOC_+TkR{P=2`NeV&7bQmMyU7N$| z{@f9oCv*gVpr|X+F|33gL#O<6stL zU%RdzPAA0c4HtW@s6NT+SkR?+xve~~FW=rZT1d&*_}~$r)lCiJooni0^{?qYe6!>k zX8W{}N8Iz4N9WCo3wi_?%tW`k8DB{H^NPx_K3M_|)0~kOshY7Q?px(L$;=SEv(tGVtnpRl@9R ziYu_Qzd%u>qZkOOrAIJ5HJc)H@_=AmMIJMI`!Qx36W2-Erib^s0vpSM911Q+PFsQ7 zR)Rk>&i}ETFI4(fw(re9%UmNw+YsGs(2KG0c9IWSZp2L~_Boj`e{O9=;DGKXXl@GV z=-bsO5lVUAW}vwB^G(i#@S^-mEyVVHXV0B~*bJJ6N}XB2snf*HXB4HdhM0*)6mbfi zf|w|9`n6v-8jBDv41b`24YnVZLI8+XqcxX8*#N%&UgZ_i&Qx_Jq#o*b@jAW4TMq&n zuUL$&(FmrT^}oNr*}WHs%>4Ss{XJ>sad37(bu5L#TrqEsJ7g+&Cj}R7q$95sWr8k_ zCq0-wEsxONY9PkX`Ob)?SJ~Cq7m}P&G$RqItjPd}11~c@p8M}JolgFRM{SR6{C){a z2&mn}3v()838k4H&hPxnxyyU(XED)JHuSrkHf`XA(uleOc#kgcjBiXHpqC?vYX7HK z<2^;HnHnFDq=r+5wiCsftyq$mdocWhEA!#-We#0`6eUMN3fOiINCR^rX=e+%v~ zHOm_hoRGe)lcx{pD>W0ESf{$v zz+?GzHlE)Piv*gYu1JT*w@BBAvPDEncE&wf?7UYe^WgyxBeT#ET7Y(nm!A3W9UDWS ze^Y#@$aT*c4zBV_B$bsFP}z`(=ru3WiYsVDTSroP8wN8Is)6V4=nt7hzQAXa49N_b z`3)=)0Fq9797wHiQ;v>*z{$C#xG(?ZANhFnLEIt7XD<3v`>fz&TXVxHz$s}{z+#|rRQs^Keb zv-S~m)9&I$NhJ;6p56qzc>p0XEl$E4U*%T?^D%!2Rb8 z2o88uw=}%Yqes$HH{;*?e&m(<6e~=y8ZUyh)ts52hJr}KXY1AUro`xw{Zq^vKJhA& z{mDHtxFeqCaaZ2+q-@3H6HQ^n(8Uij%Hwehiz8m~=Za3dfjI-QWkT^d)QmBqxa*HC zSB5z^sP~cTzCEw_Cf}s_tE;M-ySx7l<&~#eBfr$+dENCOg)?xSD;-Cze40t)CotBz zYxJ8@9=B>(QA9ACHbcPGKD!|JAROSNa!cii!{}r#5$r=`(d3 zzQX%xn?BaB1NfS=Eoe=mC$6XZ0tjM|lQtPWggJN^;dQ3`PKH@2^md1xP@3LMj;H5J!+G2ZCM}b|P zg<`a9j_y!ofe@ytm8UJ!C*%O%%fbDl&S3nkJ?2BDIYvfXdbY~ z+E!T!r6lL~Q}v85{i{-x<;T`#TBm^++5IXK^0%X(*0`dnX>#-BRkTvL7{xA{!pC~4 zK`v9m7r7HxAhU$l{O}F((E1bmx+&v_$fuoW_YWtMw|Md{AWBfK9sV74*6@dvNE|xs zTp8eI7Qf@&@MKV1G5FX4Q*X}e|siO=&TwDSqNEz(io za{fdeZ0!I7H*OvN%)GGV*7xo60VJGnFBFOBy1f%$DFp(r=ib%(Rs(_cO_x8VUYNBq zAajZW=YjV>Fje2EK;3P{f_TCy{WuzJVX*cmhyOn8lpI76)BiOj5!*t56U-p248A6$;F&GuxsNhRLe*jtMC=3U>8 z$Aq$;j*%5C=GIYuKgD|k9Q~y!`{z#RbOI;B+WkjtK@RN*&tdDaclr0uRP+K1U8|Zp zrV)JWkD%qR#a-XpfRPt_5#n?#fzBc5Yknn5&f93Dq*w&#<>G(jucu9WHB@0FrOWswYyVToHn#)4PPkp($}}RnvQdD2f*IM(y798yGjo9-Yw= zO=s7~!Qt_bECf1vOwLS2nrEN@mj!`AAM^M}&5W1LY0L#|T1dWSH}JV9P2xfJzBE2y zDzaK7gliot!$BsP{ZKHp_RFR`e7_itP6D>d<@r54Q0;Uf=K*)jb1|ROlp&(e)B8G~ z`WQlJAaf?QDNm`UI>rf9R|H4VpYJ2n=4X%ZUzq;letuSkzQ%@8;2B|6l7_+Dy%M7&u<5QxQ? z3jslX(Z*0R&-j=wwtka@<%$*L!CZ5rmp^nyjXe<-axxW!f5C^AuD_vBz&i0#5Aj>n zN36Cg%t0+R-t;mA!l90Dy9;V1{qrCIH1tbvF{2mR^XB(EJ|2{yA#x)0)L>M6)Amwx z%r*|cmfNwZ|0b96#`Q?+)1-*Fz2dH=dB=f`i6V9?lmCksA!SK@+emLf`KIqF)dQ23 zp*FeyQsy)u6b}$&b05Uf)fF=(219DWk{ncF1N{jjUzpdJKF8|vI2`#oQdd9~BO)5! zD+rdPXQHaRa3*z9;W0BSROwPgFokvcV;yGLmT-avD5(Ph;vE5LJdgxrj|@!hT0ho@ zeu?)M{Nea0%}__C?<#x{2H_9)hc4f#YstV&1?CE%TwbBq%DI9+XeCe3ZzGq}n4-Sb zAsXx!97i+vm$1#A5|T0r>2xZx2Tq>mP6Rd%{XBOvDp_Oy8|3_zfSrAh1u;W+i?xYw z7|PBDr&7J=y(6vS&+j<;>1l2iieFwJ;5I{tM>65kU^GxP2(WX!EkWKGs)akqZ9u`(XJLi(%SVEpb2 zLKVU;B^>9FDCowQBtZaspiW30QIG0G_8GOmh7#mZ}MsbCN5N4jnP!LLKShx9K-Z+FmE!?G$ib6g=~< zPgnfF%KiDMHP;*YMPT>e?RJiisas|_{FWw;#SyT@QoSF-yh*NbMtQ^pXJ^AyoIE?t zh;@p!Z;XyCWxmOdmrBF!>CIKZy#dOMMg|fFc4Z@(c^n3b^J1j;3=bJ-Jx{~c^Z1o* z!suQF#+NHVg}J8GVj^q#>9cI|AyPN=;BV=Ch*V@<;xFI~(ZDIi8|I-!sgYDR=-Z?e zx7_Lho8mE2lEpxH&zl=1i;~Z8&HYf$Lq>OVYKZ+ua6g6x;xOr0BzY-}tQDNRwy0Rz zRF}(zKV?rUzspCC3Dh<%vexM;7Wc$@+UDp0f3f{tS8Vo{4`MczmqPp@`Vr7% z@-LJ3VwrjII5@miBJ50($3FH~-z zmla8BFFQZZ|J6{Jgz3Ax43ZJ)fnH2_ALet~4DQ|o4GJc7&C$5~qG)*wY~&Rk7faE- zN2IpN`%6-fcja9P7MJXVN+DAXVre$DK2B2NCHJx@@=)?9Le4hdUcku9I}RhTLMi9%VVSZC~alzFS$%DLD~MYW}1OqtpeQ>zuyd8 z<1%9-FqwJjHd-kYm45kMjID%hZq}!30YNN@=&_5I=|M0#?vA>wjXdkc(A9HM4?|lp zNP}?0H9m0`yTI*iWeVMs_@>KH0)Fza(a70LS7H(+X@mt@&x3!9aa^Y#>$-p1L>eU( zo7xy9890SacMqH{M|@hjNt&IbdUiwgRoKm=w7$}wB1OyA{WspR{{sIRO1U4$ z+2WfpE)2yqTO=MShxUOtOB}K!8oR8U3Jy(Zl8vax7`ruaC|sK0RT)W0OnFF+Mm1O$ zr43Ny4tXx!vG~hf&TqGA@zB?iIL^6_@rxY13kdh3;rX3+v+V}CC$l*gNRoby-W%tC zQnV-2)vGS;HD$mc1#JNCzO}W-Amj>HU;Tu}Rz;4+T6ckG`?4Rah+j7}eG-0a-Ytq| z|08FdMaa3bub29nsck3zMGg#6ZKktdg2Tx(n_p<|a1jL@v$FR;QsSwPrnb~Z;Hwos zv5w4_c!C8fDGL{XzWj2#tSDMc-3ok-ukqgJe@omdQNX;=+@BpYDXlgC$&cgyQ6yV5r*6^6N#OEU9ki@Edz|h4`sINGiy~g=SCW{m3pV@w4sVz3C~2XYV`R zAO?`LHp~lOEQ^*CB-yPIw!voz6}8F7!*4I;W17NL0mFA_M~S2~1uA|ZUr`3lH()$; zv3iyQrm&$@URnvsN92ZE;)HhS>*;QXq0A(>2RgkH?+L2h@%`-Awl;19{tz7ElxypK z0|zsL@kudb+@id=b`(^-b@8HA0xwYS1m=Ffq(MW9VXn>c%q~l)ecTEXTa-|wE^oCn zL1d)NY?-D#!qq;41k`*_ANiTwyYp4S9kd~t$ZlU63Z05zeI~?Syf41#EXD(u@4-CJ@gPCZ)<&S=rHvQFQ$>pNeXBRJnqu|9%7L6u{ZO`x$gQK{!yh@oj{b zm5fEW@<7=f-@HxP1I;c!M$D8=3J`ZgH;AzB&6ciE^Ic}T0x#E&O z{EQ(C&H?ijATqNhrDVAQGS!`eiark*0J4Vno_DPY!3lTLL#I%*k~@Mz_=BGr@vCkm zq7wmL1H&GwPtgGsD4?)PpCSUrBeGIxuV4!>Tz`&8+6wB{u~U%|ZT6zY^(}3y3nMVL@EG(WQeFKw6jw<}u`9KfjWV zbpGHv5ZJEW0Zz^;L+p&Bf}oIrLPKK_P4dd+qbPWTY{OB=d<%ia_mhXdP{4FZ5&(QX zA?~3~bSQB-JccCkRkUfBn3}U#VVEtv>i4ih^5m6#siLN{3Tj-_!%NRFq^kNeOwS8n zYK&tT`C!%%Y9D<}XivDJ#9eVa$8Nhln|-fUXU60Gq2M4OvQ$U%k6mAk9c{E=!y5bceaJh(9IU3S$&wrOq-PA%k|I6gOWtngVln_e@TeiFiIGL} z*`Jk7d)jwxI2PHylBgT6b294XPX+k31lKF9rU(M zePu<7FnuTIODUX;Q%S}YO zo$Iq}Y1z^96Ck=6`Vzc_ug+4deb2fY>cyvb`(?y>oS(|6o0OkyQUq%qT*+8Y&WQFmX)#_+#q5&LF&+tgd7DX4M zp-*x7(5wStI>ZL%6P|HOxo%sprX)|)7EJ0?YK{dKH9=mjYX8gPDyCLm4gM5Xvn*ue zx|Qy@8q(8ZPv<5ggwjJUU`tF7Tim618xYKcRquy$*sz4~#>jn8_3#GyLcljmly#)Q zCPM}@M6Ehy5UKdLO%gjUMGd8-{J)%}e;sb9Hj=Q6Wd>Z)6Yi~BD=tPp%5mczB%L45b!-*Y80GD-FF3@&PyCB^M$63GeB!0%<#1QfhvM7ksXpe!l9@Hr+b=+2;5noogj zR)V2ELq9f!f>g<~K*ddg5vc4l^Oqv5IBle@rwMJ!8D&6-w=O!J^Alx6*=-2aSLxqE zJ&EtVJ;H>Boq;wi`5aNzg{XHcd(Hs^V`#kw2;NA-%@}O$zE=bmG041$*0x-==?k{b zAU}HP6e}UoBPmUyeGYTVF2Yx5qOzo6L%;UT1!BZl4-YI>Mq5v_U-~8dnyRk_>tK@Y zZZ!~2`8J-$iQ%+Z;NkKA^_gkSrz@OJGl}cT@!bCW)}Fljdd~M69o;9s4@mzm{)Ok7 zAvZC8#~>%P2`XF0hBPcjex4P-2@b?~1tO2qS5W%LV*5(rS;*bR{6;I#5Jg)4%)m}2 zQyrP#z7K?IlVtySPZWmXQtQW2<;DmC0on1pAW=Mu6EN}>&q8`u&FZpV}}RMi)Q$La@)M38vk8TWxoI+m5DKz75{$>i3QQ)s=QCqt$QI*Udb0w zMC?Z~*Zx=jA~r^Oy_~_y`>$=Z7gGE`ZU0Y&I=>G(Hi=&H=2WULZ3?%wSd4uBub~(C zwJ^DURcZ55lTFYIn6AwbXN3x}7iE+*urcIBz=h}am@6|`n~xL><;2OSeV zSNZ0#?DenBi^rhiuW`-KzA-sgi+9$?|GY`Ic9%L^6_At}7&i10m^jDfC1u2%VxVV< zg^}+WKdZWj8G+vwp{T9)Q5ofA1NeVRqr~yD;OgW2W}aSbEzAxtoicMAEF8HIhuSJR>b~M#jUX`tJO;(=40beorj~qP`4CoGqi%KZDEAOyZ-=9g8K@o+p@N zaBd~s*#0@XKZg%a))RlVfYizS7R$Sqv{vF23i_~ajziV!lg~j^Ah3ka$@%JaJ0#r{ zKG#g}t>ks&zXv?C^Sp$;atuBRKz7GWU){VTtf0Coy)4aiI22n%H?#R(1?F#n5S zn)Q{=N4vwhdI~38I)tBPFqrzsO8j3%9-A%vw6?9OoR7ZG4=;HmQ{TDhfFGaaW(sc~ zx=#YFW>-5O=U3`xpAJ0Uh_NsVBbvkK{7|W;7w%#YoYr{Q`)WC!o~!QqW~z!zEEc7< z+rxz|BT~$N4jDwc0^r?c9NuFVzK7nnp z>TAFVefY!~=r`lcJlKDTRxsQG-~9+PXj)AQ4`s+Dmh?#h7bfL z{3=3AVQ7=m@A<|L?AT-(hyOL~7c5LcNV>zCykeBGmvU>Q^5BxU5GNYM#p`W&0+8U0 zCQc(IL{{09ye_L}dFTqNG{&m7XVd!=H0=$2V>)Zf*U)M5y zQ~ckP^se1fSUNMQA)WFM+i)@33H0~BanM!7)>TS0x(4vUF0kBKLW(k0X3b+UOiE#} zCZUE3z2=B5tqix6R?+)+%NU}Z@zR-7?Koa}x$C%D@}h)~f^gm1Kh6QPvW)i4!VHgr z1XcTWinl4WRG7GZGjB@nua3G=SFXe<+uRt9^clW@L!|r0N{N)T z>5l6Xe_(QW&AswmJ7Cv$Kkw1Q>geGxagTj$A!!?-?y!}&sy$L}Nw-(Wn|^a9DlaN@g}I+{mq94gm&BWp^8{o5wvvp~5lB0*cz)nelPWYoLV8D-TBif~$8qVJ^jDvK>vKW!5 z?z`WNduy<~v{$>Nz>XaNvHemIY=^T279EcZCr^QWT7UlWNiQVc2lG!#ylByf2FH+r zeu%+R5Rzd7?NSR8_pdC51|;{eK&HgC*lYjY9(dxR!&llA+9)k)byYgy`$SG{wv>V{ z{d}(1t6t7SkVk^XylZ+frAuFjcw8Qw%DetF^A(&%I&5KxbrEL{7BsXUZF)L=$%7Q! zr_h&d(~IgAz>Dhj66pfF+KZ?nFj_-!T^h~(*x`iz@wwI138?mO0^Joe0 z7(=w_w&A8d%(FOJa>hqow0z=~UemJhCIWSww60i!6`0<@0?KOs^v?&B-(4lI7_*+} zm2rM($xX=r02a>ZJt6A)OVt(kXkQO>=<^52;)K9Y{r+8+(T)is%Q8y+WR+U$CZvbK z6IRcWN)G%XLbFIruIiI$_;R#f_LkZyP10M2Zzq^rLBb5UBAG8px~L0)^!z> z+aTd6ez6G3BlN+BwqCl26y@soqiMe*S3Pq=Mdp1N%!w@+tzOk{d__pQk3GY(6v+_Y zvZ3}*HG#G5AGH z1QTQG8hIhJdyk%fS!&bx;6r(0#nC!Yq|nuEc=fh1T1UYfZJjeHmC{9)rt{(~+NpoR zBshsIz0HJq4NCblg!poYnGW_`WCP!DElz8h3R^L(%W1RzZlZr;CH*{@6&XOuMr`9unbE6oIJKk8S1)1}l|4S%b`J1_ht(ERXD zcXh|~a?whFT_P4A0AKqN%D5wKK613uyYe``?=PE)2}970vnLC^>@0!)a8 zOoow&J+ab2WqsnWf_-9S{LmGd*{g)(-un>|{w*kvh)$ar56A5D8sSDlqhPke)jnG!{eta$^BtA*s3D|_!8?S9zkJ}Lmp|W({z_z^Nx;}Z0mr~9 z;$7SmTch-`7#!_}iCGH&4k5Q00#Esg2L9%c|NElAaBFIPoHTZk5Vvl=qAEicVEons z53G`ixL6Jzav-xug*ODPe|*-WT9w5Hmj^s-B-BeW&68{JUZV`j!!_u6N{(7-8&BjD z7*a?CQ#`(i`{o>rE#D_HFc%P-8FZgZlcIO4t3d_t&C@d>oZklza`Ic!M1Q~(l#v^c ztg&ip9J}CG5NoE}>Yk{+^`sA`F}~xJ!fRmkd8y4V8A@0&^WBtuqLo^8G7QdzPDd$6 zYVw%Da{Bw%(?U%qiQH}7?ZdKI)gk$U9qPmE*a$z-6y07ioZlWaBi4Qws>n5wx95Xm6u`bz*2Bx<3W3_?px7?R%vZ*~my`G&2x&~)dVw7zR) z=Shd3pl}sfQltulqFR#dx9j}k^Tl5q}SRF4jy$1-6a8|NW&+So}lW%qt=*zmt zeO+hp0UJiHF6Bu(BL2PPy+D78kB65gYzUW$D5@0u!G$_5v=kz#c|zCI%jsNFCnw2h z1V**PgUn|@Ba(IG=imN7WRP^=-@$OGIydNm;jJzaeu0skAy`i#9op^XT)|!ZeO17~XFK5IgWweAC9^W)TX&5N&)^TML+^ z=~{G0t@2}B+!Gfb(=l%zUUOR0Y4d#~zeypOh|?e@PK0R0=|z&IL~LvC9{7W~Iyrx% zcnt1H=_M%@_EkES=VH1DvDUIm?p)$`e^)n%9-|+VF>zsF;-t>yhJCOP{e49pq|V43 zMahZ|Fcyns8tW3UgE`HkV6KxERzoUa46nebQ+c|3R4Z{`^@T>RLxW;{8LZ-%=bz?W z0856AT^!mrsrh2-5m4?CB(!QM^6PA8+9-E8b%h*HC^MeL>N|(o`ZLhS1N$M7>sAdh zs^Sn$gjg{+ zk``hcXksJ9Q+=l+d8uXOH(WN^?#J=jy4!aBLr6Uv*p8>_-z%`UR#RIk14R=7@kLgd z|Kpp7->Iq$W^ZYPvc*l^p{qn3O+BwAT57#WZymH^!DqTfa*k5 ziY{MY#Vkm2p9~fwy`(A)Jn&-k8L>x(T+kfa{veDjO`2vvp>LU8nq`sRhh7Q?inxq% zhhmGGX$ayb94|$Gp`lBiVNskrY5l#iJJXv42Qus{zSIy>_HTwQWwk=H!ti z=vG|sSNQky6MuLTcXjV646yZTmkzb~-P=;*9#SfE-eL!M=dERmznjHwS2$9_SYus) zY9iY3cW|&3W`)UR_F+d=U)^lbEDf}E4;w)hj;mQiS+VLB>Dq_K(`ji|{4-q0kA8%I zi-S`EnKJ{|740B4?QvXmFHSupC~ig{GC*s~k*&Gf*F}@~sP=%5q!T2MpPX_~wE_JT z-yk){2>T;P{w{o@zem*fZ`fseE?_@UDsr_%!qH#;D`!JEMX6mKC z`R~LY+r>a3C>dw^guIxTc32Zks$Ga(y@|$|>l{Iib-v0Dd=ZaB`NWinUSfl6RJ8>~ zMI4hwxoqp>5_&t;DHpZ!Y{?=e-_wCkQ+Jo1lB>_+l~-LgpAZ5ahaX!v?hIKzrA|UM z3}m=NPBg8X+$ez@E&E#&Mzm=ASZQ$!dp$`jd=ZOThHw;{J4LR=gQ6-Ss##|Sk#8s% z2Phf_5jtcClWVNUC|??Ag0_&8*cxeUV$^l>61ET( zG76DiL^?{*S4KhIZW6G6s!*xOq@kdKa5~+H0g*N28Emr(6xl3eop+_0A>yoofGC3) zy~tz^+cOUU%y7r0KMWB4z%oC>Vwb#WGhLbx3ZAoD=)R^5Qy*VP5=+iceyhG-NQhf( z4;S{Mj~eDL$3yVd3*gaU<(O0QRGG=Y9LJ>>@>mUvc^&en5@k5+xBL%njVBA0Sd_UlaV;uxaIH@ zXK%hk-?e}@k9o3`wuteMGP?u_u5n<$jvfxYXl!GJHp9om`=srk6Hw6kMYXbHZDwX< zw&}>U&~d`>xz($ytT0CGJS?KrFn9M;Yp$3uGO>F18GlN;{@okuf%v_{mIUB+y!{6t zd)>l};wqfG5-z_s5;PP99%&2NDcOlzLeDpAmR%j&a3SF~K_DOQG17@{5CUc*-x-m~ zPxRRKANwy}?83e@5M$VDKP=nHDW@Gq*puwX9hu!@OHI5uve>NHkK@E3TB)gyIT~hv#g>U+J#5@3bCw~P0esD zc{5HJ!#2GVtlStFPciz0op0k0ZFejhsPZb(k%aYkzo*7qY$_)R;Z~s%^nG3Rq}grf zGz;sd0ZPf=erR}yeNKIc_B!$$2DG*&x_Mc2J*MPs%MJu=!-{?SCOxLx2f?1CE)prx z+E(Ez+heCbs|ePY%f7*sz!?E=@T!4KFbkHmc2J`)<_O_epn)c4 zDoL+4qZZwCVKmrxCxm zA>IW@k-UnTfJ_nI#T_Mxc+mdEoQpWToS4Y{mEZ#GczMm@Ll!oX{7@Y*>$BN$`Axf_ zy_U)aH-o@pOi5bPL&%yFYo0RSP@kv#B2&^ju||^4Hxww{_#d#tr&F05$*$Hh^l*1C-sfCHFAN*dG!3kP z$l99o+Sy?(#J&!3`faRE`*HZ?q{o85pV`F`qR*Dk!}HXOdkarvp&$NV`&e?GSu}jSZFWGy+K71|Cz<*6BJd_b(CJ8+QrL51 z61S0&5x2pjKyHnr@^PvrlVHGRe|yUO#K6RTrm(WH_Ssu`OIp6KNx9tch~F8F6@l4_ zNZMJ`HNDm%L8t#xi(1R}x{`w$&FGHxzHO5eoYtffZz% zU)FfwiN`_9*0o~@iQTTYjZCWo99uMEn!n}4sJu!~-3PUf!bd~YKFVEkwS>(N7NX@f z?79)YI8RVXuR-hxJD*j?-i^SBf`!>i?st%z;%vxgak7SK>M2uoms}}b(pJ?1? z&)1^<$R^mh3{Cx&0X*0G*VP4O7Z~aYM_xq z%b}Q_Ke^&LxS3y| zGDj<>#PdKH>#p8P#g^w%4H9ttVQy!>^l?TWK99>3)9w3(?)&5U9%S5q(gjhb+d+9M z6Txm}FA*_XT)nd!8Pq@1x4zLbygYTa>UgRCtZs;uve|3%r@CtqQj?;m?-_`r%vkia2eQ6HG7kMDH=lIG9*V)^OGd|9jh?1J0WDKm@ovxbT(TsN%1%iqnfz&MiURh zJTMdNGMEml0iBiZ(7)t7|5z!-vgY|48Mi`zX?|WoYk!|361F!4+9T%y+q{?dwcx!F zLg#bTzeVFh8B;O43mR66FN|K_O|Nyeu%bB5K8lcs^?n@0!T1}fDz*_fOQ#*UVx2Y)O2 zH#h_-#vg8rdkn>7eQR*`8*=j7VdJeBh0g_H@CDrh;J`!y3oZmF$hw0!oXm1HUrizL zW2W|-e9cHEMdZT=)}&)mFi%zR#{^zPeP$I_@@mHLWjrLe=aXAGuK>q~EerSc|U6uq(rM zcZP>kauXZ^*|fFUY@jsk3WI@X65#+<=aeDEueS{%@Z;iyGC8yx%F&Dh8w@HE2K3!y zKr_F6J^57`a*1`Z^EW-2T`QCd#;jQT-S>HxxFd9SleKT<@gop&Mp(*T_hB4KNn;ZVW8~Ox$eO8j&JKVfu&s2n;$@SF|lBPP$HXG1M0H zLR`fDlK=!fpMXfBywf1z&Tk7hYYNpS*2wyZn_#yT8}Iu-ekkZjib`^)*J_@H^ue|> zS_55yL+UGuUV7%>o!bGYh=4pr@c%>BH%C|2v|q;Vj=XntUWPG~Uc1qw`_;{|!TNTC^j#9(fvOW1P!B6zezMr6? zJ6h>VFoAiv@Ek;Dw~ZTM9*v>5!ywWLxdY__1>2;ze)&hid>-pbv<8oziwB@U8EBESgPvS5VM7h-|f zA>&5*Az_ZV@+30^Z>U)V10y5&q76q@C{a#OA0mO~J)sB4p*a4bez74MoP93Nw4?@7 zrb3V}82eEhUAi!}%W7r~*gAzGF^HLO`yMG#69rEsu!D4ifgT+={G)%s&i19Z8jGX| zL)5p8047shB5l2_8aN{pqtQu_KVJMZ7K1ItX@fD_p|2g}d6v4gB6CBWy|Hy#&m z1CY$q7Y|E2TVMOs z$s5!LNMeU3h;mLLK=^c3O%%4LwAycTq*fV;X6>}B`)S$H898zW-_My&Sk)inwrKkgCip@C>*r75K#Ztei>L02ERVx z3;bT7W<<}TL2Wi>7$>rAK(yvXU2aB%orfo`?YmMU{e6>S#)3_bHHZzfHh%AzwAGG= zS9g2^%<0iD8TbDG$Ww}r#|T`@`wE$1_8g_!k>ErVXzB%~&pp80q>V@Lz&_l1cE zw`~SaFpvHM`^wGGlhX=}YG$F>xxT#Jev(&T1t;(hd7h+8;CqGa-vBYT97YG2)N?8S z07(nW*?OiiB9|f77>*z4hs~V{38kY){7o7p*B&%}<1if%*mw&`!_sW4V0Qq_Tguf1Yrs!G$dGe7`F@puLyW+|FCcwXa>+t@~8#h1k zey4s5akDS4+SmxTKOc`j$W>2LC(i{Lf}?DA@13cwn`{cS^cGde+bHUoPeMAK-%Fv2)e^3AkRr%Qk1E zKolf`H=rp1SIoF!|?c`;Z$OL^q}N@=Hrc=W38;ZkCO)}uxA25 zD8dLE$DB7-GBnwWRUE@Tg*k3I5u`LrNw5zhw#8ZCeS9hGpmGV8yN*AeWwu~u%3#M0 zAhwb@d%Xj<6J~d8U(ew{w)8>^z$!@2?m@%5_*L`89&57o5c5935UbDnB`pR8{UV*E z5Iw74@>7!S6)0y^nfILZ)cYZfkyDS=S(}=3cM#nBXEMhCp%QWZy@Cceo3Cy$o-{r+ zK}nlr(r6N(K9#9m^hts##y?)(A4ZL#Ou!(h0Sqgx?<}yTBn}$6pbhKwuom;=3;#BQ zn3(*ToE6F}kweZEHnk4cX3v9U;7=1aL&rZ^K9WjOzvq*KKM`W#ivzmGvV?N- z57BD?33pEcJRpq_)mn0cBNKA1^M}bAeEsO@lVP{Rx2ib)2;=r6oSZ+)os(fjly77^ zI&KyB?xE!4*6&TeVEG7|CJB0kFo$JJ#Nh*BCjE==+kvOvdPIHerF``zC}Y!`!^wuU zz$OTY&|d@qqCethg`vh|_}gC}F~mq3BdTVI%#fKu%?~)xNWa=>49W-vFoOma6bGnW zzX`rfvFSYelj*upQ8n373Hj@4V?(S-*Y(WHvcqS?`)bAXYE|Xoqf7qFS9Zf*Ru>%t zm%i6baOO@v+aCKRO~`2RXA;x9_A08#2!Bc173bIsTW2PdPWJ98+Nf$!9#vXX)f8@_ z+Q(+q?&%5MjO=7y7nI7VhT7Z}Eub>?<~Kyap0$S*=u?G^O*O~+tK}E5?>+wJEa#x6 zMJOJk!i6D>5VD2rrad*^M+k>px4+yZ=ySjs1W4y@u&YknppLkVi~5eGRSi1(wlp!o>6sfRRAeo;i0 zZWs5BY*Kev_piSD8G%>E3(E>qQ;sb=G%TXI3L-Tk>H-Gh(oF*~JXU$SKSN|Rcuv8* znBe;b;`@nMu7#;roo6~|FO1l@ zx>MDPG^B4YefR0}j~T|TJoDkcOPgO*+={CEw zSZj7|sy8Z@!W&YQVX@qriB4$ZHM&sld!V2)S}@CMPMtQpC)y-07_RK!Sr&gJ7cq6T z^uu|5FT{9_^SX>9VI~W{an3H2kM=51u{`1+&Qi+bP%Phish2DSfQ?*Hk3gh$I2ODo z^n!~l9t0fUh0A@o3f531@{Cg)r8YE`Y}j7s8MmeFI}bc8$HF6>VA%0+CMO20YrVS+AV_DD?kE^%ohd;E2hFPYDGLuZxx%B_V51%V+kfr?h0v%YuHY(H=D=jQFjUY$4x3cOa8TG*XhytH|EZ{of z%DjYcSLE?0&=MzFTk(%e5&^CPMbj+#DL44dlY9ngii`+(F*;1bm?<}`OtdJ_l}PSg z`-4BpU4UKfjR03)Fe}KX&h@T4ioEv4xF;fm@O>NZy<=aY;z0*HG-IMKEX51+R9K!` z;ig9Ou)SrD2iEcmdl+kk$oKP)Tiz{S(Y^ZRU<*|Ya`5hOp@{}(<(4t+G@STVS}L;6 zykqm%HRK3BcYIh$4wJ#2WXc%^^m!dow55!dakE>&< zh6OjG2Hd8uE>D%g%1ywg=kE!&Pef|uGi4Ioxl#%Wmum=H>b}`0AC`<_bhBE z@60~eM?U+lFNww1PHmS>KL0HK<#Su(dS>-3Hv2=ZkMHooSc=3e&ncDR!?HcAunC&T z-2A@G;Px<4)n}oq^{X_(&5G5)l$VboqH7id%ZMiZ@dty4_jSMm{gL zp~h7eG}70_+ZKWx#G~cdlP!-rYRLUjmzuoE_kH3nvKs>h?3`YMI50OMCF3wqWcv(O z%}Sx9D-J9bchy~j%+ow!@xh-l%pDLQ;bCK|B611(*Y77>TGTF@RrsRe*sA*H=p8+F z-spE(2)RqFBB)^|)A14|Ag;Qbqe!QVN_Gy(_9!{n@go;#YNLftIn4e^TsQ;?wSE*= zSR{Rf^~=_cEA^&|@8W}+gFJTi8<&`3YbZ~dh3vlZq=-@$HKL>JL{FCAxlpA{UTLQ> z%=uf8LZdX{;Hy$A{bR6fL3dSW5u~^3j=o3T&TKbJ>1qFXZp1^RM5D1&q#jzf)`V~) z@PcrsU-E$TKqP+ z)TGIG`vbF}vswZu9>Ge9p;BsOWiHgN`zxO`*Un4p%B7SlzWUnn!$ZzdCau+$QAb@j zNWLds-8U598@U6Cx96*m){gor_Y=O_vy>|Kn+&Q6bse0aY0`gk238*-%BjnxXK|>V zEw>a|!O3HAcH27lG~FK~v*tef1^g(nljdVYD6ej@4hAB@RKgS5wbsar2WlisD7mWK z(o3aJlnJyxacH2nnX*C4sR=S-6UEW}aTU(Y37{#KmJr2~sl~y8%(6+SOGUY&YH<@H zH81uI;TlWBL1HBX7AXigyg|O6?G;IZ#fIpXcwQ^JYLFM;EQ6aeTQxd0jyZ}8$iTzr zrQR;6EM5KbuyZ z4anD8+FB{t+UEV$a;E&Ss`2*fhaSEI>jT~_B~B7c84;Wk8O{SGOz5^Y`GBI0H`B=@ zp(a+xR=BvKY4A&gM-<9y{`kRynjk|d5~87uG;neiHQd-ZOm6r}M7se4Vgb1*TuqL^ zd{9FgkT`U`&ogQ*DKx3HoIWjt8X_Ewq9TC;9v8Fx+#M=G7JMdR&ZHhmM5^_ObU#a! z1w}(kqvyfnK+7q0v1X&b7*xx!<;ypay&-b9&DpUD6c2;DMCxyIB?0pr;<(BK`k)lp zs1Vdjq#&#S-GVq@J&fWms=qSV&%`rmNwYf&_H!*`YxK&Sm6#g~${tb`zF}fq*(8QC>J*1PgotMWF{U4dbO|_^niNf> z33uM|D*vwOLcDAxN#?oY0Sp;SVac!z3`l;whyDg(GS`_Vi$GA*a&g>zSNvOSoK0hU zY4wNj>s(QUlyRR6kT?Aw(GDqK?lTJ3a{xv>bDbZd1igk7;Z$2~fR2X#thkm>^#RaU zo!e2<&If|L?n;o)KGtJfu z=HFIEKqoe>(dg#r?aAtspik>lMy|U-g{w5T#8fwkyvM_Po<9586X&6Sm$ckDy{@DK zzXo-mf4pT>d4n#<%Hoho-y)S}%JmhCH71*8?~3{Eig9?|Ls2R0C;m}mCDg5Ja0xEV z4`pm?i40Kg5<6sDrYdgYFmZSSeQwLZjgKINGlT>wD6S%pS5Q(sK=z7H`LRmeQ!y$2 zj$v_NButLZR?12q6fHM}Ff!5OGBuRvv@At&;AsKvMyzW1d%nfR8w69LjIipP408Vg z=wQnAc|`23dd6XQDe$&|z$+S_$tsxoQA9%^D{nvE{4)rbz-BQVUl``2^X_`_X~ydu zgcW|+aEjx)bAFD?V)n(gGvV{J_AE`@`r=g_3`{)8>MlWht2zfH1#{Ryf#VK}oN_bU zE9zB_SFpZj;}uHBoFZXb;`y|<)@KYP(Du`y@i)ql3Y@wpXXicj`{*{vCqn^TgA^!a zA)ytDh!`2a#K+?<*20REa7NobIMZ+`gi3sRM0I`}x7X0i;t_QO(w>|re1OHOp1JH_ zK>PE`b=p+ANsdMZT+!4H-Y7=du8t@6Owop z`N|@e)Cj-P`|1#RO@YivcjQe~48_(B@3?L@>EsV*ZRZEn+R`Dn4h&mD{hLMXYG;29 z^`M^_KDMfRmzQDh{UGY`by}fx8O?v0@<_;5==2zJN+r!%2E~6V?~i_jt=^r`;^(>R zv`Jd(8EQG&lgv&yXn|jTj3L~5Z#{lQExDYKUl8O_IwTd3SoP>R$8UK(t(o2mL2~0} zJ*H%vU;ADZ>sWq`(SKqIkgc4l)V90aCjD{=K;wGM!**Mk`k*nC;Q0%OVT>HXY3#1A z4ll-tNM4^Zg_Bew$->Chj5ossza^n(nuxojrbJ=Q_Y@`dOv7IBEV>^mgB z|JE1Kyl2J09TYN)p2szj*e5U*szQ=4en5B+8|%qr4$C zc#-*tyuBcE6t&yB6pBk;soKsnS$2X_O>>H*qNyU{jZd+QG$0Q59B?ymyaH0zsb!8D z;g4FbFuo_*ii$KeDep6^@qPFGmi^;GRDQzQEn}ff94oRDpyHyodOslbv-lYCxj&Np z3I!CRTsW9?469Wye7(_dqTt9|KQSKlnex5HvgJF!@Lm@kE!mTlFs*+T0=oC*#lK#r z44T#nb&i#aFl+c|`|8t7SwyTTn?&I%$5ljj3f(@yd~27~D1iN#F(WGMt3qid3%=~G z$4!}9F6_=8KojGB8wRlF&^W$w?yN&j-s0-sUHnnwlx?K$(2BLnHL44NURw#HYJ6Yn z@*0x%InFuioBMcW`tj-enzppU)_M5juk7ihg_QPEMplVs9rjgwF#dZfevf8&wa(sb zckV642EItwxOga|yMkj$8f#VbZpc7Ij>l3cv=}bSm0Yi8qN3Gy@SMndjg;FON0!rq z57J+rGg70A7~-*R$v`=YwC8)#ACL1$1K)Bn2=d=8(iw%~4&M{@mNb_@{B&9GZB@q(%+7LcM z_(0dPN)?m!%T3ksEF(I}P7#K`Mp6)mF|AXyc+|fAY)TIOBki`_^Jd(ztlei#8F+{& zV5Madv@G9>q4sUBGF6MjG@fM9wB9@~9Y+<@BM6}66<6ic8^GXwAJ7$ekDAZ=($@Cy zfjRQD`bYief-@stV?QHq@V5qLbs%yr5foSn$ou#hySv;`kq$=LvTkws6JHn;)4KiP zC@p2>(%mjgY*wz2vw3Ch-=Zs1Qj{bbN~isC7=I(_bbnmEVQhU>Zbj<4WM25sQh8*_ zWyM1O@@W60-{eljPdBGI#J^;ZTwvsP1lW0-Oyhu!3v}avX=OJ&nRPnDgRF{~!-L>W z(0J_nn3939LITUJN4{dutaBqXOo5Fv0WX=}@I=^V2KsS8xuMMMOWaXA0je?A?sr=+Hvgc9IwKgZ~vVenQ@9&eTxwi_`Baox>W2drz3y?5;)eQmK)sH9vpo$)Hvk7$lm zh_O)__SwJce!}JYOVLI9%xGaa{x~#Q>vYib2#LNbMO$otp=>Stsbq<@lU8*`391`O zsc;@4B(0Ep7B`#UcXO8;3GMD>GjfuBqcw6&} zaAmY7>rU39#Oq))aypevG#?~-y7E$<5#@I+T6vPmjYH2R{kthzW6*n1mLgC_I)A8} zGZ*pR_qQN)$6k4=fbaq{iJ+_k%YLK46H(r%j%t=)$t`0i=@#(|g5{2hbqP1q0^_kf zqcRbp*CkO8C_1z#GR{K|l1tNI=8=nK;lyW-w|AIBu})a&8ImqL@M!u)VQSA9ALNJn zRKY31TSO2n&GdZdu?6#UVF?Ts6+YQ20J>!XSRg5cH+Uz7UmvlWV=SlHZ_q{P;Z&AINT(AI^ujgTciF81tk zz^nK-%Ui$Lc_sf`nM;R95>THIe~iuFF^ zDSUm6%XYU{^=hAhx}#i0krn`CEetfsn3q!qv2}+dWa6KuxMvf!()t8KokHi-j-x+U z9kZ$k6~(PTgoMT!--VRE9wQ;CooAREiV6%W^V->V0zIZ`P9T~33@L@Z&T>bDy>n$W z4O@!Ap^v5QalTpI+spRObK7@8P<-~P&4;c)wgNcV81_U8U{^REibc`p2 z{!8n*!c^W37er8fr#s3_`FRikeOFNp1sO4`>gF8UD6j-}_WYvJAhYEL?}ep5hEfS` zTlN=Y{SafoN{a;`$LTg924QnbGO`S|Z){%*pr@cmxqDg`EdnO7uQ&S{9$K!UeUrh$jZ` z>qAT7+9G+-y6#0v(AQ-V>$h}uA`2RNA$WUpDW{GWqQ_QQ{10;&9dIFqYkwcW2GjQ_ zY;$Ux7eB?HuGGVNh%hB*!?&By)8|ZRu+iU%BOhJFH^T^$3*bQVo}Q+j%Uu$6o$2Il z^iIt6hqE=MCeug-a-!^JYB{9=5vM^HUXx&qntJl8x8=>{9<-2@8x{8|x8ftyz?)xM zO@UdxqHQS!5xHweE+-sb@_iBTJ%aM}J}%ILjQnm)g)vB~T9$ET^gndHdJRl_pZ2$L z$p%6H-f!a5L$N!aA$~4&z4}5S+dnrbC8tRHO{+Nf229I2aLU+!4TWw8X|j zpj(ra{|fWheuekdEDr$BL=Tm46-b(PIEUL*9wUhVGG-&kNtR9Td5w^sUF>*ty5_H? z!q$|&!$Gu6?e1TMcABK$6@8PGboh1oZm+Dgf&f#@te zS~tljf%CEl!t=Mddvhr%uX!Bt6P7YRDFfO%6(*#-Cg3bKQ%&`Pk+wt`jyW;Te~7NLpj0A(GTV z_uQlUb@si+G(wDD6%wW>+Lu53t;Y?43hB4EMjG*>D1liklz6c)O=(bLDWnS4`Xc zgybDmyEqmvdX`z4Rl+FXXILtW&$T)gXTRW_YR2qIwB!urk=aenPy}Y19+zt>qc1U>^q2OHU~!1oad9jpu`M0?~xT89HHF@%f%mHOyvtc4NSplfjRq#|ubsDQZmJ~5|+^>61tg3O`sXnfH zemVgKZ6-J()r|3U80;6>ol6fBkfPC87%n`eOmC>GUCt~ZrUiNGz(!oE-x7YR`@*{n zBp?r{h4CeCGyXutXGH^ATe@4OT7_@{;wah}QYYt=n!~p2qt!x(3_l4A%W6geBaYhb z5j>uVTo>Ly!w$0;owk%hsU$Fr3rJweJ4?Ls`w z`lvCq`kV!g4Q5p305VKDXPBIcTzpLm14UZzaZd4Wt&Cv0oqz zTaElmawIBeu>FcGon045hs$PjJwTuH(@<4z z5k%|VZ(a5*x-!1o)CbMNSp0G=HV}w7wZMTYUr`MF@M~oB^JkC&A2h5OhExpu*6Tm+i^4@{L|J5pTbV*cFYRtxO5QP1kWtKuOCPhx5Ec}29}Xq9d{%LP!r@(C>ErQ zh|taoY%VO5Q*=_`LP6~jMqxMU+qr|a;C!5jvz15mp9MaqRfyhqeO@V5fMFO)L>&Ly=1yhsqLTm)Y4`mhA`>?ALi1sH_23M?n(6NvR7U- zaoX!TZd%!&9?<6lQDOCI$d9wW&GXr6`=6gz z!d@>O!H($L4mrG}Dyh8I6l4>kR2v{cyv`KoZnJri0}_g+Vw_x6x61w;MCvzT)BqlG z(6$QXr#hlfLsX*7ySjQ|hbgq@`Di2q?ovuFd1IS8&ak|+A9sN&EkJ7D=9*)mC#(#2!Ce_y=G?Wn+Efu}6(WI^gV!uA4)vK5pVlM=dV$f76y4)OoaFp}Tz z4|j5w{1V#hES?~XMBIy1Wna~FC?p|%YH01>jnwI;W9f^zxQY0C^1=wK(|`Fw`}y$n z4vY6(-X;+>rTBASU=F?(BA8GGT=!{XtDm~-gxVA*N*&_%HHd{JMkuOO8|Fi{4^&rrCE2RGXI2&j zoFa2ayOjMEYMye8+~|rUFz7{mjN>w>l-CjFIlod8WevVT0S<|5!QTDAu_JF}!Isbf z;p{Ie>@?w@omQrctuhxLzd9cRe0<1CtV0^RuZH&bDZmgqK*9}~MWB{8=MmuidInYQ~<#lD_n zO$1vvWkC~L2>dMSNhy+4t@nHOTCT z!bj+JD6^axI#T$eE*GoPmskfGIhJjpU(b;S@7PX(*MD9Qd2FVt5)y@mWmEl52z6tZq%gr(ob{4sbcb!T%^;f6nvOt3cMa zuP~#1bUK1odvXzniS3Mo2@X%R#>;@Qlr*4Sf4>-8tP%#2g3@~|(W}Ch%8ks7C+}9v z?$?L_h`RKizCwL&e=vxr-dhZfu9)Nw-$0k=aEDxvTMErF$6N_a`b7dMl^cULy9J-- zmd{-|^h);PP>c!^z3^avyN<|R8&6Rf8(>M7n8)7<-FRpxGNY>P@`lwsZ|Ma^T3Pa%Yh~-*TOKYep#RvU zDiS#nGZ#eX12wkTcZU}Q&d4s089_xNHInbQA(vGYl*u zX&uCR_dcwJ|CwCO1(j2*KQEm|XKeVGOx!o~tDfcYSX*QDw{e-UcQd_FEMy8`iN=*}_o_IWg zR8OQ^+%3cOXD-vz4USNL=mU$(b}l+7#%jgJ{CAOqy3qLjds(EJOCZMh13$_sfVHdvDc(IM_L^Ej^+V>oeN>24_`%lbiyt=Z&K?m&bByuRz+*+gRLt#O3^UNrPp&VaU?|2wJWPS>?*37=NzW81sh+gy?D!5Fw%G~Ky;(4nuA1h z=Psmkol?9P0)FEiV{P*(V#``c>M)3%C<7B}Mt`_MRJ|8VLBW9+-TE7H6Qub$3=Yn* zR%|;H`#maxIjFfV#QLSrTaFYyQth0>@PwILb88kU*CGN;%fS&@>E-jZcWQ}l#eTxN zaDJWA*~iB`q#O{;Pssj|Q|1(rp&61MoOcgNX)rCbK#6}W9Zkq9hPLI3;cOH>kpZ8r zXRvNe<@;+ch|n-U#Md5%MP^euhF1!Tm~fm5gx#i$piPJoU2LeBj1ez_#-Fw@4}DxK zAVt=#gd!78ZeaQI&ly+ho9im1xLL7CPu)n^`jO>%E^r5zttoYgj#!j(`K&*Uf^d|F z(B$WXSmvE-11X$=(>I2$(?0srF!ufu$~UgN<%(drrwxV9fb4j&xy)sc!aXPC2i&Xw< z`TI1QdBMt-rc{e?ad6T|H0u+vAS<0bGEZchG!%S|tPOt7==gea9zAC;riJKOs`}e$B2(IKxlte_fQjbCRY{XHZ`O4Y-?QQ7Bj4w| z1b(Q(R80&0BSgiORlU#WadGDUg6;bP2UIf}nAgVEi-qN)64_qVIu?Y~cOG`7-kS9g zmHx%5^F8tlULbLf8S~@7ICNMB(zyc<0wo_&0FVc|b4Z7?#ih?J6L z-XwSq*Z$kic37AVIqa?dA=9@f!}lu_rQZzq=jIA2Jh5tmO&#(S$7H$ASLFBJmlo=| zt8?EH7izdJVsOdo0QZF8tY-fE#5j6y=&JW#^niT?VVrNI;UWez2m}Ie1qC^R+qD!Q zRTLhK;vg3cF(M)v3O2kt99=J|Q2w_t%Hg6?ZQImN11L{pU_yaBoVS8FQxx*Vc4QWU z?!DJ+mN3pmT962C{D_GrI*Iwnt8RNNxC9^T>~kvP`6`&nvLD`sSm7r1&zxCl(g*pP z4^F#z^*XqcvT=VPdL)jPgjau-@dIf669pF(+T?|(j3^6?TBk#Xoe`l)LTPMpqdD^} z;R1WfT6BZjm*%(M9SRoVCad$0rEnm^{DXhi{O;O<_67?r3X3eQf?XV&aKYYmz54tE zfYi$c)D08-6c>j>=@dRkuaHb&62&7W-rf-6%~*@$k8c_c?V3a9d8AeHz?WSl^dlom z*yFv`wO`g!q<3`!^~4O#kFYFhI8f96-n_>N?By;|u{VWxFy}cK2Z%LlSRz%HMg|!0 zA=}l>` zoy19^;i}5bQ)h(K(m=g^P|Dj+WF~-L0wH=xS9-o5UVR{JUUT^hubO!Tf~QDmoj*0V zE?g31Jp^dJjBGsz|L3_eMBUZ%ck2nDt|5RiEw##)=A>ASVXpJK%jLduv_2xZi_`)( zt8g_>v1ZAcUOKm>`lk33b7PRN5<0_!M9R1fesLb9F_%8ZwJzs#nd4nTjI;AdLBcS~ zGDpG6o%93U7i;Ipmor0QA^<1?4VhA_)b*FhsDb{-=9@m!$#7+zIkM7ByyWq^vB^95 zh&X#SNk-46*5=mpK3|*iX@MgLJ{Jo9AkR!vVY4r?Gbw3B;rKMF#0$zos=;>r9}QCW z_ON((+X6m;P5n1A(g&Fn!&FYsmHWadW^nLd60P@2Z8+ORtFT-puv`qk@4NQ9qLsRo z6$P1a5B#RMmZklGfclpWp@dw~-up-P~Q$A?HK4t})XeINe!n8Hv%2iJMN=j^Wy zKjXT|k9ib?TdaCpK^6gm{xbFqlY0D63{&7B+5fbfEvFQ(k-g=+^yYqs-xXR}PZlOP zY7k&yk@qQh2GQnm_ml6gXla~P!eqTSTN>XL^oB?Gh4wKwmYZK)J+BAAa%$FI?)}>% zJ;i4dw|)1HFGC)yZ!iy-mW50rxM68sdn=Y^H7}3CGOzh6?^ASk9RxHTT9T~L&##pT z`G>Vcyp4+86!^J^*xo8ZPJ68=#$yh8Et)z+wkzZaI#0H}9O5WuGTK~HDm%%9t2)*a ziti&~UcEnaaIjl?dPfYIY#yS_?O^k2x)cu#)G{Q9ws)isf0|5nCs6{~^hU(_CrfjB zd@6=!!;}SRcZ)WL%3LB-r~RaiRO=e*JpRhL)YLaSshj2I*I$8OK(D)y^gmw< zo9dL^QU&~|IEf@|<7@GhXdvNi`GCbBTX#{`iE={@De^Cr&ES863dEq6XFpa@u50fW|lq zQjEN-AB!420U|@yTJ7H4sQEllvyan@ggB7>iBgTzgIio(Q!nCT1XB3I4y9FnOv-b6 zA+x)%aPmf9J9&dRa%)w*?Yi}%v-vssRLeps0pXoQtCf}rALsP?!gga=m2C?0SX>PX z{B@7-mEUn6Unjm)btZTrS*$K2JVM=dEaLSd#h1d5G%Sb{e{U9Hq2ZI>V{yQxZI>uF zt(aZhQ^lf#nc#DeGa?EJ6(^yVWVBo05c$WlQpX-LQI$JZpE7e1ccVpADa65o&e&a% z$>&KM4h)PLQ|5dG@vXRC0z?2D3z0KEg!`wI_ZR2G03##xFX#FvEDoKL(!#ZuWq|h? zqv~6dI9<~H9c5Hx0Yghh{-zNNP2@fvIC}j>+6Qn$ah4$I>0gfPxS|kC3h^SO*GI=fSfRkS2weu7V9g31#KZ}? z&fDuBcuTJl^M3yI{$GL;H}ZAUp#ViWm#|8W7* z#r6LnZU6mcr)Tpx;=S{K18v`6;Wu^5;q4T(t?mD-XJ=r0+wZ)dLjnuy4*UBSZyjR;}HmNHJyU=dM4hoGJ9cmE@d1n zn&}Lq`4sv@62ZDx3UR=`s!`klg`T?M8HCaTf+exj%pe}KoZq)Bd5)C}4_N;sk%iDV zNGN|xc99syuhR^2c;(hgdhu+h>TfOOX+i_h37{FXJfhQV(=xWla`S}wN(9oaHt)pL zlgPl@RxL&&ix-R>g4ySy9>i;i^)wz^h@1GEhdROA74Y7cfB4t3tjysH&lzwEo-BYz zj0Jxq(zQPuL(st3@jqMuWIiF`X`^;73>7KF$lD-y1*kb;VQa~&HaYlH;pkN>PsquN z-T=}nGGW0Yl8u<;>D$q)%yk}KYOrLFz7+}7WJ@oYVb2J{>^H}q@j}hL} zBuu4qLBG}$1{$a<{uuhQD%|=VqO2@q%(b<(^Yin#qEg~$hw~T>c9zw`>51OBrjEM~ zoX!`HeRl~n7z16UQa^=!jCo}8;?9iZm<}g_l8e&iTFS56Bj0E9A^PijFksQt1>rRL zWBDj3f3*ZnRfVPs#UK{R<9N++`vy%Y=de}rk;|5-rc7jy_&L^^MsM`%2fy(#i7ZDP zG*Bz09AOHH{`g)1Z7bN)Ox7tuP9OsUUl>ki<#VvGnUduJTC+Nju-z_{M=7W<6sh(( zM`l=77@@X0dB+oP9;fSkrFN7{Zx+R&%!2iX=x%l2XEq&cA?P8r-7c5lLi^K^{tadE zerYBie@3*jj2cGBNA6xGTc~QdZKwI@{NX?z__|HZf{fuT&WG)mXne7-`$Vun-;VNq z!Ycjt3k<2OEIiBz_-|VNE8eg@Y!!2Ymr94pz42eqtu%@Wo6M(pe8fJI2n4Uy@+Mi_vJY=Yx z)5Dq^nxdQ3ll^0)AVQ z0$1JMwb5`eu;Ks3*;h8j)iu#F!{F}j?(Q}OcMa|?!QF=d!3pl}5Zr@11h?S9o!}bu z^1Qe1AGn{UPF0^%Q?+aF-D~yg)i=?IT0{}#RwHcqq7T%*4B3c1@bKt0f9XFV;J3xy zYr+BI&Z>s0a51P0Xj92G%!#CMhP|zoG1lEPg>AnV@2HEjkyk7DVs?Ej-205oRRhLn z-U68p`JKU5jcwlKU5=aPT*rR2aMwRsf5kar1y>vaP?Q`UGH7iVw+7gY9No6Xmx$Xz zDzZwEA}+~qTuyMad+-vjvzZR{I+VKR6`s-{vAfOmV)G~6fqfYMOqJs@eU>?IAW#{# zB4pTMAr}I*uR$O&Ls2*1d^@-jt>I#Fyjs41f9PE5s?BnMbm^4MPq>?TkUPGh?RjY@ zWzO7fA-Z~xrnc>d9PiiD1P8U(Ey-M!)?}ZT3=Quj`ppn!lwR)ZWqmND#zGrinIW(U z{=|;ap(~f8{Zx2>v-oOtvqyoFK}rp;JcYDtEpEUrZ&*`VLlW4^+mUL2x>_Z!4Qu+I zN!Hal)bsD(QiD0=9Cz7;zCTTUx5_@0m&uN#YaWum|ygl zI2cQj>tj?^<4NWOUnn2T?w>kE+y!b9AhTa4uku*>WQ;tx*E4Q|?Zc%5vOuaI*w=rf zyv-t`flkg);zOHn{~nMmcCl5G>K+TlBZq{9J7M2I-`}$j+rQ>$p*^az3LbQfI+lsU zdv{(Q>1dF7!z{%{p=8w9Mna=^L*j%A9~~PH^G+qqu8G979IWNEs_M!CF*CQ3`hWZok|HS>dyf=pIjA+OxVK2Ou~sS?X7Fpb}b#5 z)^!fRV0aW4HoH3uyvqZ5)AU)MN>bEDHQkntVhv*&g7Yc3vo;ylKy)WTi4)a9%O1^8 z8&n8p)K&TgRc&4DWtguGLT?swDH7K1Ot|f_0A?rd$)n9DpTBq9>Sn#3x%L_TlHSOI zaQB3?zIFd#5WD`UAVnPstKhg~QBpZ!)BfGH)(=HO+M~2%qRaQj#h)neoyBtt41H|B_G}IS?+5$Mrneq9R-!HV~8q>hgZ#% zPxuiDehd6Cit%#E*`e~nifsEZP!`lYr#`)Lfg-OA^4n21`g^0z+&( z-T47FV0tW#5y8Z?s(HlKe1okIMy4zk&5=JvDr5eUUzAV#e4@OW>DQHfF2B zq<*Zi?DUMyUH;O{qcUQsFrOdrF`+oxiAxgH;350@rVo@Z=gkQ{=FEHK(rV zZc}6BV-i?+&c>~u()`=M2DB>&IuiJDO)2t>v{jRPFywsH!ZQLYar`E29ytWWtNh!! zk@|T{g4z;fB(#FAZkA+8fjJnB(fwfwfp0F~l!SGD*|_u-V$aQ0x{`FR*dKt`^0=M% zk4D`IGO^!nJv!WB!CBP>^E8JwqcA!c9$`|*q3oMe62bTKd+npNSpfxfokowEOE0b{ zPNfUr0RkO$hGB6mWt3PjOIYX}Ncx9K;g?sT0jL$8*g5X~{PYCE4||%13Sh{gP=JeE z+LIw7%XhCd-{d^M$~0)|Pfm^b$rdR&jJFN)>`c40I@}sC667$b>&{&h`IJ4zbaYn^ z3=weqdZgQ`b^KZiEMGv!>n~qqEx&vHTVpV6Nl!+aEB%-gk@ay{oQ%QKkb|KLyi;+x^;(tVhq%`iE0xb*%q>4v@q`ygk8`bb0$CbXsI za^B_4#t=}6RByNQ^&{_9I!}Je9WS3mRv|RW_BeKcW5ud-9y#s-0I9J|LOulidTB?0 z#gb`ls0fcSm2?4sZ^Dtbj-pcjrvzV?YdE#iXgo0EQ((r8VuCC~P6i&(lQT5Foz8Ux z@tdtH)Q^`w@tvgXz_0#A00Pi9=iifE&%NP*HO0i}(#b}#0v_3q8Lf$k-ddt^GSqZm z+X{_rhY5bYKWk+&4`4M1;eLeT0}q-wo|A}LtxL9LW1IN484+XdU?l9 z(h%8^E#^?o4r*D#|473nX*590tIXxlEdx(HWeT2qB>SC4(PAQ(;Q-G+c7Fv3_NIhY60(d8>@C+XpsS$HTBp`y3b^lgSP@` zbXLz9*4CpK$?VD}A*&{Q$|LUI4jpD<_@spOtXP>iAoXD*otEeR3)vXe-k#7hfv}~5 zDEtxnSZ0YNAs)Owm}ezReV49V`MhW|b&j5;gBtAh#TCPXfVYkwpv_0t$2y|f(vJ-j zY?IcSPRBF(>UQfGl+<`Ke~9r;FLPqm&{=R#=*|X~!BEnw*I$&RQ}n>b2~Iv(DwFD8Rn#^;y{njbPQZV%F_I5}Ob zsu;C>;{Q0Nxp*O^jsGbndQo|liI0DTJ~Fn6@14OkK?nx-f7s%vB5lJGtxBwYwzIZG z(M@rSA-IX=`*WP#NT>6>jz^G@@?js)c15gq)>xt{dC+yZ;r6gHuzLF3-E5IPut=j5 zMUX=ZIMgzMV;8XJ={QeNb;R+w_cwIIT!!+cDoLXo1YjV9mb8@nenG#CL zvKfNko|y3AP}@TYbEho-e!kXqa4PC{MLC{|n{IH7Gap&bbwgJbIKz6@Q8BVa*b8$T zHR^<4Bl@?UQ+%cfNx@M6+Wks!N%nf-+=vj0%db<9AB$r^es%p54v={F579Q0A`^Ij zZJ53W7lHGG4aMwhi1`;rjZq^3xGyN|Za7i0pU{7ECT(gQGtXL_2!%20gpp^7g}<|@ z67THtL`4=PEG2J=_d8CrKW~rdRA?+qDG%ViO3G0n>76*xW&k#be)Ffocu)rl%C z^dBO{Yz{y=Uv{gFzvGlQSGKol>ypAO%M0FQj+wDg6BLH{kN&AMG{99`G}66^KBGXW z_3TfD5JYx>=Db#m{KOJ)X{ihMZW(bnD@Ael)yPf8)nN8wY?<2kzd$aD1F~!X%#@{oC#*;_( zpUQy3fu>2vPp8TO-odqQJAO}4`-O>`dUJuVufEWG$_6~mn6^{lkNYL6sx!j*ZJMJq zqJr!z)CO9LA_52)`P~RT>L-T<-{;r}`)S9p>$9v;0#x{ymN9AiLh0Z0)ik55j!-{r zlbp|Zm{*_6T98QKC&2<-R37$_qf)^dy~h;*{YUxm;sJ!MkiUZ+kO64D*y>volkU8M zVlpb<_r|+A6d~?iJ%NSCFK7NL*t#zc(bpBX1aWeHW^ursj!%3PNjH7Wd&!$=#JpNC z<*dV31mKky1#NtE;pD&pq&7mb1@Xt?Hgm`YL3zQ>BMp!FVrlp@N7;KnrBTJFuLeURWsr#)(UG2cUc94F%LaozdXQkw=tTk^tOdd5 zeLsi6B#Ui`Xn>zmBTXUi6%TSJ+aGzxX9wa&X-Nh^EKM@(p?Zftn@HN#-Ihq8Nu_je zg%1vb)q5rT^J3tQ{B^~!=3eAXe*Qfdh*5E%YCiJFRY3V{QOA}eaepE;0Uf;_I{~(d zRm(QT64?9m%a4o%6(>lKXHiX z*v$@LALv7?H7}OEgBug#_w|mL)hNFM9oy5H@^P`bFq8ZcTCG)iVRN0CIFfNgzs5li z4{z*!`u*PmgnrnAm(-S-nwcPY?6VGv$MVaoaoq4H=O`z!^4>?zu_!{nsjdG#aj8%nqA!cDSYOaCL-tBM;hJloo& zSgMNrW`+4HBV~BPau5sZb87l4Hb2A7DmQH7QMLOhLQOBpj@8>pnq94ExtaCfN zfL_l1RiG>GZpe2=A;q!3?yFPSBll-3StMNA7^tSwtofBVTL6U4CCI^DQT~`Se;>`qq9hctg zDok9Eg3lK5EhUog98dRobbPH7#zAUg;gdbkF&fR4cn%de1oG;~-4|Z`0JVKM}>~>bax^a!gx<#06*ZsUkH?OC?ai5Zl%Wc~dX37g;QKVCClb4cp zQODIK*_d}ah06sKit??zpT)g0Y8`86J{r3)t!6g`z<1k*7F_DFKg;d|TAUTAm~>Hz zuWOAVM6#N9$Ucf`L*E>1PlEC~XPwp`>gL(8dF9MxaR7Yx1vMKI6SrrnTGBj-b|jB> z%HdtzeJ5<)!Kx{adK|^|c*Kbk@xb!>cNpW_ z^$Ft{9z zETGFANLtn!_qc%yawp%4kl4T3ywBzWD7^9-tp`I&I_mDA1<_|#MM$tNkI#?6y&Q@o z|3#Wqn0_4ei|425klv${|56=NbHK+wFn3>6+x*`hOzctRfByXOZZO0WRuv8?h<=H` zTLumIKC3GeVE^B<^FsYxFoc!Pq@w=X2hZ!j)9X7&`G0Xa9t*9W|2@l)Fp zOP~RUW?PBS<SUA8cV53s=_@RIe!}bs6dPc z4kNYl*V<0DtDgMP(>amTXvphF)BLV?G^#yCUX-|CgkbO!LD*)~g4XI=H#0f6VGXi@ zn7Dr+ynzlti;_P|vxz%_mo)$>Eo#`x&9p&0OiAu|x+S%2YV1qE<`xO|^VylWxs5$*p8BAq1Gm39t)Wzda2y=PG zdcxG2Fy=`S22C?tW)z$$eoSzkB(ZhJ)vFit#}(~|C-zA}iP0tzfAPgd;rq5IdqJXp zsBM3{ZzcD2(VBh5Z??Q^`FL*aD_W&+SPpmFVx0Q|mkD*Re|vZrGHzA!l}J|QJvXRx zjKlt=YE_PAPMm#q8=_)%LQ+pVwp;6jntusp6l$n6vx*CM3!>Mlda}Gub9lob8fRuA z{R$^?`114DubkI!#734`rG^EcZs{&E%iK!jIi6>6iXZ4AZ1oO^lS@VA=ICA93AHqo zby$hTDh8Y|&=5^LKwcFAf$$epUGbFnUK7(_G)KRG3~DPtitQsX3HT~73 z(~I!iEMLzo1ac)x$!PWqKGC&>MadqfZz!U&DDV>x^q9W*bx&s?Hw(+pWnCx#1Q#{2 za+8|%(4Q;aztqr~3KZF51)IW-rQ)q&*~<`*x^G=u9VUPOmM}G8O^-wU{7E=Drc77L zzKDDzFm^@eVf%b)h7SG`Hi#Q1Qk7}-Uc~3-zRea{!Pb1!8WWZ0Bq_k6whPJvu(Cz> zesVDOafPWq7+(?y!Hr90NwXrMZ`G`S%WM$?XP{ur6PIKc%wbvR2W+Ki^y+v zHS=tyq6UC=jfKIK3(7q#b)5*h#hB~RkmL}D1ea1;WBWZrIawVk)k$(G$K2=A%k@Bt zcaEm3n%@PB#5m^s;py>ScbAIp|9$NIL;Fi%40vZPay-PIs~W zo;{{0oQF1%eSP!P9ZQDn&OTEq1gj{k8m+ce&vy737qt76J)MIB6b=QJynQq%Q`+AZ zxcO=+uJN1Ru(^?3Q5S~Y=-_0H0s!=>Ni?V%t8S=3!kc_)>4jOlwnzlTXe|WMBgttSuBALJ{{&y@ar_Rh&O# z#zp~0m=8x4@6KGvqMN&c5~<`o80;_$-)kvyb@+YVkiR+O{5f7dOiR#^#8ZJjToPf} z(S+%X&B!HjkN?6^XGZ2MVr#GYc&qb(QTw!eo>=zu?=#x(?_yuugv1H0Q8e02*gF;4 z=!}VG2Ac;M!Vqzf>)-^43j@0X0-_Kq$#AAy@`$${-z5|^;DEU&^F~htx$q#H-I+Al z&8K0ut=9LAT5_U2u&(dQ@~|CW9fA@QgpP$!waqHzt~+8)!QlUC0cLVt-Bb+*Q^Ia1 zzFwZIZ?O5Q7j^oeUCTdHD^sDMHf5I49+OLpV3#e%XRknM!9r}|7}!B%+0>xsb&D>a zb}zmgXklu51z2-~qRuy{Csc9p-$|C_8uStj_g*%kTg~G+oCghhb8_qwF&25#ZQkc2 zV?nqo;v2dB5BZ2-QodpR4<4xy3=Gi1uv1kdkyk?U8TlL+v+#0n-yrPq0X)LK=8|u$ zgl;?{qDWuwX=jhn8ogLIT9?obsfZl$v)@inii2_Se9yc34a{`<{d>Q$9AwIQbA$L~ z)llc#KgMVsS|iV=M!J8~fpKH@w^MncZFPW|A=S^hNL0P0N|FXx&Ow}TsC+a)s0%gm zfvlE;=d>ID0x6ZtAuLt`c@@gg@?M&}_lC6Z<}sT+i1i{vNAO& zmw8CxFr@0}jvOvv>y+utYYX2_zb)+=-K^PKsZGl-?Y#GC`QyeTyPWTOiv&ZWsbT9L zCyieO-?lg3Xo`J+$)BNt{5}S~F!I{q1V8yT)y+Qw#q0b6iA~};h>|pLm4|l)N@skV zHl_J34<^vtkQiyt)I9s`BjuE`*k6+0Ydm1kVUAog1L~~tYfS>d{mTS+?^fpU>DfL+ zdTN3b7k>x-PIQ^V?WW47$@1w zlFebNxQko>236a1Ke!n$Pl}WKbYDtBFR7;#w<;N_ZxP_ud@O47+mTL$ztH7Y-J6pcR1 zVj$TVj=CUUgx;anFKAw#SLGYkga+wGa+ zGx@0ULjwE#!n6qd)?tau9RBkHq6ew?l-(dHXt1v3-sPXHP}?g*C~=F|hnvN*Y`=#7 zC%t6=98KlxPrh{ahMeh13sfm*Od;w4;PDfb>!=^bOk8Sfu+rk%^RP3Vn^Qf5`d6wo zW>SH(pe)HgI>*L_`W+fzS#9h0V8S-VPhVpCwX#)ShN6-3K4?a{Xi2W%qy=m9?ztpvptLO{dqHy?4QAa{NcDhk@qS zW;#dx%&;%Pck5Ber+Gm6-syAlfLx@)?l~hb&H!_>`+P<&u@^Dga%K2wUX>ER+$fs^<7Mt}6X2mJF-9dVTjNMC3OIBol((v_|CSrJ`Q}zQGLC$SBuoTjpv#DpetG4lr zgh;SJQjiL>jc?oiva5RD9rGu{sDIC^7&^)8goma1hK_b%*Q2RMH@*tefjy(CKd+IZ z4&()_Q%haDzsO4U-atY5x4I0lQYI6yd%sF~SDJf3P0)eWpcdn@ zr|%?Ly8pR695B^CDkvaL?Bka2H`8SDzuDKms$SaYjhFLJfo=$FOyE*pm>d2eKRQRe7RHRBnEu!R` z4nyNJcDCv97|a~`A81vz&!2h%Dz+&(PJZQ?Y{_q%80$&A?m#he$ufpzFAhrqhAQKu zHad*g8^k)-vd@LHwog|@AtY;EWcwkyB=ag9r@FU+_a5Y*d*$Ooez9^st-#60 zaPfgH?I#Rl6(#B6AN{{pg(bkMeTZoP489kYn*wpk^D7yV-~4M|S%1d4u*}hzFfC6! zDJf^`!tsVf_zzC9if&EE{aSVrcGS&zj-T(`45my&Z~p-%(%6OLB^%^E>OgT=)SRC@ z*!%YSSa}2S+W^KcTezkPh@TxzRc;e<^<|m_fG2SXI@cI)%|>sMAEao8fb-@ z_K^7QP4@ev>+rVv-h;*JnPLhdib9aY^P`(b(!W3#n3he|mBcJetP}qxy;n)t z`=Z;RTWcirIuiitE2r`GlTCN;)m!rPyE}9QbAK?A`E6@AXsvY%TgeXYS8*q}jn#V` z^k%UOUy4fsm`3EN;>w~5Z0rIh?2n7$RV+sAVz*>Upux=L1ps*7@0sUST+Fj$^r$T4 zVA$OVyNaP`VV{N#C6^?!+U|d)$lIckBUc39fo7Lj^T&8Nf%~b8VbHm?_4C1yX&=%L z;|SzAR1ongGw#PRRTCtHKC=--0^ck4_GeQfr$$v8Hj;&+`dh46LYSK){=?_zNQNH({)37g9#yaXAGrR%NIF{f|KrtZLQsr0RZRCiCc7(t z`X3p#I1JrLT?cf$0E>miX?1*_hp_;aVB(k)OSLCvVV;SB5*T{RV^scLDgpPm*>ioT(+4k)6PF^N1AVsPe{G!tO+Ka&_$KN|()(vM1Yct<_?wDcUC@v`+5R5swehnLe&csW=xpqx zf09A zXK~WhE<|{e!s0K@$}V;A1Qxy_m7cP6$?SaKH$gxNLxL3ywa|4Sg25*A`E=G{Zn1OC zpZ(9HqT~m?KPjADNIcXfbi<62!T3@BEz$LcJ&hqjFDmZ}>l#4amSECN;h*eIaqW?bd7m#B;pJ~J+1#>yr%!mI0&5pS-FNnROPUrSbEV}kE*n&WK(su zwl&Co-`neoM$9l3m&4}DiS|3fU8TnKVG~H3%(iC;3?|Dxe zi?RkAtF*9q0xcu{w;GwAi?G;oPq|$>p)4OZstnnMOvcDFa>_^VTn_llo21IDzr%i9 zTTiU(uL#+g=q@0c9}}rsD)yRTk{3fP)M?5<5z(V|m(t>Q0LrG`>W4bzC28~7$+^`P z-4!w+-TggUJSxPOOgGVke5*|y!ta8~-*NJAO^BmjTdm?2-OkaXnj~#*{CmTMe(Wc{ zMyWal5G0^D@P^J}((trz)(;SQQLkD*S#!&#OPlgvWal0v2OtA_W z4`r{h6Q@$zzx-XGT8+1-c7M_@6){KO%ENdSc=YyEXw!e55lWKY7mQ0tEU~fW95amu zT@9m~+2f4jDJm$Dn*;|wKV1!=UF`Hcg^2a?B4A{Zb0I9aM{TeVtxt7@y3*ld$Kx2L zBBWCcP{ZAaenN>2Os4bzrfAW>MygWCY1E=A-)5H<`!w<0=@6lCkdHapZtO9cK?Q3y z025jnXd|}d;@v%jBG8MYBl~S9Q!Oz zkWO7U3i}kEq~j-_fefA3arOLOo@T;-L>0N3_ddZTHRmL2;CxIklckTwSctDoTI<=F ze+a0KmJuN@`xGRrvzDfx zgVm>A>}z@AZOa;msnblj8#M9KId7mp-mE^rqk_-%^=;s^;Z*61h|p<>dAPjmjA~dY z@f~@%57qYi;tuv0=gXd|zHhcvqt{_N`ZDXM9DY{#(45lTy zk*lTX$oosstD9mYc1g<7_(TY#NoB}Lf%U9kEJ_Bp? zm<)_1u20b*u)}?Il!hfhB~{FWNU%FNEXZ2jGB1K#TCmG+>+O(B{xJmF!E+u&@lHxM ze$&1>Cp7w-@4WACOhN>xKBn_@yYY*GiA8EYt<)D3&c4`waP3{ZAwLZ0$$G`_(3ZMX zip`74?${5}5s>`?i*rPlW_Gdr{J5ciVdCU>G8q`fAC`ZbqsAVbZgliUrOP|`H6}|b zEE<|wx$4%%%p(*fmsrmWu-jJ@$LvlhUV}Z#tBp~8OT=UY{JQ&vTVRic7E?=546W^o z-Qax09THa>d*}8?c+!zbLH}Eza8k(@e_YiKk)^(yc`#Ym9jc>IHzcDTtLQ!Vi-Gt%&0*io#YJpxA(#XRo8m{BJwjKxtZ8xAu{n+fF z#U#w1ZuV>vqfRt!g#V#SV3FrOaEx)OuTqR`%QTl5w<(c_9J~sCS;Ay zM9KSS7>GilAj3zc{v3Q4vfI)0cr>DY+1Ig@ZuB)Bj>=qhkAXJ$(5{F9URii8kx1;augZ>^Hbk!k^W!<*#jSmx zGFKj;F*`vsvXVsS!ssA&%uZXa5JoNkYGy_WF7a zryak}hG7|EwcRk{hlxDtRK#qN>-)rg9T%~Vk4>C2Wh9DL#r#tiM6d;Wm8a zo~nv-J|Bd|Jjib1Vdb>oHi*?V7;r$1?^>p=ONo>i?hG^kf-s;Ph}AfQbdvGQVG!xnn)u%7wyBN(D_Ve5OneE)DjFd<-4?I`X_Yd^NC%Q?!8laF6Ef z^Z@0St2GZQVOb5&%QQI|=6`-d@V|5F33l&-I&gDcnlx~lMnVyLv_=8iA*I0|g+eKF z2dW_*Iugo--RFgVNuP2)n;iFk_ahU}oDiDQx+B(=j{og+7BYT-`nJ|Qbf1QrQFAon%~%wWw6IZMS3RU|V#a-K2JtSFetkWa_2OaI z8H6UF_5K!ni-%PR)|>4Zce!CH_`qtNo)|~X9T1j)Q(+2{xe|B%TbEaSWq$f<5uT;? zkwnHEsP~<`SC}22?Z%%;)Dm*hE2EI^#BuJ5)8SZNCGsTr7UqOgOlxhKHt!PG0ID^78jL-uh>41#x0K%oG z7e(X!8R~JDqJ66~|G&AvPJ`cg2m&9|#Cj*a&dIC&BEFnx(74;Fu3^GF%`85?7=8uc z)2uLR<=tKbjm6e-MUG+M85v2}Y&^tj5`4f>h!OboBhWlaf_NHen82n&$z9YW>F>Hamt{RfGO`CyI` zNpZSCu$SDZ@A>_NaUJ2u}k_N3Q}q@)VPlig(zY_R7w~1Wwsw-lXQd zKcs@A57|uOo2jlO_1ZFm6~jqE^deH%bA*@IxK^%Fx#3wXu>|MLY|Mxe0nyiIM5DB* zg-atXtQ@|COxu`weS6&BpoJ%Y%9dxH5=<cOC_7AWfA`L?2Ijc3C~3^?+zs&s^TWTQNIS? zNgm}Bwg;OB<_HLgUIYse>GAn^S}gO!`g^mh8mc3_Jl1Xu-G}>)R`%1KEGqXMplaFe zabEwET5qCq9L}by1OP$;$&6PBn^b~mah`}Nzrw9S;6IWhwE7{2(JC*pxj+=3H zO5#xr)P{@5Wy;R3YyYn4il*BTX21C}#_R1`0(oAk*f#EU1+YVTUoz)#)(-6UdlmUh zL+JHDwzY5oTg6cx6Q*QV>~TnmUu>QV19)!k{g^{uq-dr?MPVNvnCb`B>&h`K_WBA|68X@y5pY#fzsq}7WeD}i;)tpp71`VD6Gxsq;su&xzq&8y;H<@ zeytd1DG@u&*k`B#e>HsmaA*jRn>L5tmLbBOF_vQqL}^a}&%P{c{0uJ<4gDFi1`N6i zcM@0BB@~p>qAqWOq%csn63>6)o{nK2MsUC^z(qvhW<`GTw)KFfv_(rxR*UWDAWF9H z88F&3xx?E8JD>^c<5Za&SGu)FONjJV?~VjLk&<@0L6&J$>-!Bfb1~zTV2OC-Iwzn_ z_G7GxVx$P^MjMdDyjn;=q1|G)?aJJH>)y0;I*|`#Uv?KQPCS_W=UnqaQw^M!k&Q~O?ZN%$)7bgKn)Sel>rnP!=Jm_JJD-WeY}0y7`V2f^?k{h{ONFLI&nMZQ%g zOkB4IbqelHBzepj&x=fP{-758BL2rSxKbUJJ)itXY2=#&b2o_3!M%95mUyV%z9E0< zL@SWsh|Le*PTyz$M__!EwKjw={!LCk*2c9 zbeAYdPaV1s=;OmKHd)L zTt8R*P2|1bw5;e7M?1af+BFggQApG9N4|^AF7v(!zt|1&s*#wa2QEBZH}=nNjf=CK z9Q|7(D#()-xV)UM%@O|nhJ&3HMX8F@a?9iZ2l`m9a2}HK&zr0Uo&WB{w)5W2xc}%D{>nA?*@r{zGX9}TcA*xI0o$;qR>UG! zRi`hhGYvBdP(Rb4>R2xKF>ulH7-iF@qw18<1w1mePc`vy(021S(sn=aBV9P1LcuSe z<8uYKuWbi@HmTF@gHv~`-vCITF`U1=Gt`-Y0ole@<=3$?9r@Pb7aU&nUA$?7{!KwQ z41G0V1&^eK_@58VyR?us)is1RX1627el7d}1!f2joPAi#2v16jCPuM;-0U)%h7OK} zEJqjh!T!Fb7n47`qzofEU>_i^Nu!KhrTI;J2ZGLkZra;7%hg!g@b=l&p$>%hPh~MA z=|58;|8Q?&Vt3=IieZmHY)^%<5AOJZg3J=JTYRPEOt?ZHtRrVSNz7Tyn~Vd6C&<`I zqVspX#w0}|Q^zI%!fhY)R$0m6=M4Fk6Oay#_^()Y2U}W}UMHQgZWJcah>huk-1lYk z5tKvR{e!bBOIeoYqfk^t1F%u@v%<&zL7+7?v&aV{`MV9Fg{Pg~^{)#DG4;$VNSb+1 z)i$}I>aRT%NONrv>OjLS;5hV1H$}khz30C$+gc1#z0(X<-S|qu~q#) zCq2rKLAufc*KCeoqtdt+5)sB$O`Ozy*}?Ir#i8nF4b%1^{UOsf)xDP!goQ>i?YZJQ zA(Z1L(6IVRzd(oG?xa&^zR)f7n~>av2!yycPxaa~a_}VS7^8xdZ2ay$TpC8u3@Xr7 zs_bsrsf~MqQ7YD-rf>MiA=KMF`lxVISlMO-^!JS+M7S^{zUEM?|baK zd*t$?WyL)F$^kq4Kd24EccO34Kb*F$P|<*UZPIc?rn*JenF1g3DaaSP-`wG_j~TIC zk57vNF$N&h@-&uCp9$(MxB%8;b2obwTUyhYYpnTkKgX0niT|esV9KR;y{)#NS>6$a zhkB%oGan@Q{JaWhduGQrwtog@Ai!5}(kf6#AVJtmxGB+^)-|NSTpY*U>}db~u-P5rs$C@eb8AZV)H5WxdBH3lXL$k^U$SBewd|BA7}=1_ zZ48rb)=nH;(fI({*SGwbTpHW;%5gsow>*Cq&E7mNK#RsVm!cLtU$!_yHt4KHfubX~ zHY6u@ju)YfY`TaP^eDg5?EV!?;p7Px+?)6E_CVGE{O$+|C*M+SeV6OtcjMV%b_%`7 z?vqd0yD-hRJQpnt~Mk0NV@_KH9=jB?r z7zI8;pj05uHYa!Mq=Rg0tX0ghtEUP#kfo+_b*+;~-;`a^`MBg}rc_dFuxXYdIlQT< zw^;r0af6q(WJej*f%ss9hzAo`-Ye z9lK&-_=vLA5D0@jHd6S^hmIZ$aYKMz-HvV6cpQ7uy|rmp-aNz4jcN>5+Uw--zS@Do zeg&0Vp|}=%uq8n8nK;5O6hFKxHD-Pr6XxbEZ1vPHQe;MZHcIk!VUy-ZQ#}GLqWQpG zhNJW7!!)K)`R+2;C74>tUs%SY8;Oml4#lqzio0P$(|{U^q0Y%np8xz`GD$+F+t!I~A0n&M`uPBv&F*+~KZ`lr;EB(jiPbD!D*N>`xugaP+v^}Ns4a{`i9 z7My@@CdbUY;RI7oH72r`0|Q_vYM4CZEfij@SS*eV_HTo2jhvlBj(26_LvokSXIqE= zG^DBMUS#+#S_35{*ET`}uLgRLWn#6u$@%jkMq zVEbtTyRh22dcKc)U6=X=!nnqQwfuB{(ha?pm}IiWY)vk)j1!v_SFV z&doXh|J|p1AMaaat?Zq>=3aZs7<25#qzoj!!v}J}@qhc#Wj;G~US7`(GsKT*&yCoq z(`OnUl=~hHerfz9Pijo(7&xS$zufOtf4cEqa_LVm7k8JBVnOS5BEFJw^lYgNPrd|N za=DD6wO`S859;i}uW;#yS-J;I8LxMF(`ZdU{2+W^1@VDW?uUJVqi;*0DDZ~b!XYY? z-RUn{tG_*Ue9##s%vzeYOg4Yq3XYtSyZW!cg^8n368Y}3bA9a}-F}BULQ1~H>ak_F zCV*+Pt5f~3<@mFIXP4Bb3Z9CU9@h3E>5YX3y@fbt?MzzP)z=~6lXD7@W5#w24a{17 zB=^ga&X;fS;g>Vpn6SGt1-M z&wGhm=?)PyL?z{~4~?BBopf|Cl5@S z`V*iH`yxK%MUy^1dNFRp$}%H;MrMNJYfw>RDxI0ojuUrp))%A?r-acT>0h$*7bZNy zYwEu1!`E)=+@R*D`~JVT`M`Ho4p~2W7{pPU$c?9hsDGm}`7>oAI%WOIu6ty$C-DC+ zTE5mFNdAewJ1c%67 zPpbxcZ&7!5c+&=v`9-Kxc`fr_iPM`bSHB3uuGB7KrCD{s>D7t^CyWL{s@gDAzN-h2 z_ivB(>p90!pzT@HLZmiXP{eG7@s8XgPr+Yl6w5{&hCQeft*7a^%vXBqYIfz)Y+ zuZIUR1yi&5y-C8fX=M`_OPugT8D*`Nt*84)iRHCrRT;0ZSrShaZoS}KLbbsZCa z*CJs6YIL+Dz4$;l$1s?Wnc6&*<e6Tu2IDnva#`mSa~X&m$)m>k&Wm zORcgm@DrcRxVmrbI4f49H~XS5hFO{|t9X~YF^CR66+iQS$~`X#=??iO&2KnJP$HzH zCHapDo)gbcj4(iw^ES+yR~B1!2!*ML80nt=6%(;=I2EnY^5oJS3NR8}+f!zq&|1Fa zEW{@!l!{&>pe{M|*z& z(u!JpzOBf}X4#}NWi8@@lRovuO7&Cm=0(Ww@J4evs=|ZfW*8p;?!`Kc)*{S+6ChZwPhdJ%d^f z2*=n|+5myE@J4c{*oOMTK?6}9OG^h#C(A9C>`%i>dKxBw2gO=j;ICa5gr&D{pIDOB zZe~e!suk%rTya^EFOt&gr zO_5y(kCLt@i0CBb8E=5=inX`ncev*f6!DXssvjLxd!5xeGoaC;3T3iMKlIahVnqNgA>@;x`9wAO1N4?}*P3?(b z;ZL6XL^sPh=31xD&pW(O6PtqgFimtmyZD$}nS@3BT+JC~A-3XpJCp_|tAl{lMn5)szslw89Lm1L zmf2F`%0+>T&5>|f8zMzb!`DZeLn`;>_CTJGSi9R;DcQZj`+?dB4(=i($|H@cMcDWr z&uKkAUGHXp*$*H5@Ggp({yPSp-ih_JeW^YU$5KCKo`G$#R+Edfq-76 zH{d~uV9SY5TVWqPG>GC>)HlXaX`ZiKOo>v@E5l)$3&U?8?@1=!;LlL)!sENABuJG@ zqqoW>!?7K55HxX*u`e&)ITRck1;4ka`-1OAzuU8NH*Bvi_tkHn86uSbjynS$9>)SLg285`CVF8W%{I&k{Wz%46V; z;4%n$!OZAJ!?llUxcu=AyUUOMVM#sHZg09AFK3N|c~J9b{I`ykpCv5CENQ6xBC>Kd zER$3JN>pqGjRZ$*{?SAHq~{QK>jP+Vn2;(U9cqh*L^@h$YfGs$0I8Z=bxdQ6#6bIZ z65{Fz&PsP%tAx*^;>nEB*x9uD&U`}?QnX?CPv6fhj}~#mP=>A_jZ1PPW@OuEgMS>Y zOhiv-qfps{#`NN>*W<~i!ip;fLi{w&4~Z1Aq+W}lDd#zHeUG;V8et5zPB-!l<)cPA zuh>k1n5q@kKiZnf4^q`x$ZDxS{BnB&qO5c$qGjZe=A3-w%V#C4|F?i4*j}c z%Kfa#r&LZ-QY*b%T%gsspyTe!Jvb`&Aq%nGC?yhgnXY_9beJEG`E-8r*dxQA1cm0X z9V#vh0-QaTBT;>G@WVn?i!4wrj3mQ(-SUD)Ku|{*tO$so`?+_Vj2HU8LyeEfp()@C zbw(@&pyP;qk?eT}S9je}qqm+UrcJK?&veHbYoYybMPOyR#dVwEzkwXVpL@aaccm+; zm{%q_HVabclqC`3w`_v&%}oh+*TLBZBWP#lXnKm#4~F5(*7}XdR#&+k-~#(d46HgI z6G~Me@sYR3owU>tq5p0~DpIdS7XA^I?_Twc)~}xJ;;E4)r}sp>b$5e8cXW)>5k$}` zFE6m$M~QzYf{r%%w$73}F>oTc*(TswBzMZxiMXL)BN9?@v!;VesIYEBGcc$EKJ z39E`Oc)0xUkWrPXEsLN3g{VQ-1#OBr32=Cskk!)bnbhvm|7K=?d_HGdlqLXYAtk-* zPwO&&BV>J##tmmkKlooLeMk|`1Mm~`KFlsuIZyd7eTvYuq084zm^5dX>GG%P1n}o7 z>P}4hw(@qkF;A{f>_c`JRbuikKTmw!VSceJ3PQ$D#JDVUeppb}Wxanj0G_9TM+c zf+UDWjG|Y6giSqvme^uld#J5JrTmwk@qU6Q&58Cj+@dLjeem%7O$xdG&{DR3Tf5+p zBIZb5l|SC@}t zS2)ibCr`9v*5Aj8S-&dUW>4gnHt{ovA9w-f#Q{QwM%nYUpofJ6i(c3)YInq;9WAH~ za1vVN;)nv00vkHMM3kNJ_?hBxS=UH|k*2(9HYM*VOAkS0-F$H|CrBP*Szw?CC#9{{ zNrOi$#Boo){OtZv{F1pzD!N8EV)XP;_MZN|YytEodz^D&gb-a5fl`5x_H}@-w+&HB z5p2rR6Vs^0Ev$F9$97ld1PZln`no+8T{?BoFY;ITH22m{G2-YSHJz*&qOHQg0?%=! zWhL{QFlS9U4CN#!`~BgTj~XONJ+dLMXPvtM6NvK*wc1h@p#y=S6sMV*S8%V$7Vi=n z#Y((Wooeuf3+9sJ0~yA|i9jG?E7=Z7WQl5cH)x!htwR%nWPI&m z5Pt_lU&V?|!Ba%K*?-@qp4jXTkvCOT!X!1Da(GOHUh<0x?rmKnYbzkMH+Tk$5WD+x zOqu6WFZuC+0&y^yPi-zmc2c=z+{SHH6;p=Z!!6_k)ylnC)v5(HxQOAmfF{f#IQs5* zY4{`s3RV7-9eNoC4fz4K<$=Lm7A~_vRS78?o|e0N4;{i7f!QEcaWb z^-2snB+fd?s-#E z(Fg!&L8@@4UeHDLYgsIZTouf?#kncku+WpIk0*W*7z>mbujo~$&&Nj~3lwwY481U< z3KiHOdktOB8lGxm{mkes8=|0i&aokfxV#Std5bLPSD*s8@!37gF#uHGfL|#?us}?; zD9Gz=hn#SJ&jv-<;?0C%Lcym^z0sN|_)OeKrHR)P|2cao(W!%2sAg!5dW<=;bF8iy zv~2_gLj=ty*sk;eY=NfGH&m1n<9KK5C-_|(U!X8mr!ditP+Bn>1l4 zs;jbDx9$iFGNMpJZZx2L&xuh_w~IA28zli8!#aFKKVQR{5)%Ymxbv1!nvm$ab36P=J#2xu<}o19?^1VKK9+_Q+* zCmvMA0liOVP4@-DVDPUe1&xDgs=`z6@uWrmul;!_0)S|7H1;NhATI2_ zgrEl=3OrTCqwLTYb3kAeW=uj75#+;YH0@E-Bay$%5A~`EdZSR3Rxrj08n_W8&3!cX zJsb%d&p@t@Z?nYu7bx@<4TMrr2Ne|f!W%Jb2?UN-_7=7tQU!`!Fp2{hQoJbLvO*2C z6)<2hE^9V3Bts1f7DJwgFl*=rGOcQvOyr(6fUpY**}L1N1#$gNA-{X%Ng^ldkh!?C z&ql(pX?H-466<~#fa105S__K|OkXgNR1;Au4p0FAinVUCukqzzPRU%JK%`MBX@}x1 zEtw;0jFq$-MEn3*+*o*_0SzKAv@)3-{H`n3tXS<0EdY=mfBMrsl;UeN>Yn2<5$cyi zy^YY)Fckg&T%Wvs5?mrE&P0g>(zL~nm3EL#d4>aYF-mN-acr%(7&k(B`1yov=uR%} z^~7oyc*tnan4XZ3{o6uaI45V8ko?3p$>=lBi$zMK zkcjrLZSS{4T+y9sOPuIl{0JY3s#3?T7B*is?H&9MDBAsP@+6jfWJ11WnRYeL5vvLP zHr(P8yp>|1{d{68gc28){k`i7{sw1z0&6o+O<5L>Gdl{39X;)r4Z*)( zWSJ&{S2^^^z$5u6`^9==(+NbPg34s1igNG%*&JJV7y^e^6Z)s|p3QB4W&Wcy8>L5v z2GS~dB<_xMbSK&#w>v=%cGC;wlRw<6jLa!DYA-zVD2T;=Y7lssE{x0cGGic8G8bJx zh`j-_?aJZQa0k9_ut}*_jBt<5YN^QXU$DBj49ms8;+uh`T=HS3W%2mk$EbhQuy1vD zt;09cDgGpGJ7F&sCLh*!C~Wa>BJ*Ex2{++QCTcg9ljTHNS zk+$67<4z-Luwm<;bndH*ogngZL^bu2D%=XoRvh8^_XBg-mj%h2(=pKV_VttVp$frf zVCV!>){$0YM|aq-pP++p)S^B<(-yx_Ftv@S6hHUF^R`0nd+BHd`(%zM??HdxA4am!`T?&c7fmk^XC z4zV9zp4DcvQ28z!r>7*~M9Q=hiaPpiUXtCRoL0%F>=)WkD96ct5i9dU!`|vg=#ugb zswVC>=7rZWC$RgPRd(p<60?LOJo(6)o`V#kZUs>h`zC;hZ6P7XMEp>~K!tn7T99?8 z@dU+5-YsqIZu>Yas!Yf!&*b>yDe~{L4c9%2yRNRBuYai%XNUFDDK#=ui`U|CR{$^z1vg_B-kCGTDu;+r_HamS|GAioMSp0P5Kbf*l9pMAAQ6~^nOD$yq4qMr>VMF zW{3EG#_$?sJ7j6)?XK9E`h%bs66VXLZ0IoSeu!Yg(}_5Jg~NvFOTP|E`p|D>@N+;{ zVCxRw=AH`FX1s;jI$1hob8}J053o&>6QW^D4!yh*iFsYEY-|Hg&_Rg*kl*j84Ip-R zkqw7F-=8D0X@mdxJh?Gh#VGPuX``#4Ug{I&mqq7n6>$pk@xoRQ7(psar_)3fzdfGU zPIMrrL{pFSr5Sg7SA-XKAB;=0@3D9X%_b@+%r9ti^8a~&zDQc`ux3}n1`IYwB+lwwj!q;88kZ6go&M{CQB}Z8O%m879UJ3isRRS*Rz+>Xy8YLIRrDNTx z;8R-{*;k0VJsDP&l#Lk6_fGoY9i6CERTAm(t3qjmGAHD{JvW%m!_)=e6R6KlH(gg; zaki`TlLx~1t2mow$3#XRE8YlQ3xAy_Nv(=ggg*CPA>_Ramvf+okxnSzsy}d_L0Oen z)f|HXGeVJa3GG!c!R9~V__x^yXnWb73z*G~EyL{YZnM<8?o z*Q}pCop6Oo<^Mgn!wyA@N@yL@5;f;MY&&9eRECGF_qfn}_8FUb>SV+JtvqY zpn}dsR3D2y+!Ykn*H_iab~E*hT^x3nnM)xF2lC|a3bEGzjK&QC|!&EN6C1! zR>iqH8TxOE_FQn){||b>r`}E1y`XXSI02i{+&&sAVAoQt9Ocn?Y}k9?95&4M=hF%e6kbq%|%X6I@( zNcKQm(3#1~RjMU<#Wmw@ie$=dvUi<-Ir&`(T_1kVq~kl9#TL18l_L8dmT&s$<(vdT z_d%>q@5cgvQN-D8L#ZE zQld(+cgGCcWK8;gC2%G+gp~`j8o{10p}Bd}TP;^FC$!0^X>C)fWBP00t<3tDuh_(Y z#P>Yu=--r~Xc+zG<$d7)NwMzmnnPwE7 z4nA|h79D;aYtdxjH%6o>H6*h>(X3gHkYy`l`5yEAMqZRlZD2yaS@zB%uP|Hu^m zvFK~{o4|Yt{Ym`PPXm z-%v*p8mgx;?f2D0hBHa2z3!OSWXyJjcKwB1c*$vsyi0b%i10z3FyQRHS z?{t{NQ5F5r1&jom6xjR8ja)SYEdDBqwRT0d7%E88l53R^WOVRnIcZrsc>)VKYxxph zP?&BQ;wK;pf-1TFGD5suM6|m_dHEhZc5*Q8jJAVn){S-orl8q)9S7Xt@9;F5l6O?Q z$7EmQbIGksFr|etHMK)Uo!?K6F-4UUFDZ7j9?;1=p!`1nm$)ftPZw!W6V6KLJ={CC zOh`Gv!6|NS(@1&AKbwQDqj!-?o1;>B8hsLU??9H=_Z$B?OoPUM_oQdAYklnj@m1m` zqwpDb_G#bfhQh9oHKvKUWT$WZtfswXXKUbrU_!J4Q8Guk;9k<`Ek>BVjF#31D3Cy6n^&sgF4~C+x0%V6dW1SQm*P3U}>^=KE*wcwm8K& zhmE57x(u*on~I_-2mDBj6BtUv7XuD?Q|HL99Vw(t$2Tk z7BPmf2folRk{>A#`n!jev@6;P2#*j@-}9nrbZNFKRr4?K!~13d6aR`{QljFj@F_Y*rN762)$kpclAl{ZiIeR}nG-c7=qpj8 zRB##wQv}*?k=4%yVAY;4m9%?4aT^ZrnhQQPDZC;DwMq5=n(83xB@S|CqsS&!!32SA z|59?r{O)It*Qci>x|zs+ceB}!CWiYm)poCSrK*$3IurlQ31jy(#p3?Vrq4c3ku9mqYJUGbW1m zf9#{0eT)VuN1CeJ%Dy7!ZDe*;WP!GtP#3XK7)m6W{xVH1vMKczvGWlRp~RF(AECRA zY}J=K78WNN`F(UairPoPYVr()&51IU(JB^9Th`CRrfg~l#m55Lml+%N+acRt3uuh^ zv1kD2w%b#JIZOAvy^y*pUC~7eHP|r_shL4N=Ej#+##RhA76Tr~jJnIX@9^Izub}`I zTE2D9ezAm7`hvLliuM2E2q#*(IspY|xiyKIl&g*3d>hY0v+RnRZ{g9lXbaVzi{1)| z8H_QbVa&^YFQ+;BZfqk=VHA`^vELnyIy;+{m#2t0mo51KBW2c=QviiOWO8X2w}(=p zuRqTCt1l-E{P3j0=5$WOc#}%`mu+>Zq#?Y)4=6GfA5Wwz8e%lS_qqSqjRCK19(AH*{zlH8* zRMPY|Jj|S=8Q)(u-PXGVuq!7ity@pm=JTzW*0GNC{-j|1~Wa=mJS&=m)lNw)qA@-q_jr%)| zHuaJ(QJ%Wm?v99=Of6SX&SCN0q2%OWms;@Wyt13I$YBVH?eI%$vd9qj@B#`nd~{a( zN`Bd&jq}2)i)o%fTXD*9jU1@|UYBcfuY*_fUonJ8HlFF(SQikhcV|y2E1OJq1 zS~Vv_lh;+Xi}SGCcvKC3)y;oijXy>FR4Q9-H6>}jIr<~NA(d%8!1SQ1Qj^_WDe3B} zwZ1e^W~WNN+n4qc!ywcB(=WLMDtEM^qhs6R_8=|KX|( zNq+vq1-2|65)EDyT%UBb<%k;26&iuswL}b_Ui$W|DZNWHlxkiXDD2rXySc{?T0Q!Bg+atZHR8&Q_b$MsETF81pwsz-;!vu|Th&MXNZ= zzdAV~e5UsXP|LO}>N$OQ=nKQkm-+wKA+<0B+o7M*e+O*;pMK-N1B~FI#l|f_0123U zKVo@fj01Uy@c$m-|JBzgSm3rVBJj+|nq8|7Dw~w0`z)XbsNvGT3Jvuioy54#D(b+6 zQlDfsrF%M&o1dyspZK7_2WCtV=7+ic5rO#V41JG^6(xM&C2**%iG`(oJ(P1b_z;Sx z6{RYn;ocTn6&d3%4PvoCgx|`@pdxF(un3 z&K6A4JMzvxN8l^l_Rbw}%HSfEXklg*Sq(G-x~c|kEsVOE&BAU}dA z^Nx$STSosd_7$z11m#fo8V+^dP)Jb0Zui>iVE-;%e|EYsQvv?*Vo?l-7(I{?z4for zvV%sAR$QqfyGCtHccTBdgih9BQ)Fv;fk%nS`m58CK@z4E+eI_JA43E@%M2D&ik`8% zA!|M;+~Gp);D)~noK5avcl;dkS3aL1jMuQvuwd1_k2_QZ6VunBF**`xb$WcRL?LGh zA&7g~E3{f>tQUl(q#YwAwEN!HkgoUQr)}Xkm#t5|4y?C4%RZfnJa#b$e=yrLgig