From edc9e419ad5a4c91aeed8c0be7915e66b7490aac Mon Sep 17 00:00:00 2001 From: Kirigaya Kazuto <59416203+LSTM-Kirigaya@users.noreply.github.com> Date: Mon, 19 Sep 2022 11:44:18 +0800 Subject: [PATCH] [pipeline/chimera] reconstruct PipelineBase and Worker to support more feasible custom schedule | finish Chimera (#1595) * [pipeline/tuning] improve dispatch performance both time and space cost * [pipeline/converge] add interface for testing convergence * [NFC] polish colossalai/utils/multi_tensor_apply/multi_tensor_apply.py code style * Update PipelineBase.py * [pipeline/chimera] reconstruct PipelineBase and Worker to support more feasible custom schedule | finish Chimera --- .../{PipelineBase.py => _pipeline_base.py} | 347 ++++++++++-------- colossalai/pipeline/rpc/_pipeline_schedule.py | 277 ++++++++++++++ data/cifar-10-python.tar.gz | Bin 0 -> 131072 bytes tests/test_pipeline/test_cuda_rpc_chimera.py | 43 +++ .../test_pipeline/test_cuda_rpc_optimizer.py | 2 +- .../test_cuda_rpc_performance.py | 102 +++++ tests/test_pipeline/test_cuda_rpc_pipeline.py | 2 +- .../test_cuda_rpc_value_correctness.py | 4 +- 8 files changed, 614 insertions(+), 163 deletions(-) rename colossalai/pipeline/rpc/{PipelineBase.py => _pipeline_base.py} (74%) create mode 100644 colossalai/pipeline/rpc/_pipeline_schedule.py create mode 100644 data/cifar-10-python.tar.gz create mode 100644 tests/test_pipeline/test_cuda_rpc_chimera.py create mode 100644 tests/test_pipeline/test_cuda_rpc_performance.py diff --git a/colossalai/pipeline/rpc/PipelineBase.py b/colossalai/pipeline/rpc/_pipeline_base.py similarity index 74% rename from colossalai/pipeline/rpc/PipelineBase.py rename to colossalai/pipeline/rpc/_pipeline_base.py index 8cc90b825..c03148505 100644 --- a/colossalai/pipeline/rpc/PipelineBase.py +++ b/colossalai/pipeline/rpc/_pipeline_base.py @@ -1,8 +1,9 @@ import threading from enum import Enum from typing import List, Any, Tuple, Dict, Callable -from abc import ABC +from abc import ABC, abstractmethod import sys +import os import torch from torch import nn @@ -17,12 +18,10 @@ from time import time from colorama import Back, Style # config for debug and test -use_color_debug = False -use_progress = False +use_color_debug = True # TODO: -# 1. replace world_size with other parameters -# 2. adjust to args and kwargs +# 1. adjust to args and kwargs (pytree) def color_debug(text, prefix=' ', color='blue'): @@ -137,24 +136,24 @@ class BackwardCache: setattr(self, arg_name, locals()[arg_name]) -class Worker: +class WorkerBase(ABC): def __init__(self, module_partition: nn.Module, pp_rank: int, actual_stage_num: int, num_microbatches: int, - use_1F1B: bool, device: str, criterion: Callable = None, + metric: Callable = None, checkpoint: bool = False) -> None: super().__init__() + self.pp_rank = pp_rank self.actual_stage_num = actual_stage_num self.num_microbatches = num_microbatches self.checkpoint = checkpoint self.device = device - self.use_1F1B = use_1F1B self._initialize_outstanding_range() # variable and const for context managment @@ -172,23 +171,14 @@ class Worker: # module partitions self.module_partition = module_partition.to(device) - if criterion: - assert callable(criterion) self.criterion = criterion + self.metric = metric - # container to maintain loop - self.microbatch_id_to_backward_cache: Dict[int, BackwardCache] = dict() - self.microbatch_id_to_labels: Dict[int, Any] = dict() - self.work_list: Dict[UniqueKey, WorkItem] = dict() - self.output_list: Dict[UniqueKey, WorkItem] = dict() + # context to maintain loop + self._initialize_context_container() # lock for the list - self.work_list_condition_lock = threading.Condition(threading.Lock()) - self.output_list_condition_lock = threading.Condition(threading.Lock()) - self.label_lock = threading.Condition(threading.Lock()) - - self.step_lock = threading.Lock() - self.step_lock.acquire() + self._initialize_lock() # main loop self.main_loop_thread = threading.Thread(target=self._work_loop, name=f'rank_{pp_rank}', daemon=True) @@ -199,13 +189,23 @@ class Worker: def _initialize_outstanding_range(self): outstanding_range = None - if self.use_1F1B: - if self.pp_rank == self.actual_stage_num - 1: - outstanding_range = (0, 1) - else: - outstanding_range = (self.actual_stage_num, self.actual_stage_num) + if self.pp_rank == self.actual_stage_num - 1: + outstanding_range = (0, 1) + else: + outstanding_range = (self.actual_stage_num, self.actual_stage_num) self.outstanding_range = outstanding_range + def _initialize_context_container(self): + self.microbatch_id_to_backward_cache: Dict[int, BackwardCache] = dict() + self.microbatch_id_to_labels: Dict[int, Any] = dict() + self.work_list: Dict[UniqueKey, WorkItem] = dict() + self.output_list: Dict[UniqueKey, WorkItem] = dict() + + def _initialize_lock(self): + self.work_list_condition_lock = threading.Condition(threading.Lock()) + self.output_list_condition_lock = threading.Condition(threading.Lock()) + self.label_lock = threading.Condition(threading.Lock()) + def sync_global_worker_rrefs(self, pp_rank_to_worker_rref: Dict[int, PyRRef]) -> None: assert self.pp_rank_to_worker_rref is None, f"in rank {self.pp_rank}, worker has sync global workers rrefs" assert pp_rank_to_worker_rref is not None, "stage_to_workers must be a dict instead of None" @@ -241,12 +241,15 @@ class Worker: forward_only) with self.work_list_condition_lock: self.work_list[key] = work_item - color_debug(f'rank {self.pp_rank} receive data from dataloader', 'data dispatch', 'magenta') + color_debug(f'rank {self.pp_rank} receive data from dataloader {self._get_store_len()}', 'data dispatch', + 'magenta') self.work_list_condition_lock.notify_all() # just for last pp_rank def set_labels(self, microbatch_id: int, microlabels: Any): - self.microbatch_id_to_labels[microbatch_id] = microlabels + with self.label_lock: + self.microbatch_id_to_labels[microbatch_id] = microlabels + self.label_lock.notify_all() # just for last pp_rank def _begin_backward(self, microbatch_id: int): @@ -354,51 +357,17 @@ class Worker: if next_rank <= self.actual_stage_num - 1: self.consumer_stage_ids.append(next_rank) + @abstractmethod def _get_work_item_key(self) -> UniqueKey: - # execute backward first (if backward phase in work_list) - pp_rank = self.pp_rank - actual_stage_num = self.actual_stage_num - num_microbatches = self.num_microbatches - is_last_stage = pp_rank == actual_stage_num - 1 + """ + this method control the order of the microbatch to consume + """ - if self.outstanding_range: - if self.outstanding <= self.outstanding_range[0]: - target_phase = Phase.FORWARD - target_microbatch_id = self.forward_times - elif self.outstanding >= self.outstanding_range[1]: - target_phase = Phase.BACKWARD - target_microbatch_id = self.backward_times - else: - raise ValueError("outstanding_range[1] - outstanding_range[0] must be in [0, 1]") + def is_first_stage(self): + return self.pp_rank == 0 - target_key = UniqueKey(target_microbatch_id, target_phase) - - # change outstanding_range at: - # 1. forward times reach actual_stage_num, this is the end of continuous forward - # 2. forward times reach num_microbatches, this is the end of 1F1B mode - if not is_last_stage and \ - target_key.phase == Phase.FORWARD: - if target_key.microbatch_id == actual_stage_num - 1: - outstanding_min = actual_stage_num - pp_rank - 1 - outstanding_max = actual_stage_num - pp_rank - self.outstanding_range = (outstanding_min, outstanding_max) - elif target_key.microbatch_id == num_microbatches - 1: - self.outstanding_range = (0, 0) - - else: - if self.forward_times < num_microbatches: - target_phase = Phase.FORWARD - target_microbatch_id = self.forward_times - else: - target_phase = Phase.BACKWARD - target_microbatch_id = self.backward_times - - target_key = UniqueKey(target_microbatch_id, target_phase) - - with self.work_list_condition_lock: - self.work_list_condition_lock.wait_for(lambda: target_key in self.work_list) - - return target_key + def is_last_stage(self): + return self.pp_rank == self.actual_stage_num - 1 def _consume_work_item_by_phase(self, work_item: WorkItem): phase = work_item.phase @@ -408,9 +377,8 @@ class Worker: forward_only = work_item.forward_only consume_result = None - # TODO : use process manager to acquire rank info later - is_first_stage = (self.pp_rank == 0) - is_last_stage = (self.pp_rank == self.actual_stage_num - 1) + is_first_stage = self.is_first_stage() + is_last_stage = self.is_last_stage() # if self.pp_rank == 0: # print( @@ -433,6 +401,21 @@ class Worker: if forward_only: with torch.no_grad(): consume_result = self.module_partition(*args, **kwargs) + + # TODO : integrate output list + if is_last_stage and self.criterion: + with self.label_lock: + self.label_lock.wait_for(lambda: microbatch_id in self.microbatch_id_to_labels) + labels = self.microbatch_id_to_labels.pop(microbatch_id) + loss: torch.Tensor = self.criterion(consume_result, labels) + if self.metric is not None: + metric_result = self.metric(consume_result, labels) + if isinstance(metric_result, torch.Tensor): + metric_result = metric_result.item() + else: + metric_result = None + consume_result = [loss.item(), metric_result] + stage_outputs = None stage_inputs = None use_checkpoint = None @@ -444,10 +427,21 @@ class Worker: use_checkpoint = True else: consume_result = self.module_partition(*args, **kwargs) + # print(f'model{self.pp_rank + 1}(param_sum: {sum([p.sum().item() for p in self.module_partition.parameters()])}) input sum: {args[0].sum().item()} forward output sum: {consume_result.sum().item()}', ) + if is_last_stage and self.criterion: + with self.label_lock: + self.label_lock.wait_for(lambda: microbatch_id in self.microbatch_id_to_labels) labels = self.microbatch_id_to_labels.pop(microbatch_id) loss: torch.Tensor = self.criterion(consume_result, labels) - consume_result = loss.item() + if self.metric is not None: + metric_result = self.metric(consume_result, labels) + if isinstance(metric_result, torch.Tensor): + metric_result = metric_result.item() + else: + metric_result = None + + consume_result = [loss.item(), metric_result] else: loss = consume_result @@ -486,6 +480,7 @@ class Worker: if use_checkpoint: stage_outputs = [self.module_partition(*stage_inputs)] + # overlap recompute and future.wait grad_tensors = get_real_args(args) @@ -513,11 +508,17 @@ class Worker: grad_sum += p.grad.sum() return grad_sum - def _is_first_step(self, work_item) -> bool: + def _is_first_step(self, work_item: WorkItem) -> bool: return work_item.phase == Phase.FORWARD and work_item.microbatch_id == 0 - def _is_last_step(self, work_item) -> bool: - return work_item.phase == Phase.BACKWARD and work_item.microbatch_id == self.num_microbatches - 1 + def _is_last_step(self, work_item: WorkItem) -> bool: + if work_item.forward_only: + last_phase = Phase.FORWARD + else: + last_phase = Phase.BACKWARD + is_last_phase = work_item.phase == last_phase + is_last_microbatch = work_item.microbatch_id == self.num_microbatches - 1 + return is_last_phase and is_last_microbatch # do the main loop to consume ready_list def _work_loop(self): @@ -551,7 +552,7 @@ class Worker: # if is last step in one batch reset context and do step if self._is_last_step(work_item): - if hasattr(self, 'optimizer'): + if hasattr(self, 'optimizer') and not work_item.forward_only: self.step() self.forward_times = 0 self.backward_times = 0 @@ -560,22 +561,22 @@ class Worker: def initialize_optimizer(self, optimizer_class: type, **kwargs): self.optimizer: optim.Optimizer = optimizer_class(self.module_partition.parameters(), **kwargs) + self.step_lock = threading.Lock() + self.step_lock.acquire() def wait_for_step(self): self.step_lock.acquire() def step(self): - # print(f'rank_{self.pp_rank}', sum([p.sum() for p in self.module_partition.parameters()])) self.optimizer.step() - # print(f'rank_{self.pp_rank}', sum([p.sum() for p in self.module_partition.parameters()])) self.optimizer.zero_grad() - self.step_lock.release() class PipelineEngineBase(ABC, nn.Module): def __init__(self, + worker_type, module_partitions, stage_num, num_microbatches, @@ -583,17 +584,19 @@ class PipelineEngineBase(ABC, nn.Module): use_1F1B=False, chunk: int = 1, criterion: Callable = None, + metric: Callable = None, checkpoint: bool = False) -> None: super().__init__() + self.worker_type = worker_type self.module_partitions: List[nn.Module] = module_partitions self.chunk = chunk self.criterion = criterion + self.metric = metric self.num_microbatches = num_microbatches self.device = device self.use_1F1B = use_1F1B self.stage_num = stage_num self.checkpoint = checkpoint - self.use_interleave = chunk > 1 self.pp_rank_to_worker_rref: Dict[int, PyRRef] = dict() @@ -601,26 +604,24 @@ class PipelineEngineBase(ABC, nn.Module): self._check_argument() self._create_pp_rank_to_rpc_worker_id() + self._create_pp_rank_to_module_partition_id() self._init_worker() - def _check_argument(self): + def _check_argument(self) -> None: self.virtual_stage_num = self.stage_num * self.chunk assert self.stage_num <= torch.cuda.device_count(), "stage_num must be smaller than device count!" assert self.virtual_stage_num == len( self.module_partitions), "stage_num * chunk must be equal to length of model partition!" - if self.use_interleave: - assert self.num_microbatches % self.stage_num == 0, "if you use interleaving strategy, make sure 'num_microbatches' is a multiple of stage_num!" - def _get_actual_stage_num(self): + def _get_actual_stage_num(self) -> int: return self.stage_num if self.chunk == 1 else self.virtual_stage_num - def _create_pp_rank_to_rpc_worker_id(self): + def _create_pp_rank_to_rpc_worker_id(self) -> None: """create a map from model partition to stage_id, which is useful when use_interleave is True. e.g. If a model is splited into 4 parts, which means len(self.module_partitions) == 3. stage_num is 2, chunk is 2, then pp_rank_to_rpc_worker_id = [0, 1, 0, 1], that means first and third part of partitions will be moved to device 0 and the others to device 1 - """ stage_num = self.stage_num actual_stage_num = self._get_actual_stage_num() @@ -628,28 +629,39 @@ class PipelineEngineBase(ABC, nn.Module): for pp_rank in range(actual_stage_num): self.pp_rank_to_rpc_worker_id[pp_rank] = pp_rank % stage_num - def _init_worker(self): + def _create_pp_rank_to_module_partition_id(self) -> None: + """By default(both fill drain and 1F1B), length of model partitions equal to + actual_stage_num, so allocate model partition to corresponding stage + """ + actual_stage_num = self._get_actual_stage_num() + self.pp_rank_to_module_partition_id = [0] * actual_stage_num + for pp_rank in range(actual_stage_num): + self.pp_rank_to_module_partition_id[pp_rank] = pp_rank + + def _init_worker(self) -> None: actual_stage_num = self._get_actual_stage_num() - use_1F1B = self.use_1F1B + worker_type = self.worker_type checkpoint = self.checkpoint num_microbatches = self.num_microbatches device = self.device criterion = self.criterion + metric = self.metric - for pp_rank in range(actual_stage_num): - module_partition = self.module_partitions[pp_rank] + for pp_rank in range(len(self.pp_rank_to_rpc_worker_id)): + module_partition_id = self.pp_rank_to_module_partition_id[pp_rank] rpc_worker_id = self.pp_rank_to_rpc_worker_id[pp_rank] if device[:4] == 'cuda': device = f'cuda:{rpc_worker_id}' + module_partition = self.module_partitions[module_partition_id] self.pp_rank_to_worker_rref[pp_rank] = rpc.remote(rpc_worker_id, - Worker, + worker_type, args=(module_partition, pp_rank, actual_stage_num, - num_microbatches, use_1F1B, device, criterion, + num_microbatches, device, criterion, metric, checkpoint)) # let each worker know global worker rref (include itself) - for pp_rank in range(actual_stage_num): + for pp_rank in self.pp_rank_to_worker_rref: self.pp_rank_to_worker_rref[pp_rank].rpc_sync().sync_global_worker_rrefs(self.pp_rank_to_worker_rref) def remote_parameters(self) -> Dict[int, List[torch.Tensor]]: @@ -670,65 +682,110 @@ class PipelineEngineBase(ABC, nn.Module): grads[stage_id].append(grad) return grads + def get_input_pp_ranks(self) -> List[int]: + return [0] + + def get_output_pp_ranks(self) -> List[int]: + return [self._get_actual_stage_num() - 1] + + def _consume_constraint(self, microbatch_id: int, forward_only: bool, input_pp_ranks: List[int], + output_pp_ranks: List[int], ret_future): + actual_stage_num = self._get_actual_stage_num() + use_1F1B = self.use_1F1B + if microbatch_id >= actual_stage_num: + if forward_only or not use_1F1B: + for pp_rank in output_pp_ranks: + ret_future[pp_rank][microbatch_id - actual_stage_num].wait() + else: + key = UniqueKey(microbatch_id - actual_stage_num, Phase.BACKWARD) + for pp_rank in input_pp_ranks: + worker_rref = self.pp_rank_to_worker_rref[pp_rank] + worker_rref.rpc_sync().get_output_by_key(key) + + def _create_ret_future(self, output_pp_ranks: List[int]) -> Dict[int, List[Future]]: + num_microbatches = self.num_microbatches + return {pp_rank: [None] * num_microbatches for pp_rank in output_pp_ranks} + + def _set_input(self, input_pp_ranks: List[int], microbatch_id: int, microbatch, forward_only: bool): + for pp_rank in input_pp_ranks: + worker_rref = self.pp_rank_to_worker_rref[pp_rank] + # TODO : add relationship between input_pp_ranks and parts of microbatch + worker_rref.remote().set_input(microbatch_id, microbatch, forward_only) + + def _set_labels(self, output_pp_ranks: List[int], microbatch_id: int, microlabels): + for pp_rank in output_pp_ranks: + worker_rref = self.pp_rank_to_worker_rref[pp_rank] + # TODO : add relationship between output_pp_ranks and parts of microlabels + worker_rref.remote().set_labels(microbatch_id, microlabels) + + def _subscribe_forward(self, microbatch_id: int, output_pp_ranks: List[int], ret_future: Dict[int, List[Future]]): + key = UniqueKey(microbatch_id, Phase.FORWARD) + for pp_rank in output_pp_ranks: + worker_rref = self.pp_rank_to_worker_rref[pp_rank] + ret_future[pp_rank][microbatch_id] = worker_rref.rpc_async().get_output_by_key(key) + + def _ensure_backward(self, forward_only: bool, input_pp_ranks: List[int]): + if not forward_only: + for pp_rank in input_pp_ranks: + worker_rref = self.pp_rank_to_worker_rref[pp_rank] + key = UniqueKey(self.num_microbatches - 1, Phase.BACKWARD) + worker_rref.rpc_sync().get_output_by_key(key) + + def _collect_forward_result(self, output_pp_ranks: List[int], ret_future: Dict[int, List[Future]]): + forward_result = [] + for pp_rank in output_pp_ranks: + worker_forward_result = [None] * self.num_microbatches + for microbatch_id in range(self.num_microbatches): + ret = ret_future[pp_rank][microbatch_id].wait() + worker_forward_result[microbatch_id] = ret + worker_forward_result = list(zip(*worker_forward_result)) + forward_result.extend(worker_forward_result) + + return forward_result + def forward_backward(self, batch: torch.Tensor, labels: torch.Tensor = None, forward_only: bool = False): if labels is not None: assert len(batch) == len(labels) + if not forward_only: + assert hasattr(self, 'optimizer_class') num_microbatches = self.num_microbatches microbatch_size = len(batch) // num_microbatches - actual_stage_num = self._get_actual_stage_num() - first_worker_rref = self.pp_rank_to_worker_rref[0] - last_worker_rref = self.pp_rank_to_worker_rref[actual_stage_num - 1] + # If Chimera mode is used, then rank of down pipeline is excluded from 'input_pp_ranks' or 'output_pp_ranks' + input_pp_ranks = self.get_input_pp_ranks() + output_pp_ranks = self.get_output_pp_ranks() - microbatch_iter = range(num_microbatches) - if use_progress: - microbatch_iter = tqdm(microbatch_iter) + # a cache to collect data and control flow + ret_future = self._create_ret_future(output_pp_ranks) - ret_future: List[Future] = [None] * num_microbatches - for microbatch_id in microbatch_iter: - # control data input speed + for microbatch_id in range(num_microbatches): + # control data input speed # to prevent exceed of wait limitations - if microbatch_id >= actual_stage_num: - if forward_only or not self.use_1F1B: - ret_future[microbatch_id - actual_stage_num].wait() - else: - key = UniqueKey(microbatch_id - actual_stage_num, Phase.BACKWARD) - first_worker_rref.rpc_sync().get_output_by_key(key) + self._consume_constraint(microbatch_id, forward_only, input_pp_ranks, output_pp_ranks, ret_future) # set input microbatch = batch[microbatch_size * microbatch_id:microbatch_size * (microbatch_id + 1)] microbatch = microbatch.cuda() - first_worker_rref.remote().set_input(microbatch_id, microbatch, forward_only) + self._set_input(input_pp_ranks, microbatch_id, microbatch, forward_only) + # set labels - if not forward_only and labels is not None: + if labels is not None: microlabels = labels[microbatch_size * microbatch_id:microbatch_size * (microbatch_id + 1)] microlabels = microlabels.cuda() - last_worker_rref.remote().set_labels(microbatch_id, microlabels) + self._set_labels(output_pp_ranks, microbatch_id, microlabels) - key = UniqueKey(microbatch_id, Phase.FORWARD) - ret_future[microbatch_id] = last_worker_rref.rpc_async().get_output_by_key(key) + # get data asynchronously + self._subscribe_forward(microbatch_id, output_pp_ranks, ret_future) - # wait for last backward in rank0 - if not forward_only: - key = UniqueKey(self.num_microbatches - 1, Phase.BACKWARD) - first_worker_rref.rpc_sync().get_output_by_key(key) + # wait for first rank to ensure all backwards are done + self._ensure_backward(forward_only, input_pp_ranks) # collect forward result - # TODO : all the node to output - forward_result = None + forward_result = self._collect_forward_result(output_pp_ranks, ret_future) - for microbatch_id in range(self.num_microbatches): - key = UniqueKey(microbatch_id, Phase.FORWARD) - ret = ret_future[microbatch_id].wait() - if forward_result is None: - forward_result = [[]] * len(ret) - for i in range(len(forward_result)): - forward_result[i].append(ret[i]) - - if hasattr(self, 'optimizer_class'): + if not forward_only and labels is not None: # wait for all step - # TODO : more elegant ? for pp_rank in self.pp_rank_to_worker_rref: worker_rref = self.pp_rank_to_worker_rref[pp_rank] worker_rref.rpc_sync().wait_for_step() @@ -751,31 +808,3 @@ class PipelineEngineBase(ABC, nn.Module): for fut in self.step_futs: fut.wait() - - -class FillDrainPipelineEngine(PipelineEngineBase): - - def __init__(self, - module_partitions: List[nn.Module], - stage_num: int, - num_microbatches: int, - device: str, - chunk: int = 1, - criterion: Callable = None, - checkpoint: bool = False) -> None: - use_1F1B = False - super().__init__(module_partitions, stage_num, num_microbatches, device, use_1F1B, chunk, criterion, checkpoint) - - -class OneFOneBPipelineEngine(PipelineEngineBase): - - def __init__(self, - module_partitions: List[nn.Module], - stage_num: int, - num_microbatches: int, - device: str, - chunk: int = 1, - criterion: Callable = None, - checkpoint: bool = False) -> None: - use_1F1B = True - super().__init__(module_partitions, stage_num, num_microbatches, device, use_1F1B, chunk, criterion, checkpoint) diff --git a/colossalai/pipeline/rpc/_pipeline_schedule.py b/colossalai/pipeline/rpc/_pipeline_schedule.py new file mode 100644 index 000000000..991588bae --- /dev/null +++ b/colossalai/pipeline/rpc/_pipeline_schedule.py @@ -0,0 +1,277 @@ +from typing import List, Callable, Dict + +import torch.nn as nn +from torch.futures import Future +from torch._C._distributed_rpc import PyRRef + +from colossalai.pipeline.rpc._pipeline_base import PipelineEngineBase, WorkerBase, UniqueKey, Phase + +# Implementation of different Pipeline schedule +# Worker defines the worker for each stage +# PipelineEngine is the class for use + + +class FillDrainWorker(WorkerBase): + + def _get_work_item_key(self) -> UniqueKey: + # execute backward first (if backward phase in work_list) + num_microbatches = self.num_microbatches + + if self.forward_times < num_microbatches: + target_phase = Phase.FORWARD + target_microbatch_id = self.forward_times + else: + target_phase = Phase.BACKWARD + target_microbatch_id = self.backward_times + + target_key = UniqueKey(target_microbatch_id, target_phase) + + with self.work_list_condition_lock: + self.work_list_condition_lock.wait_for(lambda: target_key in self.work_list) + + return target_key + + +class FillDrainPipelineEngine(PipelineEngineBase): + + def __init__(self, + module_partitions: List[nn.Module], + stage_num: int, + num_microbatches: int, + device: str, + chunk: int = 1, + criterion: Callable = None, + metric: Callable = None, + checkpoint: bool = False) -> None: + + if chunk > 1: + assert num_microbatches % stage_num == 0, \ + "if you use interleaving strategy, make sure 'num_microbatches' is a multiple of stage_num!" + use_1F1B = False + + super().__init__(FillDrainWorker, module_partitions, stage_num, num_microbatches, device, use_1F1B, chunk, + criterion, metric, checkpoint) + + +class OneFOneBWorker(WorkerBase): + + def _get_work_item_key(self) -> UniqueKey: + # execute backward first (if backward phase in work_list) + pp_rank = self.pp_rank + actual_stage_num = self.actual_stage_num + num_microbatches = self.num_microbatches + is_last_stage = pp_rank == actual_stage_num - 1 + + if self.outstanding <= self.outstanding_range[0]: + target_phase = Phase.FORWARD + target_microbatch_id = self.forward_times + elif self.outstanding >= self.outstanding_range[1]: + target_phase = Phase.BACKWARD + target_microbatch_id = self.backward_times + else: + raise ValueError("outstanding_range[1] - outstanding_range[0] must be in [0, 1]") + + target_key = UniqueKey(target_microbatch_id, target_phase) + + # change outstanding_range at: + # 1. forward times reach actual_stage_num, this is the end of continuous forward + # 2. forward times reach num_microbatches, this is the end of 1F1B mode + if not is_last_stage and \ + target_key.phase == Phase.FORWARD: + if target_key.microbatch_id == actual_stage_num - 1: + outstanding_min = actual_stage_num - pp_rank - 1 + outstanding_max = actual_stage_num - pp_rank + self.outstanding_range = (outstanding_min, outstanding_max) + elif target_key.microbatch_id == num_microbatches - 1: + self.outstanding_range = (0, 0) + + with self.work_list_condition_lock: + self.work_list_condition_lock.wait_for(lambda: target_key in self.work_list) + + return target_key + + +class OneFOneBPipelineEngine(PipelineEngineBase): + + def __init__(self, + module_partitions: List[nn.Module], + stage_num: int, + num_microbatches: int, + device: str, + chunk: int = 1, + criterion: Callable = None, + metric: Callable = None, + checkpoint: bool = False) -> None: + + if chunk > 1: + assert num_microbatches % stage_num == 0, \ + "if you use interleaving strategy, make sure 'num_microbatches' is a multiple of stage_num!" + use_1F1B = True + + super().__init__(OneFOneBWorker, module_partitions, stage_num, num_microbatches, device, use_1F1B, chunk, + criterion, metric, checkpoint) + + +class ChimeraWorker(WorkerBase): + + def _get_producer_consumer(self) -> None: + rank = self.pp_rank + min_pp_rank = (rank // self.actual_stage_num) * self.actual_stage_num + max_pp_rank = min_pp_rank + self.actual_stage_num - 1 + + assert self.producer_stage_ids is None, f"all the producers of rank {rank} has been subscribed" + assert self.consumer_stage_ids is None, f"all the consumers of rank {rank} has been subscribed" + + # should be aranged in order, the order of the input of current forward + self.producer_stage_ids = [] + self.consumer_stage_ids = [] + + # Just for demo + prev_rank = rank - 1 + next_rank = rank + 1 + if prev_rank >= min_pp_rank: + self.producer_stage_ids.append(prev_rank) + if next_rank <= max_pp_rank: + self.consumer_stage_ids.append(next_rank) + + def _get_work_item_key(self) -> UniqueKey: + pp_rank = self.pp_rank + stage_num = self.actual_stage_num + real_microbatch_num = self.num_microbatches // 2 + + if self.forward_times < real_microbatch_num: + if (pp_rank + 1) % stage_num == 0: # last rank + forward_blocks = self.forward_times // (self.num_microbatches // stage_num) + if forward_blocks > self.backward_times: + target_phase = Phase.BACKWARD + target_microbatch_id = self.backward_times + else: + target_phase = Phase.FORWARD + target_microbatch_id = self.forward_times + else: # others + target_phase = Phase.FORWARD + target_microbatch_id = self.forward_times + else: + target_phase = Phase.BACKWARD + target_microbatch_id = self.backward_times + + # In up pipeline, microbatch_id to consume is 0, 2, 4 (2n) + # In down pipeline, microbatch_id to consume is 1, 3, 5 (2n + 1) + real_target_microbatch_id = target_microbatch_id * 2 + if pp_rank >= stage_num: + real_target_microbatch_id += 1 + target_key = UniqueKey(real_target_microbatch_id, target_phase) + + with self.work_list_condition_lock: + self.work_list_condition_lock.wait_for(lambda: target_key in self.work_list) + + return target_key + + def is_first_stage(self): + return (self.pp_rank % self.actual_stage_num) == 0 + + def is_last_stage(self): + return (self.pp_rank % self.actual_stage_num) == self.actual_stage_num - 1 + + +class ChimeraPipelineEngine(PipelineEngineBase): + + def __init__(self, + module_partitions, + stage_num, + num_microbatches, + device: str, + criterion: Callable = None, + metric: Callable = None, + checkpoint: bool = False) -> None: + + assert num_microbatches % stage_num == 0, \ + "In Chimera, num_microbatches must be the multiply of stage_num!" + use_1F1B = False + chunk = 1 + super().__init__(ChimeraWorker, module_partitions, stage_num, num_microbatches, device, use_1F1B, chunk, + criterion, metric, checkpoint) + + def _consume_constraint(self, microbatch_id: int, forward_only: bool, ret_future: Dict[PyRRef, List[Future]], + input_worker_rrefs: List[PyRRef], output_worker_rrefs: List[PyRRef]): + pass + + def _create_pp_rank_to_rpc_worker_id(self) -> None: + stage_num = self.stage_num + self.pp_rank_to_rpc_worker_id = [0] * (stage_num * 2) + for pp_rank in range(stage_num): + self.pp_rank_to_rpc_worker_id[pp_rank] = pp_rank + self.pp_rank_to_rpc_worker_id[pp_rank + stage_num] = stage_num - pp_rank - 1 + + def _create_pp_rank_to_module_partition_id(self) -> None: + stage_num = self.stage_num + self.pp_rank_to_module_partition_id = [0] * (stage_num * 2) + for pp_rank in range(stage_num): + self.pp_rank_to_module_partition_id[pp_rank] = pp_rank + self.pp_rank_to_module_partition_id[pp_rank + stage_num] = pp_rank + + def _create_ret_future(self, output_pp_ranks: List[int]) -> Dict[int, List[Future]]: + num_microbatches = self.num_microbatches + stage_num = self.stage_num + up_ret_future = {pp_rank: [None] * num_microbatches for pp_rank in output_pp_ranks} + down_ret_future = {pp_rank + stage_num: [None] * num_microbatches for pp_rank in output_pp_ranks} + # merge up and down + return {**up_ret_future, **down_ret_future} + + def _set_input(self, input_pp_ranks: List[int], microbatch_id: int, microbatch, forward_only: bool): + # offset is 0 for all the ranks in up pipeline + # offset is stage_num for all the ranks in down pipeline + offset = (microbatch_id % 2) * self.stage_num + for pp_rank in input_pp_ranks: + worker_rref = self.pp_rank_to_worker_rref[pp_rank + offset] + worker_rref.remote().set_input(microbatch_id, microbatch, forward_only) + + def _set_labels(self, output_pp_ranks: List[int], microbatch_id: int, microlabels): + # offset is 0 for all the ranks in up pipeline + # offset is stage_num for all the ranks in down pipeline + offset = (microbatch_id % 2) * self.stage_num + for pp_rank in output_pp_ranks: + worker_rref = self.pp_rank_to_worker_rref[pp_rank + offset] + worker_rref.remote().set_labels(microbatch_id, microlabels) + + def _subscribe_forward(self, microbatch_id: int, output_pp_ranks: List[int], ret_future: Dict[int, List[Future]]): + key = UniqueKey(microbatch_id, Phase.FORWARD) + offset = (microbatch_id % 2) * self.stage_num + for pp_rank in output_pp_ranks: + worker_rref = self.pp_rank_to_worker_rref[pp_rank + offset] + ret_future[pp_rank + offset][microbatch_id] = worker_rref.rpc_async().get_output_by_key(key) + + def _ensure_backward(self, forward_only: bool, input_pp_ranks: List[int]): + stage_num = self.stage_num + num_microbatches = self.num_microbatches + if not forward_only: + for pp_rank in input_pp_ranks: + up_last_microbatch_id = num_microbatches - 2 + down_last_microbatch_id = num_microbatches - 1 + + up_worker_rref = self.pp_rank_to_worker_rref[pp_rank] + down_worker_rref = self.pp_rank_to_worker_rref[pp_rank + stage_num] + + up_key = UniqueKey(up_last_microbatch_id, Phase.BACKWARD) + down_key = UniqueKey(down_last_microbatch_id, Phase.BACKWARD) + + up_worker_rref.rpc_sync().get_output_by_key(up_key) + down_worker_rref.rpc_sync().get_output_by_key(down_key) + + def _collect_forward_result(self, output_pp_ranks: List[int], ret_future: Dict[PyRRef, List[Future]]): + """Logic of collection of forward in Chimera. + Currently, only one input one output model is supported + """ + stage_num = self.stage_num + forward_result = [] + for pp_rank in output_pp_ranks: + worker_forward_result = [None] * self.num_microbatches + for microbatch_id in range(self.num_microbatches): + offset = (microbatch_id % 2) * stage_num + ret = ret_future[pp_rank + offset][microbatch_id].wait() + worker_forward_result[microbatch_id] = ret + + worker_forward_result = list(zip(*worker_forward_result)) + forward_result.extend(worker_forward_result) + + return forward_result diff --git a/data/cifar-10-python.tar.gz b/data/cifar-10-python.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..048005dfd4afee1b8806edcad35bc74c9d7d5d14 GIT binary patch literal 131072 zcmV)%K#jj2iwFP(Gbl;`1LXa6cw^TYK8l)U4})hsW@eOGW?LqCTarm;%aUbTmL-d2 zW@ct)W*(1cJWR=iIcbxoZPIYkK+`sD&zARIa?X9ubMHUD=lpZ`#H6)h!S}u2`@z~_ zu(RkQd#sav23^9)W{T|vg^mjUhYu(C@NjdJ{dC2;xypVzW3e75pQDEY7VC_4c5=bG zxVbAhVO`vvofVAS{!e%0|LKs5C3KOIkpf4=F8cp=UN)O2VTlC)Z*=MZ&4cm(u>P5J z2|fMf?{wGy6VH$>u)C}4|HJxY-Q8WVPOk2<^~buqx?tU1++jJvx;uGzC>S~YpLqEH zujBvE*S|ukRH$f0Ig2bem!84o3Y93=BqBPS$L6t&PChqsHR5L(xe1jiYA0uig(_)6 zRVzpVQiH#gAPoGa2!E---&Nty)F5T}H)Z&DRY)EFO$BaKM$b`)G~iDa;A_-QzSQA= z82Aj0lU6mjP2=QzRrqfO_)8J~TXwc8dADZpo`o!kQ%q1wq970`am?vC77HW!$ao++OER6qGtb{^*B{<1SP zPR4p z!<>v0xgYX3=47Uj=W3wqrh$I0eDbN<$;@F;S;L&13$B;Vmiq7HMMbV#N++XIJehg* zlQmXEH9+BHhLuj{SQR~A6}<{sJIu)nD4^1zhH9eXNl!578X>EwB=3Rx$vH}BZxDG? zkn5EOsu$`f_X53FL)REtOJr6xPG%7q3r4Qh$Q&u2d#2M)0u>ZvR8Z+a=2`{qwZe&vAd;ho%9RS*6V;PvsiD%KhDy9DiU>eIHRS7{ijGV1 zq%Rt%9x9^}2}YxMGArQe$|tLZkv|vtjybtT?PPV-PM)NMUZsI*qauo(O25+xwUaR` zpctomaxdgOL^@BkR_&yJ;ObL(S3~6h(N`sO-4Q)gMx_ZLD+Wbbq-TiCXq-Gn`Q+}% z+92zJAPtx`m6P+4dDJ*rNflH^FmhZ~Kk1Lc$*e1)bD<>14Ma;$HAEGaYjqS&mCw{>8x?EP3QRG!e=T-x~9)n7t z`pMiY%8^jvr2lHDcBrBFu8QIcG8znuR0=41tDl^yjOwBy%4pP3TcIqM8buVLfDK1< z5m^aDX4O&o#Gsg{fnt{`$_vy{TvbPT2j=A7im1(2Mwx^nDj$Fksi2aBL9IV>wJK@@ zfLA^le=N$nvPf&MC%ZF$Drtr*cx@zvM8ZF zRhP3BMU)vSps1-RpD7j8ZYljv=2X#H!k{D6kmDn=#_Fg}XrOoiWCbukRg{gXqO*@^ zG@^$ZsN@39rh=}bBFc!6)m2B)48cFZS=3PE*Fg0~1(jnBbk33fsiJHJ%%VD~8Oo?U zDWO(h9laKjJ5?0%)KJM$l%qFtUv<=WBeIP23F#qXEs*D&T3;o3&(u-Ipb7!jhwyAA zw4bVSUDZIxt&Zx35^7!5Q9Fp-L0v9iiYRkLSf>UmTZlac5~hN37$tPo)zLd690-{U zC6s|-1p34raYp|h@rVxbaxCpA<@)lYs`LT3!IdO(IxeHg^QLUb3IMZnkq zs-ALTWd0RVsZx`lp&++I%5oh>tR3(|6y)4R16?D4O~~9RpooUZ5OO{uVSwc*qt+L! zKd_*R=-t%O9s?g(1DzeEllz~p+^OYJL6H-KT1XA_Omzr&5gHKiWB_+YS~XC6hA=~n zoUN;(R$K|T=)mtn5K!ghY&8h*QB_p()FH%k1D>-QYX4PH!~{$q@PShgLKU^o$`A&% zS4t=k!l0O`fv%Yfs%ID!<>Mgam|gfawJI|h|XjGT`l))<2_3nfSi#c6dEr-76qE3A&nw+f0D$Qg*1 z0=ZU4u|fg;!k|wFT7>X$WOPX10rNX;RY$Kt&=Z5o7~nn{Cs!+?c31(`SQQlMkl9i| zZ4qE;>Zrv~M`Zz#3WRSfq3ee59Sq7KRnWdEqsXU(K1msse+6_7PUl4#wY?aW6CqYw z6_s~nmN4jV7!+jyE7FkLE#O0`qLxVo#am_61}dP^0sIve)J6k@Qig!XtA^TP1$16O zj6?}tITZ-RTYwL%hW1EZ&PhNd3q+8B@2V`$^bAmyip@Ona4G8fplu$$jT8u$Qq>9csf*&gAEGVE@fJ9ML(b1@&xTS_#F2qhM zL8o3HqHijw9aommC1M9pV+n}mMRZP8ZeIXjQ$dkm14Sbw)^!?{LE?T&DDtYvpP+#9 z9|cGqm1iUlg6M=Asx`=(pR!(z9HCUuULf~WMCBK;w1~7SK!DAt%KuhI*B6mQMF_;U z6j6x*t%!|RMx|Q~9TSKEAt;B$h!jxCM(h<5J5fS$OkKY6h@S(jq8d79r`7;jZB^8E zfw8Ee7=WN0;!gt0t%^z|uv!3(R3Q+RR6zTRL`79l8;D>Jau+2C_|%9lU?30?(vY8x za4I!aYJt9}qm~MhAY}-6P#O^6;HT1uM4u3!M)m*JqJ~Q$u;cDpYfT)%t`gC;^BM|ulUNGFN6CYg_wbEd=G3dxt(EcK_uY%&N28tLO=qQor z0AEZMWsAxvUMivXRte=w>gdxH(YXhxZq3Mvii5QsM@qR4^REZ|WoqKF1! z<-qe$K{*v*zQDR7c1l5xP#|&!qJtW!oGQvKJ>u0W$@Lr=Ibst)91#Qk-V;%PfRBfa zUP+Em3UcfQoLLz~RE!+k0Wu@~Lv&vqwL%IgD*oR3sG#i_2zZnTyT+h46?rBGI*nW? zK_Kdm+y~LbQ%eD`7mNg03|09|BEM^(mI=%}1|6+31pGE72>8Vc&?(nO@EnP)Ba(>t zKMHdGi};g>2cv>oJb(&HsC7_18I_vcVkw~Op@z>!9e zDEy99VSZ;-)X`6n5rAx!s=Qx_Wk8rIz%6Cet{~h@0i8<)REITC*;0{fD`Eu|QJhtm zV~r}xEf9o6BE`UGLZW3Lwu5jD;1Q`or(P?N5nwaa48Hv*f zxCR6`y(&8Y2r4K+AUc6qehg|klzz8rAYTPg1HpPF=#)=lP?q|X?1Z2|jHl3%R`oo2EA@9YAR zMZ`N)M#roIfw;Yz9IZi474hs8q0?9xB73K~XBGL}fovp@O@!O2qoYug%MS)!Wf1p8 z^aXhMAX0#l+gSw^f7Ma`gG2+7=ngq&RvGO(;7JN7<|BL;$P0*+0?!5U z-V{*A2>cTeyHkWf{2F1P$d?Lg8$b;E_wi#D2;>_zPz$b%+EEOOD9R`TsLN*tgU%-g zMKTa=2Jsib_dzrWBfm2S#X69uMLbVr1c>hjDiT!XcLNzFRaE;_AmEcLpfaH(=NX7U zt&Ywu@G=!p9Y*9v104;BxM3jRw}S{XBIzJnia{|$@pqc5iq1ah8JHE2D>=>JsmiUn z61ob&w?cdZp#K#u}9% zkSD`HAP%C8%A7L#r66ZBAi|G9Q4iF`AhV5RK2CjZ3@W`E=yzpQDnPXj2Gu>pdr(E^ z9$^`vqCy3=<^c7O8A5C!U{r|o01q0}OCa%NH3-yR09&Yr$_c`V5H11uyb8*iK+Z%1 zl{sYP)lgIbwLuyv-k#<ZBanEhMN3IpdYFzOG0Ky1(hRE zIRPqYK(-V37^-rH0CIcC9ZoB+FzCoM&~w#MtFMAuIb?poDk39Og+RRl@CYL}VGa;b{0vxFJkHFJcK{Xe|8%}e4Ag>G}&gyc@posodg8=)}fB>&k zI$1Mi*rKbV<3W&18J!_ekEM!o3JnP4U6fJ81vd6{eiTui02V_9kp#11qdP}6}yIRVHS0(1cpK`aoWM_Cl8)B(SP$jxaK zQ4L)i3+7KS1Bu5@Z?m@*Bka-1ELNrjFR75R`A_RO?;PEM;n5m9( zAVmmx2O#?axE{#bfEX#lw3JaMq9M0xfX!+^AYz0tQ;@e(f`G4spsNC_(nNUHc9a%Y$$ybFy zt*NqH-_%h)p@2#V$VDMBbVNdts66mTK!ublI^Q5$0Bj|~k(JSVDnKAYq=9l8VAW6g zGhnD7UIsGU$`HtyBJokg3qdTt5^9Z9AP^M;UM8q(Lf9yXCL^As3VMz@Iv#+x8mQi= z%KHK0Qy{;ogvyx)1hSx@h7-hcG|+hln0i_p1H1;{4=bYbsEYC^4OGk3P&)#$7YLg} zJTwh-EQsDKkz3&UBzi#hoT&jk(C9Nu)y;}cnA_rR6-eql3eZ) z&Y}o`Xo@0gZ9x74VE1V)<0)=nP#HU|X3~(eHIVsKMR8jZ0+oJ977RI04ZVj71S&;A z_0=geJskz&M=Hr#j{*d$n2~h_^-{pw0KORp#V2KSR*?AwRdpB?9YL?uQK?Z!eRNg% z>VTY$5(MHtpduLbNgYKJMbvsAPg6y)QV{}79?5vApgIpSOF+heeN~1|YoAVY^UCNw zFsQ@>%sE8~bqLh`Ae>J_{%kN7ATdg)1|e7lkf_Vh>8yGqB1#AfefmnnBYU{u} zfw(q^0&1ZBM6L%_Mrv|Y2bm9$bH$*TrGz4(5^B>GAdqVZF=-9Cy;PLX%_*h=_6n>Q zh-`zbwi;?je_v0C$O5Q0Q$+i#4uNV)b@{xhpjHFKc7R-|p>v`E0q+4>3xLPqX&`C_ z@(BtkF94Ne$|$-4j{*aMn1&(*vUebh0$3%OHz0Mu`$G@_Cj))-55e?LuBlE5Ro$dkw^$<$(nOA^7d_@TYbytWN4DbZh#hlhPs>l&Q6x2-A~YbPiL5>Fr!^oD=SQBTEVqcD4hFF^r`!?P4mAiwYY_hw z#J~_A2+=1E2vpf(P`jrBfl3KQ6b*nKP)98au-)qD_&~%1VWwaw5Qyf2Oq&J-yiTO= zAd?5Gc#ulA)7T@Z5>SCaz7b>}Ppg@bm>32E`3)8H?jYL(5EP*IX%<2i)d}Qxq~E9c zV~{OB%`_tNqmFVU6*<=cHPG7bh-}<#Hv927Ss|TsG*D^ z{OM>;XGR?Y`9DzYs~|^m1(fq?Kp-!m0-f$qQA80|6RQ4f_556;%ktOF=ds__v@=Q(dleAgTl^zLkC_1%PR&%5fOf zHh_GC8Y+$I=!z*ppi&L+MG!?+l=C(O`;|~Tq=4EOkhcT7o&Y+Z?jrzpN)=@W$TNYi zfmj5HQUPlP*zBn{4KjBss064$V3!cs%>#D7C_*3x3;4`wY!`{HV&v;|n)g67SP7jq z3~D14;ziKqo-H6+zTf z?@%~ViZ4eH5(hY$9KC_o^`h4f7o0(EMqm2x1KbINKE>vmcN4R#i) zL!b%*;Uu8?4CId#ArQ?2{vu#bpqd5v`3PPDUjRhGPJKUsgsP|%Bisk6MFA@WV#exn z1je8`ql&UGMF?bSko$vNnUdUg0et|wfI*yC37rRZ2vjM8EFh?v1sMt?a(e15fqk?{ zv{(ZIl|Y~-3hYcqRueFE#0ILNOil#?F-qX?0!dd!X99z+sxm4`iV&z=2UW;QsQe=K z2{34|`&3On8U+Z%Z4^)~0V|=3S~~^Qjw_?A0kBs!=rk4r;-Fw8h;M@M7Ig^h6I3{< zj8j5&4``+O?_?D0YycI(r#_k@1R@`xjzHe5dZD8+899pFi9kr4G zvo%l|QFts+obu1oj0f%KNH_js^H>AmRdQZ;{v!h^isJGpL;f`$0iH zng;r8BzFZWzLii(Q1oaMuQ3?L~_+owgu`^6y#P<0mVuU^gIy7 z0JR>cdoMIli3a;Fflq#FW7Q$xQ6XIG_tmQkC}MzEn;JTPbrdtf&NyJfK`o&QYMBtL z0J15FWd*x;lu_=3uoxgAz~=xO0qS}Y^ihI9j0ds(80fUx2SIAEQvq2M3_2qSO9t!| zFe0!YP5}bmFcMuleUFDSbXw~QJT4TYN`gE?q~xxS`B3?V4oq_C8vg7f4Z*{)Mkj24t_B6DiEkI20kgcKgiswp?v`FRypMyh}0ue zbGpL}M5umW-=_qD2r62`2V3;h3S?043ht^5o$kK_)#Zv1h?0W6QJ^vt?6(2Yc)D5 z0`KQ3`SmSCI2Uz=OeVIPivo)4km4C|atcvxn#%h<<{o z4A|9zV52f><4<>}g179bKp>BXAQy;ZU?8w7<1{)6Y$xJFoL1JHGIbCc1&kWx(7@|pFg8f9Nd;5VGt`33R7I@zV*qa3Mx*!LDk$Tq?l(Fc5nRcI;?Cz(WUh z6sJ`pU`LlK%BcWj2797GmA^6s_Su7c268_Yv_D9M8Dw2S{jv(m0>FL<5a9v)yg=n9 z*g>oYf&3#f_aMfq2!ZS($fYA!ft||WO)3D5f!zi^4)Ed?PD8CcPfNMZthds#hA*hJhZBW|@ykJnz1w0W@*Krze0g)!~ zeg_bb0q?>=_%O&lD9a@Q;5DdhMc65b5i6qhM*}*ox6wd*gTzcgY!KiH2K@(kBVtQI zmQ7L46*M65o-ri|)Ho_Y;Eg<|dzY0^sQ_NQ1_a(|0wR;A`{qH_v@(j+;GI4i@|8V} z`hv)m1_Zb@@T^bs1|Wt9_8o#cM`Z}qwx~m3ZxcX$gzYKFR|CW~5E}!k`9M4vU^dvZ zrGc&)(j$y~UQYKTAU5e#&rWyPfcbKGDT*2OF+vS1NRfESlBjU54m~MT zQYc`a5uTwaNwKmA!Y7@zf|MzWB_t9l;(zdQ@(oguWHiPp+fD1H#V1t`d7EN*83(;p1j`IG`zJAx2~-Yw~WEpFW0lP z`?q$cq(kt1cE$#Ks+LxI2iLbpO1T-L@x{IZMp~MrrN53Y>h7G}YR)SYkM)-}_O}^PRl8h3X3bNDk>Xl`F!|-G=@+lq$P;UM4alzg5o@O zexX2AT*hMy>szYxM3khowM`rNl=?rV7&A z%Zh3mTT1fs1bO*+d@4GXz;Fsf^6bjNY2!>K+b*N@w$V{JgR}2{VnA!)9}GrTM%ZHZ#4aslKg; zM^De>i-iJ_fG5n2%M$T(I5|Q-i^#9L61wL(^Au!wA7Tu zq(n-434C@EB|bShKAJ*FqEeI6)061Q$(b|;HHpb)wH2rPc>5F6k|~KvEG{R%w6v_M zw7wLc>4u7e#@_DE&N_lSIVCDlpN1JOa8(D5RUwq2Q@fIv_8^^~Fo<2N$eD}e_d$)Jz z2g{||xtt(e6o(Qk+ajrI|CW%c0bIYqM ziz6*LX&Kecojv{CeUkjr+QPDuoFo$7-!Fp7%vAEo9YG#%| zD3avo=ZVE4NuE?J5{V@eX`VzR5{kqec>0+Fflw&>SS*%^B~odgR3es2r9vTJD9&YN zWo5B4Sqyk(*c^5)o0*ycf5c=k=^5!XIxRgVH7y0!w2e(fiIHOy(OpbczhjqR!YLHIsfV}rfbi%Z@8 zD_f&w+zjF9d`}@OBO|Y6pq`o6-8H$pb2C}2Y$k`3&14I* z_@%ro7Q2YY7i6SmvC>j%2D)>LxU{V7Y&J_M;^pKDB{j_@{H$DlP8O3d6;~B8`Bk~J z!b)Kdyb`(m;>z;Ul0r!~hr@=ap3fI#rf~9j+{#*MfrObW<_hv8oNQh}kyIi|PNSzM zW^!1C#rfqWC4639c8-vpk(SEj=jIiQizErKLc~&YXzk@CHT89Q@M;MKd=8x<;&Sqe zxJ8u$UMeLanVQ&DoL^K@ASxEI`8m=`NnV4PQ&z<9^QDQo(D;nBpiBwKri6AGlpa||1KZ{CX2w7=qGGy$nDXHn^ zW@Rw5`MG>)iB!r;XTj5v!0%ZxsIT?w` zv5cn1_WpsszW%|X!Jfg<;kM?^k_d8udqU@Q7b7_}iB(_MJuyBpJ_%#M*y!j;Q%!Xv z!v*W=9XoJmV`XJ|yAK}RfAHYm-3Plx zZGy6;JI8kqCisE^L1I*}w}+j%X;SmR?Bdem+(;WcB`%TQ-qqLL2SaXcera)b5-G$# zfJ_(iC9ocfIMmccDvO;Z&Jzh43^qq9TRTBoT8xjKA3l`M&n8F5CS}m0Mfq9uq(mwW z*3%poD=Q}>J~D+)&*bI6aGI6PqB1f$xjddg$QSV8pSfHPhs)){zrgs*;bzh4)N~jq z;PuLuePy%ZBL~J2c6JskiXnoiH4XHe6VQmE84nbxPJBqt{&#mB|R z-G+}lw~ubikE5fbTel7mZ^Fm^&gR%eFcz3FM4!(Y`OCp)Pb$g|9=GM`z+Y8fUE!(?eQ~O7Abz*k$!q#LBKbu|FH_^%| z8yQ(X?5(ORnH_KFofxcP(&>5g+u|H}!Z;!Uo0Xd{D5%Nf^8{65aeg*Dv8=4l=}}Rc zkjcr-pJSi_bD~l@; z6qgrN6j15uDM^{U%-;Iy#)evnBwr|%2zgmK`65AKsj$38BBCWG(=t*As;g?MiiCyI zToEs?Qj*`4FRZGSz@w~YQBqP;5*sTkDhn74j;JV~Cluus7mE3L1=5@XX#q7RH90x4 zx1pxFi%HAm6;?qg zbY>3VRcUKn|7Gx(R(P529O{FF#rDbGNGt+6=84P+lo6GL1%ppdn(K6B# zQGZ)0dt-efIdtvpemRRrQ;Xo;*FC6^ctFsT6WZ zfG^II**>(ew!XSD-kr~7rb)Z|h6hKa`4vrNRpq?&I3giDjwzKC7Uma7`3y#CCWn(# zP+X9got?`s;uq8wis&>-kTX6!f+@_7PDn^&GUDLc%a$sYflaWA#?SE!& zb|!46Stt4rt2+9N&7%QGdbczkJbYky<= z&Yh=E9zTEa%B!z9S{WJJYgq+E5j~l$Wi{iA>pT0m?mu6>_2S_@c&VOX-Ho)d?jan0 zd{j}nw5YIlYG(WP;Z69g-J3_Z?;LwL8eaC}S8-qcTiFF=f{f@-KmEgdPafZ%s`d35dE@?eDJ?!2Yik+QI9E+ufB|*? zFQ0$<&gOVmC*LIC=AYl)FHB=pch^W7ru$NJk8VGD`t;|&KVNSz$mNsu@z4JJ#*|b# z`DlA_Wu}-&9DDth=MNwK^6pwk13x|zr{%wNbGNr>==Sp6N3DrrF}?5n@tv0+Kl$=* zdwzauxQ~riNbl-S=g{Nb{T+$FTf+R?AAa!e8?U^0ccUaLnHb?=bc1;F!N%V6!|A33 zcdU2Un;(7f+G{Ufesia#GLsxlaW>LReec7!Ug_hfg}6I9rLWw5_03239zK0B$S=x@ zWhFXUnl}IW$xzbQcSr{2;UA=ZqQ_IK}>*i>F?cAA* zm#<#Ea`l?7p`Nyzg|Uw2uFxPbm{Unt?SpdZfI-YxN+@@u7k6qzLu`Oo`Jc&xz@GI7cZXN9)6y# zj=r87?1TzptsO(c>`YAcE}lDo=G?jS=g(cZaOKL?>+oZ2&CJbhe8e-8Q%h6BHPqPZ zCm+54^2dMt_z!>l_~Va0{P2$s*7^q40m7EPwZX3HjO3={_dj^&=^sA*>~DYj{BQ8r z=N|UP79K%q{I)46ot|C2{OrYxmyVvj{@y2l`O9D66aI#Cva}2J4~{M@k0MGc`wpKx zeerZ}Wpn4H4?l)a`RiZ(JnS6;9DT?s6ufAlzIox`&aL(7zJZ#BH{W~j{SQ9+V_=BA zMF2jM%_Kxh#Tg7%>0n1|Q*CYC{L@!nee=z?-VOIK(F|k@lZnJQF_jzxrL}dpRpjTF zjqU8;d-Cj+H>1Kre8ZBNINyY*s2mt22G&PAN-N9h`R!dTwO!M@39#h}bBiRhxI_Xm zfn8n6OAPQL#oLov84+F~G3g2M;SrIMX-r;vWO8I;^>Ar*5kdF5Lm(|a)XUiw7oL-v zAS^GfDWQ?8nS%wQvzxWn<*@mwhK|W5Nrtznk!{t3Cy$Pf zZtfpfq{aI=xCL5hT~C04XITn)S(}*}k%l*JA8)LzZSFIJql27715FL}E1vWeCcD^J znwpv#2V@siw0HFmjLoq^L!u(+k@k9#lT`^W))p3KCZ;BOx@IvMiAq3lLn*=&rTbml{>KU6GYhJpnZES9C zq-S6ZtB0AJr-`nCiG`&V{9t1fGxMuwuj$;-H8e9bGSJu6H@u-|qHkcT4=batiHVt+ zrNKG%vzIh=3=9no^!4@hjr4V4WxjIxA`BV&#+K$rnwKt|yKv+a=iH*Q?NaYI}0nwG`23uiRWT)1%Y;?)~ErdCEbu3px>b`@4! zEge1h_Ig*&U(z=;fUmfAUE9FY;L4Rtm#%1D)zrLtT}#){z}U#jFO(4LuWRmwGttq% zasKStGv_W`yl@`A-8C&89X;JMDwi&v)50Z?$nm7e0CR(oqWaq6=H^z}(bU-3qM@dy zhPmv7^Gkrjyv-~K+_KU#NmWBfPfvGmZ%q# zfMgbrpPi9L3un~8O5V`ad`L9mV<{98U0P65QBhf~tEr)& z?ds?1U}YZc=HO;w9|MI3`UXLa>`b1dpt#h`00w9*PS?r@>ku03;l;{JiVBM$c|!4| zkN|QT+s4Y?&t1pL9*V*_Sy;G{qC>F8rdZdj_Wo|VXLZc1Y)x)hI9NG(g!|ijnpqMU zu`IgtxwAJ+1HG)ZFJIR&_VscO2n)h{JJ=8tp^$J+I4#-Z$~g^FAFPR?zLAM(a5y0% zf*j$EwMfbgcX5sP@yBUvTs(8e&dEea2iDZ!xWp(*T9O~uInLMGpAg~W;iP@(;(1*^ ztd*IevG!FOEj^vhiNiWrI=JW5W%zixnOwSX;SAQ#$~2mhNbr(oGjmzA5KG%LMoo8y zc#cM9`WMfiKX2u3V_DSR-rmw(U!0#3VqkB~&Eyr~>BeN7w2ZJluY_!gw^B*Y{mW1hRU%7hqVnAKT$YfW0 zXYa6|nW?^(g|+6jE3DzPU}qiJzFobp>5@Rt62Z$`)rhy&v2zM^)xQ|f%5c7X@w(RK zi<+=<7?@fHN2hXmd|xLU2aiB!tutxq`bOHCSK-TVT)uQ&Ti?{m#25!9ni^oeovd$Y zTyfOBu6O<1nRBr1y?FM5wwaBsnVyce0c?CtP0pXaeDxZvVw&eKYHHp%uW{k3rjC)d zjj17g#idKIKEd}qd+zMT>oSviMIFA$H9dIkjg5^B&Rx;Eq;cV#hMMZx^XIQ>>1ka( zdjY=L4IOQ5T_ZCi!)uz? _m)YR0^o;#uiOY6F}j)94> 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