From fa7337b37b0024e70bee3c638f969451dc4d7351 Mon Sep 17 00:00:00 2001 From: Sun Peng Date: Thu, 6 Jul 2023 12:55:23 +0800 Subject: [PATCH] initial commit --- CHANGE_LOG.md | 0 LICENSE | 201 ++++ README-zh-Hans.md | 171 ++++ README.md | 177 ++++ configs/7B_sft.py | 129 +++ doc/en/install.md | 58 ++ doc/en/structure.md | 25 + doc/en/train_performance.md | 66 ++ doc/en/usage.md | 209 ++++ doc/imgs/compass_support.svg | 1 + doc/imgs/flops.png | Bin 0 -> 203184 bytes doc/imgs/license.svg | 1 + doc/imgs/logo.svg | 23 + doc/imgs/pack_into_one.png | Bin 0 -> 285887 bytes doc/imgs/robot.png | Bin 0 -> 4312 bytes doc/imgs/train_performance.png | Bin 0 -> 400478 bytes doc/imgs/user.png | Bin 0 -> 3809 bytes doc/install.md | 58 ++ doc/structure.md | 25 + doc/train_performance.md | 62 ++ doc/usage.md | 191 ++++ internlm/__init__.py | 9 + internlm/apis/__init__.py | 0 internlm/apis/inference.py | 848 +++++++++++++++ internlm/core/__init__.py | 9 + internlm/core/context/__init__.py | 47 + internlm/core/context/parallel_context.py | 548 ++++++++++ .../core/context/process_group_initializer.py | 334 ++++++ internlm/core/context/random.py | 131 +++ internlm/core/engine.py | 190 ++++ internlm/core/gradient_handler.py | 76 ++ internlm/core/naive_amp.py | 130 +++ internlm/core/no_pipeline_scheduler.py | 279 +++++ internlm/core/trainer.py | 155 +++ internlm/data/__init__.py | 13 + internlm/data/batch_sampler.py | 359 +++++++ internlm/data/collaters.py | 88 ++ internlm/data/dummy_dataset.py | 44 + internlm/data/packed_dataset.py | 376 +++++++ internlm/data/single_dataset.py | 117 +++ internlm/data/utils.py | 15 + internlm/initialize/__init__.py | 9 + internlm/initialize/initialize_tensor.py | 34 + internlm/initialize/initialize_trainer.py | 84 ++ internlm/initialize/launch.py | 296 ++++++ internlm/model/__init__.py | 19 + internlm/model/embedding.py | 209 ++++ internlm/model/linear.py | 176 ++++ internlm/model/loss.py | 54 + internlm/model/modeling_internlm.py | 511 ++++++++++ internlm/model/multi_head_attention.py | 170 ++++ internlm/model/utils.py | 73 ++ internlm/solver/__init__.py | 8 + internlm/solver/beta2_scheduler.py | 36 + internlm/solver/lr_scheduler.py | 135 +++ internlm/solver/optimizer/__init__.py | 6 + .../solver/optimizer/hybrid_zero_optim.py | 818 +++++++++++++++ internlm/solver/optimizer/store.py | 284 ++++++ internlm/solver/optimizer/utils.py | 315 ++++++ internlm/solver/pipeline_utils.py | 34 + internlm/utils/__init__.py | 0 internlm/utils/checkpoint.py | 269 +++++ internlm/utils/common.py | 248 +++++ internlm/utils/logger.py | 41 + internlm/utils/megatron_timers.py | 111 ++ internlm/utils/model_checkpoint.py | 289 ++++++ internlm/utils/parallel.py | 48 + internlm/utils/registry.py | 71 ++ internlm/utils/storage_manager.py | 351 +++++++ requirements/runtime.txt | 14 + requirements/torch.txt | 4 + sonar-project.properties | 2 + tools/README.md | 53 + tools/README_EN.md | 50 + tools/V7_sft.model | Bin 0 -> 1658691 bytes tools/alpaca_tokenizer.py | 171 ++++ tools/convert2hf.py | 174 ++++ tools/tokenizer.py | 194 ++++ tools/transformers/README.md | 22 + tools/transformers/configuration_internlm.py | 120 +++ tools/transformers/intern_moss_example.py | 69 ++ tools/transformers/internlm_sft_on_moss.py | 105 ++ tools/transformers/modeling_internlm.py | 962 ++++++++++++++++++ tools/transformers/tokenization_internlm.py | 242 +++++ train.py | 509 +++++++++ version.txt | 1 + web_demo.py | 253 +++++ 87 files changed, 12809 insertions(+) create mode 100644 CHANGE_LOG.md create mode 100644 LICENSE create mode 100644 README-zh-Hans.md create mode 100644 README.md create mode 100644 configs/7B_sft.py create mode 100644 doc/en/install.md create mode 100644 doc/en/structure.md create mode 100644 doc/en/train_performance.md create mode 100644 doc/en/usage.md create mode 100644 doc/imgs/compass_support.svg create mode 100644 doc/imgs/flops.png create mode 100644 doc/imgs/license.svg create mode 100644 doc/imgs/logo.svg create mode 100644 doc/imgs/pack_into_one.png create mode 100644 doc/imgs/robot.png create mode 100644 doc/imgs/train_performance.png create mode 100644 doc/imgs/user.png create mode 100644 doc/install.md create mode 100644 doc/structure.md create mode 100644 doc/train_performance.md create mode 100644 doc/usage.md create mode 100644 internlm/__init__.py create mode 100644 internlm/apis/__init__.py create mode 100644 internlm/apis/inference.py create mode 100644 internlm/core/__init__.py create mode 100644 internlm/core/context/__init__.py create mode 100644 internlm/core/context/parallel_context.py create mode 100644 internlm/core/context/process_group_initializer.py create mode 100644 internlm/core/context/random.py create mode 100644 internlm/core/engine.py create mode 100644 internlm/core/gradient_handler.py create mode 100644 internlm/core/naive_amp.py create mode 100644 internlm/core/no_pipeline_scheduler.py create mode 100644 internlm/core/trainer.py create mode 100644 internlm/data/__init__.py create mode 100644 internlm/data/batch_sampler.py create mode 100644 internlm/data/collaters.py create mode 100644 internlm/data/dummy_dataset.py create mode 100644 internlm/data/packed_dataset.py create mode 100644 internlm/data/single_dataset.py create mode 100644 internlm/data/utils.py create mode 100644 internlm/initialize/__init__.py create mode 100644 internlm/initialize/initialize_tensor.py create mode 100644 internlm/initialize/initialize_trainer.py create mode 100644 internlm/initialize/launch.py create mode 100644 internlm/model/__init__.py create mode 100644 internlm/model/embedding.py create mode 100644 internlm/model/linear.py create mode 100644 internlm/model/loss.py create mode 100644 internlm/model/modeling_internlm.py create mode 100644 internlm/model/multi_head_attention.py create mode 100644 internlm/model/utils.py create mode 100644 internlm/solver/__init__.py create mode 100644 internlm/solver/beta2_scheduler.py create mode 100644 internlm/solver/lr_scheduler.py create mode 100644 internlm/solver/optimizer/__init__.py create mode 100644 internlm/solver/optimizer/hybrid_zero_optim.py create mode 100644 internlm/solver/optimizer/store.py create mode 100644 internlm/solver/optimizer/utils.py create mode 100644 internlm/solver/pipeline_utils.py create mode 100644 internlm/utils/__init__.py create mode 100644 internlm/utils/checkpoint.py create mode 100644 internlm/utils/common.py create mode 100644 internlm/utils/logger.py create mode 100644 internlm/utils/megatron_timers.py create mode 100644 internlm/utils/model_checkpoint.py create mode 100644 internlm/utils/parallel.py create mode 100644 internlm/utils/registry.py create mode 100644 internlm/utils/storage_manager.py create mode 100644 requirements/runtime.txt create mode 100644 requirements/torch.txt create mode 100644 sonar-project.properties create mode 100644 tools/README.md create mode 100644 tools/README_EN.md create mode 100644 tools/V7_sft.model create mode 100644 tools/alpaca_tokenizer.py create mode 100644 tools/convert2hf.py create mode 100644 tools/tokenizer.py create mode 100644 tools/transformers/README.md create mode 100644 tools/transformers/configuration_internlm.py create mode 100644 tools/transformers/intern_moss_example.py create mode 100644 tools/transformers/internlm_sft_on_moss.py create mode 100644 tools/transformers/modeling_internlm.py create mode 100644 tools/transformers/tokenization_internlm.py create mode 100644 train.py create mode 100644 version.txt create mode 100644 web_demo.py diff --git a/CHANGE_LOG.md b/CHANGE_LOG.md new file mode 100644 index 0000000..e69de29 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README-zh-Hans.md b/README-zh-Hans.md new file mode 100644 index 0000000..3a283fd --- /dev/null +++ b/README-zh-Hans.md @@ -0,0 +1,171 @@ +# InternLM + +
+ + +
 
+
+ 书生·浦语 官网 + + + HOT + + +
 
+
+ +[![license](./doc/imgs/license.svg)](https://github.com/open-mmlab/mmdetection/blob/main/LICENSE) + +[📘使用文档](./doc/usage.md) | +[🛠️安装教程](./doc/install.md) | +[📊训练性能](./doc/train_performance.md) | +[👀模型库](#model-zoo) | +[🆕Update News](./CHANGE_LOG.md) | +[🤔Reporting Issues](https://github.com/InternLM/InternLM/issues/new) + + +[English](./README.md) | +[简体中文](./README-zh-Hans.md) + + +
+ +## 简介 +InternLM ,即书生·浦语大模型,包含面向实用场景的70亿参数基础模型与对话模型 (InternLM-7B)。模型具有以下特点: +- 使用上万亿高质量预料,建立模型超强知识体系; +- 支持8k语境窗口长度,实现更长输入与更强推理体验; +- 通用工具调用能力,支持用户灵活自助搭建流程; + +提供了支持模型预训练的轻量级训练框架,无需安装大量依赖包,一套代码支持千卡预训练和单卡人类偏好对齐训练,同时实现了极致的性能优化,实现千卡训练下近90%加速效率。 + +## InternLM-7B + +### 性能评测 + +我们使用开源评测工具 [OpenCompass](https://github.com/internLM/OpenCompass/) 从学科综合能力、语言能力、知识能力、推理能力、理解能力五大能力维度对InternLM开展全面评测,部分评测结果如下表所示,欢迎访问[ OpenCompass 榜单 ](https://opencompass.org.cn/rank)获取更多的评测结果。 + +| 数据集\模型 | **InternLM-Chat-7B** | **InternLM-7B** | LLaMA-7B | Baichuan-7B | ChatGLM2-6B | Alpaca-7B | Vicuna-7B | +| -------------------- | --------------------- | ---------------- | --------- | --------- | ------------ | --------- | ---------- | +| C-Eval(Val) | 53.2 | 53.4 | 24.2 | 42.7 | 50.9 | 28.9 | 31.2 | +| MMLU | 50.8 | 51.0 | 35.2* | 41.5 | 46.0 | 39.7 | 47.3 | +| AGIEval | 42.5 | 37.6 | 20.8 | 24.6 | 39.0 | 24.1 | 26.4 | +| CommonSenseQA | 75.2 | 59.5 | 65.0 | 58.8 | 60.0 | 68.7 | 66.7 | +| BUSTM | 74.3 | 50.6 | 48.5 | 51.3 | 55.0 | 48.8 | 62.5 | +| CLUEWSC | 78.6 | 59.1 | 50.3 | 52.8 | 59.8 | 50.3 | 52.2 | +| CommonSenseQA | 75.2 | 59.5 | 60.0 | 58.8 | 60.0 | 68.7 | 66.7 | +| MATH | 6.4 | 7.1 | 2.8 | 3.0 | 6.6 | 2.2 | 2.8 | +| GSM8K | 34.5 | 31.2 | 10.1 | 9.7 | 29.2 | 6.0 | 15.3 | +| HumanEval | 14.0 | 10.4 | 14.0 | 9.2 | 9.2 | 9.2 | 11.0 | +| RACE(High) | 76.3 | 57.4 | 46.9* | 28.1 | 66.3 | 40.7 | 54.0 | + +- 以上评测结果基于 [OpenCompass 20230706](https://github.com/internLM/OpenCompass/) 获得(部分数据标注`*`代表数据来自原始论文),具体测试细节可参见 [OpenCompass](https://github.com/internLM/OpenCompass/) 中提供的配置文件。 +- 评测数据会因 [OpenCompass](https://github.com/internLM/OpenCompass/) 的版本迭代而存在数值差异,请以 [OpenCompass](https://github.com/internLM/OpenCompass/) 最新版的评测结果为主。 + +### Model Zoo +当前通过 InternLM 训练的 InternLM 7B 和 InternLM 7B Chat 已经开源,我们提供两种格式的模型权重以供使用。除了使用 Transformers 格式加载模型之外,还可以通过 InternLM 加载以下格式的权重直接进行继续预训练或人类偏好对齐训练 + +| 模型 | InternLM 格式权重下载地址 | Transformers 格式权重下载地址 | +| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | +| **InternLM 7B** | [![Open in OpenXLab](https://cdn-static.openxlab.org.cn/header/openxlab_models.svg)](https://openxlab.org.cn/models/detail/OpenLMLab/InternLM-7b) | [🤗internlm/intern-7b](https://huggingface.co/internlm/internlm-7b) | +| **InternLM Chat 7B** | [![Open in OpenXLab](https://cdn-static.openxlab.org.cn/header/openxlab_models.svg)](https://openxlab.org.cn/models/detail/OpenLMLab/InternLM-chat-7b) | [🤗internlm/intern-chat-7b](https://huggingface.co/internlm/internlm-chat-7b) + +**局限性:** 尽管在训练过程中我们非常注重模型的安全性,尽力促使模型输出符合伦理和法律要求的文本,但受限于模型大小以及概率生成范式,模型可能会产生各种不符合预期的输出,例如回复内容包含偏见、歧视等有害内容,请勿传播这些内容。由于传播不良信息导致的任何后果,本项目不承担责任。 + +### 通过 Transformers 加载 +通过以下的代码加载 InternLM 7B Chat 模型 +```python +>>> from transformers import AutoTokenizer, AutoModel +>>> tokenizer = AutoTokenizer.from_pretrained("internlm/internlm-chat-7b", trust_remote_code=True) +>>> model = AutoModel.from_pretrained("internlm/internlm-chat-7b", trust_remote_code=True, device='cuda') +>>> model = model.eval() +>>> response, history = model.chat(tokenizer, "你好", history=[]) +>>> print(response) +你好!有什么我可以帮助你的吗? +>>> response, history = model.chat(tokenizer, "请提供三个管理时间的建议。", history=history) +>>> print(response) +当然可以!以下是三个管理时间的建议: +1. 制定计划:制定一个详细的计划,包括每天要完成的任务和活动。这将有助于您更好地组织时间,并确保您能够按时完成任务。 +2. 优先级:将任务按照优先级排序,先完成最重要的任务。这将确保您能够在最短的时间内完成最重要的任务,从而节省时间。 +3. 集中注意力:避免分心,集中注意力完成任务。关闭社交媒体和电子邮件通知,专注于任务,这将帮助您更快地完成任务,并减少错误的可能性。 +``` + +### 通过前端网页对话 +可以通过以下代码启动一个前端的界面来与 InternLM Chat 7B 模型进行交互 +```bash +pip install streamlit==1.24.0 +pip install transformers==4.30.2 +streamlit run web_demo.py +``` +效果如下 + +![效果](https://github.com/InternLM/InternLM/assets/9102141/08ec4541-9126-4d5f-b5c0-53947bc1d8bb) + +### 基于InternLM高性能部署 + +我们使用 [LMDeploy](https://github.com/InternLM/LMDeploy) 完成 InternLM 的一键部署。 + +1. 首先安装 LMDeploy: + + ``` + python3 -m pip install lmdeploy + ``` + +2. 快速的部署命令如下: + + ``` + python3 -m lmdeploy.serve.turbomind.deploy InternLM-7B /path/to/internlm-7b/model hf + ``` + +3. 在导出模型后,你可以直接通过如下命令启动服务一个服务并和部署后的模型对话 + + ``` + python3 -m lmdeploy.serve.client {server_ip_addresss}:33337 + ``` + +[LMDeploy](https://github.com/InternLM/LMDeploy) 支持了 InternLM 部署的完整流程,请参考 [部署教程](https://github.com/InternLM/LMDeploy) 了解 InternLM 的更多部署细节。 + +## 微调&训练 + +### 预训练与微调使用教程 +请参考[使用教程](./doc/usage.md)开始InternLM的安装、数据处理、预训练与微调。 + +### 转换为 Transformers 格式使用 +通过 InternLM 进行训练的模型可以很轻松地转换为 HuggingFace Transformers 格式,方便与社区各种开源项目无缝对接。借助 `tools/convert2hf.py` 可以将训练保存的权重一键转换为 transformers 格式 +```bash +python convert2hf.py --src_folder origin_ckpt/ --tgt_folder hf_ckpt/ --tokenizer tokenizes/tokenizer.model +``` +转换之后可以通过以下的代码加载为 transformers +```python +>>> from transformers import AutoTokenizer, AutoModel +>>> model = AutoModel.from_pretrained("hf_ckpt/", trust_remote_code=True, device='cuda') +``` + + +## 训练系统 + +### 系统结构 +请参考[系统结构文档](./doc/structure.md)进一步了解。 + +### 训练性能 + +InternLM 深度整合了 Flash-Attention, Apex 等高性能模型算子,提高了训练效率。通过构建 Hybrid Zero 技术,实现计算和通信的高效重叠,大幅降低了训练过程中的跨节点通信流量。InternLM 支持 7B 模型从 8 卡扩展到 1024 卡,千卡规模下加速效率可高达 90%,训练吞吐超过 180TFLOPS,平均单卡每秒处理的 token 数量超过3600。下表为 InternLM 在不同配置下的扩展性测试数据: + +| GPU数量 | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 1024 | +| ---------------- | ---- | ---- | ---- | ---- | ----- | ----- | ----- | ------ | +| TKS | 4078 | 3939 | 3919 | 3944 | 3928 | 3920 | 3835 | 3625 | +| TFLOPS | 192 | 192 | 186 | 186 | 185 | 185 | 186 | 182 | + +TKS 代表平均每GPU每秒可以处理的 Token 数量。更多的性能测试数据可参考[训练性能文档](./doc/train_performance.md)进一步了解。 + + +## 贡献 + +我们感谢所有的贡献者为改进和提升 InternLM 所作出的努力。非常欢迎社区用户能参与进项目中来。请参考贡献指南来了解参与项目贡献的相关指引。 + +## 致谢 + +InternLM 代码库是一款由上海人工智能实验室和来自不同高校、企业的研发人员共同参与贡献的开源项目。我们感谢所有为项目提供新功能支持的贡献者,以及提供宝贵反馈的用户。 我们希望这个工具箱和基准测试可以为社区提供灵活高效的代码工具,供用户微调 InternLM 并开发自己的新模型,从而不断为开源社区提供贡献。特别鸣谢flash-attention (https://github.com/HazyResearch/flash-attention) 与 ColossalAI (https://github.com/hpcaitech/ColossalAI) 两项开源项目。 + +## 开源许可证 + +本仓库的代码依照 Apache-2.0 协议开源。InternLM 权重对学术研究完全开放,在获得官方的书面许可后,亦允许商业使用。申请商用许可与合作请联系 internlm@pjlab.org.cn。 diff --git a/README.md b/README.md new file mode 100644 index 0000000..aa88dce --- /dev/null +++ b/README.md @@ -0,0 +1,177 @@ +# InternLM + +
+ + +
 
+
+ InternLM + + + HOT + + +
 
+
+ +[![license](./doc/imgs/license.svg)](./LICENSE) +[![evaluation](./doc/imgs/compass_support.svg)](https://github.com/internLM/OpenCompass/) + +[📘Usage](./doc/en/usage.md) | +[🛠️Installation](./doc/en/install.md) | +[📊Train Performance](./doc/en/train_performance.md) | +[👀Model](#model-zoo) | +[🆕Update News](./CHANGE_LOG.md) | +[🤔Reporting Issues](https://github.com/InternLM/InternLM/issues/new) + + +[English](./README.md) | +[简体中文](./README-zh-Hans.md) + + +
+ +## Introduction + +InternLM has open-sourced a 7 billion parameter base model and a chat model tailored for practical scenarios. The model has the following characteristics: +- It leverages trillions of high-quality tokens for training to establish a powerful knowledge base. +- It supports an 8k context window length, enabling longer input sequences and stronger reasoning capabilities. +- It provides a versatile toolset for users to flexibly build their own workflows. + +Additionally, a lightweight training framework is offered to support model pre-training without the need for extensive dependencies. With a single codebase, it supports pre-training on large-scale clusters with thousands of GPUs, and fine-tuning on a single GPU while achieving remarkable performance optimizations. InternLM achieves nearly 90% acceleration efficiency during training on 1024 GPUs. + +## InternLM-7B + +### Performance Evaluation + +We conducted a comprehensive evaluation of InternLM using the open-source evaluation tool [OpenCompass](https://github.com/internLM/OpenCompass/). The evaluation covered five dimensions of capabilities: disciplinary competence, language competence, knowledge competence, inference competence, and comprehension competence. Here are some of the evaluation results, and you can visit the [OpenCompass leaderboard](https://opencompass.org.cn/rank) for more evaluation results. + +| Datasets\Models | **InternLM-Chat-7B** | **InternLM-7B** | LLaMA-7B | Baichuan-7B | ChatGLM2-6B | Alpaca-7B | Vicuna-7B | +| -------------------- | --------------------- | ---------------- | --------- | --------- | ------------ | --------- | ---------- | +| C-Eval(Val) | 53.2 | 53.4 | 24.2 | 42.7 | 50.9 | 28.9 | 31.2 | +| MMLU | 50.8 | 51.0 | 35.2* | 41.5 | 46.0 | 39.7 | 47.3 | +| AGIEval | 42.5 | 37.6 | 20.8 | 24.6 | 39.0 | 24.1 | 26.4 | +| CommonSenseQA | 75.2 | 59.5 | 65.0 | 58.8 | 60.0 | 68.7 | 66.7 | +| BUSTM | 74.3 | 50.6 | 48.5 | 51.3 | 55.0 | 48.8 | 62.5 | +| CLUEWSC | 78.6 | 59.1 | 50.3 | 52.8 | 59.8 | 50.3 | 52.2 | +| CommonSenseQA | 75.2 | 59.5 | 60.0 | 58.8 | 60.0 | 68.7 | 66.7 | +| MATH | 6.4 | 7.1 | 2.8 | 3.0 | 6.6 | 2.2 | 2.8 | +| GSM8K | 34.5 | 31.2 | 10.1 | 9.7 | 29.2 | 6.0 | 15.3 | +| HumanEval | 14.0 | 10.4 | 14.0 | 9.2 | 9.2 | 9.2 | 11.0 | +| RACE(High) | 76.3 | 57.4 | 46.9* | 28.1 | 66.3 | 40.7 | 54.0 | + +- The evaluation results were obtained from[OpenCompass 20230706](https://github.com/internLM/OpenCompass/) (some data marked with *, which menas come from the original papers), and evaluation configuration can be found in the configuration files provided by [OpenCompass](https://github.com/internLM/OpenCompass/). +- The evaluation data may have numerical differences due to the version iteration of [OpenCompass](https://github.com/internLM/OpenCompass/), so please refer to the latest evaluation results of [OpenCompass](https://github.com/internLM/OpenCompass/). + +### Model Zoo +InternLM 7B and InternLM 7B Chat, trained using InternLM, have been open-sourced. We provide two formats of model weights for use. In addition to loading the models using the Transformers format, you can also load the weights directly using InternLM for further pre-training or human preference alignment training. + +| Model | InternLM Format Weight Download Link | Transformers Format Weight Download Link | +| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | +| **InternLM 7B** | [![Open in OpenXLab](https://cdn-static.openxlab.org.cn/header/openxlab_models.svg)](https://openxlab.org.cn/models/detail/OpenLMLab/InternLM-7b) | [🤗internlm/intern-7b](https://huggingface.co/internlm/internlm-7b) | +| **InternLM Chat 7B** | [![Open in OpenXLab](https://cdn-static.openxlab.org.cn/header/openxlab_models.svg)](https://openxlab.org.cn/models/detail/OpenLMLab/InternLM-chat-7b) | [🤗internlm/intern-chat-7b](https://huggingface.co/internlm/internlm-chat-7b) | + + +**Limitations:** Although we have made efforts to ensure the safety of the model during the training process and to encourage the model to generate text that complies with ethical and legal requirements, the model may still produce unexpected outputs due to its size and probabilistic generation paradigm. For example, the generated responses may contain biases, discrimination, or other harmful content. Please do not propagate such content. We are not responsible for any consequences resulting from the dissemination of harmful information. + +### Import from Transformers +To load the InternLM 7B Chat model using Transformers, use the following code: +```python +>>> from transformers import AutoTokenizer, AutoModel +>>> tokenizer = AutoTokenizer.from_pretrained("internlm/internlm-chat-7b", trust_remote_code=True) +>>> model = AutoModel.from_pretrained("internlm/internlm-chat-7b", trust_remote_code=True, device='cuda') +>>> model = model.eval() +>>> response, history = model.chat(tokenizer, "hello", history=[]) +>>> print(response) +Hello! How can I help you today? +>>> response, history = model.chat(tokenizer, "please provide three suggestions about time management", history=history) +>>> print(response) +Sure, here are three tips for effective time management: + +1. Prioritize tasks based on importance and urgency: Make a list of all your tasks and categorize them into "important and urgent," "important but not urgent," and "not important but urgent." Focus on completing the tasks in the first category before moving on to the others. +2. Use a calendar or planner: Write down deadlines and appointments in a calendar or planner so you don't forget them. This will also help you schedule your time more effectively and avoid overbooking yourself. +3. Minimize distractions: Try to eliminate any potential distractions when working on important tasks. Turn off notifications on your phone, close unnecessary tabs on your computer, and find a quiet place to work if possible. + +Remember, good time management skills take practice and patience. Start with small steps and gradually incorporate these habits into your daily routine. +``` + +### Dialogue +You can interact with the InternLM Chat 7B model through a frontend interface by running the following code: +```bash +pip install streamlit==1.24.0 +pip install transformers==4.30.2 +streamlit run web_demo.py +``` +The effect is as follows + +![demo](https://github.com/InternLM/InternLM/assets/9102141/08ec4541-9126-4d5f-b5c0-53947bc1d8bb) + +### Deployment + +We use [LMDeploy](https://github.com/InternLM/LMDeploy) to complete the one-click deployment of InternLM. + +1. First, install LMDeploy: + + ``` + python3 -m pip install lmdeploy + ``` + +2. Use the following command for quick deployment: + + ``` + python3 -m lmdeploy.serve.turbomind.deploy InternLM-7B /path/to/internlm-7b/model hf + ``` + +3. After exporting the model, you can start a server and have a conversation with the deployed model using the following command: + + ``` + python3 -m lmdeploy.serve.client {server_ip_addresss}:33337 + ``` + +[LMDeploy](https://github.com/InternLM/LMDeploy) provides a complete workflow for deploying InternLM. Please refer to the [deployment tutorial](https://github.com/InternLM/LMDeploy) for more details on deploying InternLM. + +## Fine-tuning & Training + +### Pre-training and Fine-tuning Tutorial +Please refer to [Usage Tutorial](./doc/en/usage.md) to start InternLM installation, data processing, pre-training and fine-tuning. + +### Convert to Transformers Format +The model trained by InternLM can be easily converted to HuggingFace Transformers format, which is convenient for seamless docking with various open source projects in the community. With the help of `tools/convert2hf.py`, the weights saved during training can be converted into transformers format with one command +```bash +python convert2hf.py --src_folder origin_ckpt/ --tgt_folder hf_ckpt/ --tokenizer tokenizes/tokenizer.model +``` +After conversion, it can be loaded as transformers by the following code +```python +>>> from transformers import AutoTokenizer, AutoModel +>>> model = AutoModel.from_pretrained("hf_ckpt/", trust_remote_code=True, device='cuda') +``` + + +## Training System + +### System Architecture +Please refer to the [System Architecture document](./doc/en/structure.md) for further details. + +### Training Performance + +InternLM deeply integrates Flash-Attention, Apex and other high-performance model operators to improve training efficiency. By building the Hybrid Zero technique, it achieves efficient overlap of computation and communication, significantly reducing cross-node communication traffic during training. InternLM supports expanding the 7B model from 8 GPUs to 1024 GPUs, with an acceleration efficiency of up to 90% at the thousand-GPU scale, a training throughput of over 180 TFLOPS, and an average of over 3600 tokens per GPU per second. The following table shows InternLM's scalability test data at different configurations: + +| Number of GPUs | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 1024 | +| -------------- | ------ | ------- | ------- | ------- | -------- | -------- | -------- | --------- | +| TGS | 4078 | 3939 | 3919 | 3944 | 3928 | 3920 | 3835 | 3625 | +| TFLOPS | 192 | 192 | 186 | 186 | 185 | 185 | 186 | 182 | + +TGS represents the average number of tokens processed per GPU per second. For more performance test data, please refer to the [Training Performance document](./doc/en/train_performance.md) for further details. + + +## Contribution + +We appreciate all the contributors for their efforts to improve and enhance InternLM. Community users are highly encouraged to participate in the project. Please refer to the contribution guidelines for instructions on how to contribute to the project. + +## Acknowledgements + +InternLM codebase is an open-source project contributed by Shanghai AI Laboratory and researchers from different universities and companies. We would like to thank all the contributors for their support in adding new features to the project and the users for providing valuable feedback. We hope that this toolkit and benchmark can provide the community with flexible and efficient code tools for fine-tuning InternLM and developing their own models, thus continuously contributing to the open-source community. Special thanks to the two open-source projects, flash-attention (https://github.com/HazyResearch/flash-attention) and ColossalAI (https://github.com/hpcaitech/ColossalAI). + +## Open Source License + +The code in this repository is open-source under the Apache-2.0 license. The InternLM weights are fully open for academic research and also allow commercial use with written permission from the official team. For inquiries about commercial licenses and collaborations, please contact internlm@pjlab.org.cn. diff --git a/configs/7B_sft.py b/configs/7B_sft.py new file mode 100644 index 0000000..b757ae6 --- /dev/null +++ b/configs/7B_sft.py @@ -0,0 +1,129 @@ +JOB_NAME = "7b_train" + +SEQ_LEN = 2048 +HIDDEN_SIZE = 4096 +NUM_ATTENTION_HEAD = 32 +MLP_RATIO = 8 / 3 +NUM_LAYER = 32 +VOCAB_SIZE = 103168 + +# Ckpt folder format: +# fs: 'local:/mnt/nfs/XXX' +# oss: 'boto3:s3://model_weights/XXX' +MODEL_ONLY_FOLDER = "local:llm_ckpts/xxxx" +SAVE_CKPT_FOLDER = "local:llm_ckpts" +LOAD_CKPT_FOLDER = "local:llm_ckpts/49" +ckpt = dict( + # Path to save training ckpt. + save_ckpt_folder=SAVE_CKPT_FOLDER, + # Path to continue training ckpt (load model weights and scheduler/context states). + # load_ckpt_folder=LOAD_CKPT_FOLDER, + # Path to initialize with given model weights. + # load_model_only_folder=MODEL_ONLY_FOLDER, + checkpoint_every=50, + # Wheter to load optimizer states when continuing training. + load_optimizer=True, +) + +TRAIN_FOLDER = "/path/to/dataset" +data = dict( + seq_len=SEQ_LEN, + # micro_num means the number of micro_batch contained in one gradient update + micro_num=4, + # packed_length = micro_bsz * SEQ_LEN + micro_bsz=2, + pack_sample_into_one=False, + total_steps=50000, + skip_batches="", + rampup_batch_size="", + # Datasets with less than 50 rows will be discarded + min_length=50, + # train_folder=TRAIN_FOLDER, +) + +grad_scaler = dict( + fp16=dict( + # the initial loss scale, defaults to 2**16 + initial_scale=2**16, + # the minimum loss scale, defaults to None + min_scale=1, + # the number of steps to increase loss scale when no overflow occurs + growth_interval=1000, + ), + # the multiplication factor for increasing loss scale, defaults to 2 + growth_factor=2, + # the multiplication factor for decreasing loss scale, defaults to 0.5 + backoff_factor=0.5, + # the maximum loss scale, defaults to None + max_scale=2**24, + # the number of overflows before decreasing loss scale, defaults to 2 + hysteresis=2, +) + +hybrid_zero_optimizer = dict( + # Enable low_level_optimzer overlap_communication + zero_overlap_communication=True, + # bucket size for nccl communication params + reduce_bucket_size=512 * 1024 * 1024, + # grad clipping + clip_grad_norm=1.0, +) + +loss = dict( + label_smoothing=0, +) + +adam = dict( + lr=1e-4, + adam_beta1=0.9, + adam_beta2=0.95, + adam_beta2_c=0, + adam_eps=1e-8, + weight_decay=0.01, +) + +lr_scheduler = dict( + total_steps=data["total_steps"], + init_steps=0, # optimizer_warmup_step + warmup_ratio=0.01, + eta_min=1e-5, + last_epoch=-1, +) + +beta2_scheduler = dict( + init_beta2=adam["adam_beta2"], + c=adam["adam_beta2_c"], + cur_iter=-1, +) + +model = dict( + checkpoint=False, + num_attention_heads=NUM_ATTENTION_HEAD, + embed_split_hidden=True, + vocab_size=VOCAB_SIZE, + embed_grad_scale=1, + parallel_output=True, + hidden_size=HIDDEN_SIZE, + num_layers=NUM_LAYER, + mlp_ratio=MLP_RATIO, + apply_post_layer_norm=False, + dtype="torch.bfloat16", + norm_type="rmsnorm", + layer_norm_epsilon=1e-5, +) +""" +zero1 parallel: + 1. if zero1 <= 0, The size of the zero process group is equal to the size of the dp process group, + so parameters will be divided within the range of dp. + 2. if zero1 == 1, zero is not used, and all dp groups retain the full amount of model parameters. + 3. zero1 > 1 and zero1 <= dp world size, the world size of zero is a subset of dp world size. + For smaller models, it is usually a better choice to split the parameters within nodes with a setting <= 8. +pipeline parallel: pipeline parallel size, only 1 is accepted currently. +tensor parallel: tensor parallel size, usually the number of GPUs per node, only 1 is accepted currently. +""" +parallel = dict( + zero1=8, +) + +cudnn_deterministic = False +cudnn_benchmark = False diff --git a/doc/en/install.md b/doc/en/install.md new file mode 100644 index 0000000..5ff70fb --- /dev/null +++ b/doc/en/install.md @@ -0,0 +1,58 @@ +## InternLM Installation + +### Environment Preparation +The required packages and corresponding version are shown as follows: +- Python == 3.10 +- GCC == 10.2.0 +- MPFR == 4.1.0 +- CUDA == 11.7 +- Pytorch == 1.13.1+cu117 +- Transformers >= 4.25.1 +- Flash-Attention == 23.05 +- GPU with Ampere or Hopper architecture (such as H100, A100) +- Linux OS + +After installing the above dependencies, some system environment variables need to be updated: +```bash +export CUDA_PATH={path_of_cuda_11.7} +export GCC_HOME={path_of_gcc_10.2.0} +export MPFR_HOME={path_of_mpfr_4.1.0} +export LD_LIBRARY_PATH=${GCC_HOME}/lib64:${MPFR_HOME}/lib:${CUDA_PATH}/lib64:$LD_LIBRARY_PATH +export PATH=${GCC_HOME}/bin:${CUDA_PATH}/bin:$PATH +export CC=${GCC_HOME}/bin/gcc +export CXX=${GCC_HOME}/bin/c++ +``` + +### Environment Installation +Clone the project `internlm` and its dependent submodules from the github repository, as follows: +```bash +git clone git@github.com:InternLM/InternLM.git --recurse-submodules +``` + +It is recommended to build a Python-3.10 virtual environment using conda and install the required dependencies based on the `requirements/` files: +```bash +conda create --name internlm-env python=3.10 -y +conda activate internlm-env +cd internlm +pip install -r requirements/torch.txt +pip install -r requirements/runtime.txt +``` + +Install flash-attention (version v1.0.5): +```bash +cd ./third_party/flash-attention +python setup.py install +cd ./csrc +cd fused_dense_lib && pip install -v . +cd ../xentropy && pip install -v . +cd ../rotary && pip install -v . +cd ../layer_norm && pip install -v . +cd ../../../../ +``` + +Install Apex (version 23.05): +```bash +cd ./third_party/apex +pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./ +cd ../../ +``` diff --git a/doc/en/structure.md b/doc/en/structure.md new file mode 100644 index 0000000..75cb95f --- /dev/null +++ b/doc/en/structure.md @@ -0,0 +1,25 @@ +## InternLM System Structure +The system code file structure is shown below: +```bash +├── configs # Configuration module, managing model and training-related parameters +│ └── 7B_sft.py # 7B_sft.py is a sample configuration file for the system demo +├── internlm # Main directory of the system code +│ ├── apis # Interface module, containing some interface functions related to inference, etc. +│ ├── core # Core module, managing parallel context and training scheduling engine for training and inference +│ │ ├── context # Context module, mainly responsible for initializing parallel process groups and managing parallel context +│ │ │ ├── parallel_context.py +│ │ │ └── process_group_initializer.py +│ │ ├── engine.py # Responsible for managing the training and evaluation process of the model +│ │ ├── no_pipeline_scheduler.py # Scheduler for parallel training +│ │ └── trainer.py # Responsible for managing the training engine and scheduler +│ ├── data # Data module, responsible for managing dataset generation and processing +│ ├── initialize # Initialization module, responsible for managing distributed environment startup and trainer initialization +│ ├── model # Model module, responsible for managing model structure definition and implementation +│ ├── solver # Responsible for managing the implementation of optimizer and lr_scheduler, etc. +│ └── utils # Auxiliary module, responsible for managing logs, storage, model registration, etc. +├── train.py # Main function entry file for model training +├── requirements # List of dependent packages for system running +├── third_party # Third-party modules on which the system depends, including apex and flash-attention, etc. +├── tools # Some script tools for processing and converting raw datasets, model checkpoint conversion, etc. +└── version.txt # System version number +``` diff --git a/doc/en/train_performance.md b/doc/en/train_performance.md new file mode 100644 index 0000000..995a0f1 --- /dev/null +++ b/doc/en/train_performance.md @@ -0,0 +1,66 @@ +## Training Performance + + +InternLM deeply integrates Flash-Attention, Apex, and other high-performance model operators to improve training efficiency. It achieves efficient overlap of computation and communication, significantly reducing cross-node communication traffic during training by building the Hybrid Zero technique. InternLM supports expanding the 7B model from 8 GPUs to 1024 GPUs, with an acceleration efficiency of up to 90% at the thousand-card scale, a training throughput of over 180 TFLOPS, and an average of over 3600 tokens per GPU per second. The following table shows InternLM's scalability test data at different configurations: + +| GPU Number | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 1024 | +| ---------------- | ---- | ---- | ---- | ---- | ----- | ----- | ----- | ------ | +| TGS (Tokens/GPU/Second) | 4078 | 3939 | 3919 | 3944 | 3928 | 3920 | 3835 | 3625 | +| TFLOPS | 192 | 192 | 186 | 186 | 185 | 185 | 186 | 182 | + + +We tested the performance of training the 7B model in InternLM using various parallel configurations on a GPU cluster. In each test group, the number of tokens processed per GPU in a single iteration remained consistent. The hardware and parameter configurations used in the tests are shown in the table below: + +| Hardware | Model | +| ----------------------- | ----------------------------- | +| GPU | nvidia_a100-sxm4-80gb | +| Memory | 2TB | +| Inter-machine bandwidth | 4 * 100Gb RoCE | +| CPU | 128 core Intel(R) Xeon(R) CPU | + +| Hyperparameters | tp=1 | tp=2 | +| --------------- | ---- | ---- | +| micro_num | 4 | 4 | +| micro_bsz | 2 | 4 | +| seq_len | 2048 | 2048 | + +The configuration of `zero1` in InternLM determines the allocation range of optimizer states. +- `zero1=-1` indicates that optimizer states are distributed across all data-parallel nodes (equivalent to Deepspeed Zero-1). +- In the case of `zero1=8, tp=1`, optimizer states are distributed within 8 GPUs in a single node, and the optimizer states remain consistent across different nodes. + +### Throughput Measurement + +Throughput is defined as TGS, the average number of tokens processed per GPU per second. In this test, the training configuration had `pack_sample_into_one=False` and `checkpoint=False`. The test results are shown in the following table. When using `zero1=8, tp=1`, InternLM achieves an acceleration efficiency of `88%` for training the 7B model with a thousand cards. + +| Parallel Configuration | 8 GPUs | 16 GPUs | 32 GPUs | 64 GPUs | 128 GPUs | 256 GPUs | 512 GPUs | 1024 GPUs | +| ---------------------- | ------ | ------- | ------- | ------- | -------- | -------- | -------- | --------- | +| (tp=1, zero1=-1) | 4062 | 3842 | 3752 | 3690 | 3571 | 3209 | 2861 | 2271 | +| (tp=1, zero1=8) | 4078 | 3939 | 3919 | 3944 | 3928 | 3920 | 3835 | 3625 | +| (tp=2, zero1=-1) | 3822 | 3595 | 3475 | 3438 | 3308 | 3094 | 2992 | 2785 | +| (tp=2, zero1=4) | 3761 | 3658 | 3655 | 3650 | 3651 | 3653 | 3589 | 3486 | + +
+ +
+ + +### FLOPS Testing + +The computational workload of model training is based on the FLOPS calculation method described in the [Megatron](https://deepakn94.github.io/assets/papers/megatron-sc21.pdf) paper. To ensure constant FLOPS during training, the test configuration had `pack_sample_into_one=True`. The training used the following configuration: + +Activation Checkpointing | tp | zero-1 | seq_len | micro_num | micro_bsz | +| --- | --- | ------ | ------- | --------- | --------- | +Disabled | 1 | 8 | 2048 | 4 | 2 | +Enabled | 1 | 8 | 2048 | 1 | 8 | + +The test results are shown in the table below. InternLM can achieve `>180 TFLOPS` for 7B model on thousand-card scale. + +| Activation Checkpoint | 8 GPUs | 16 GPUs | 32 GPUs | 64 GPUs | 128 GPUs | 256 GPUs | 512 GPUs | 1024 GPUs | +| --------------------- | ------ | ------- | ------- | ------- | -------- | -------- | -------- | --------- | +| Disabled | 183 | 177 | 176 | 174 | 173 | 173 | 173 | 160 | +| Enabled | 192 | 192 | 186 | 186 | 185 | 185 | 186 | 182 | + +
+ +
+ diff --git a/doc/en/usage.md b/doc/en/usage.md new file mode 100644 index 0000000..6a19609 --- /dev/null +++ b/doc/en/usage.md @@ -0,0 +1,209 @@ +## Pre-training and Fine-tuning Tutorial for InternLM + +To start a demo model training, you need to prepare three things: **installation**, **dataset preparation**, and **model training configuration**. In this guide, we will first cover the steps for dataset preparation and then briefly describe the model training configuration. + +### Installation + +Please refer to the [installation guide](./install.md) for instructions on how to install the necessary dependencies. + +### Dataset Preparation (Pre-training) + +The dataset for InternLM training consists of a series of `bin` and `meta` files. To generate the training dataset, you need to use the `tokenizer` tool to tokenize the raw text data. The tokenizer model can be imported by specifying the model path in the `tools/tokenizer.py` script. The current provided model is `V7.model`. If you want to use a different model, you can modify the model path directly in the `tokenizer.py` script. + +You can generate the `bin` and `meta` files for your raw data by running the following command, where the `raw_data_name` parameter represents the name of your raw data file, `input_file_type` represents the format of your raw data file (currently supports `txt`, `json`, and `jsonl`), and `bin` represents the path to save the generated `bin` files. + + +```bash +$ python tools/tokenizer.py --raw_data_name your_raw_data_file_name(without suffix) --input_file_type 'text' or 'json' or 'jsonl' --bin your_output_bin_path +``` + +Here is an example of data processing (only the data processing example for the `txt` format is provided here, the data processing process for `json` and `jsonl` is exactly the same as for `txt`): + +Given a file `raw_data.txt` containing the raw dataset, the raw dataset is shown below: + +```bash +Appreciate every detail in life to truly taste the flavor of happiness. +Dreams are the source of life’s motivation. Pursue them diligently to achieve your goals. +Learn to be tolerant and understanding to establish truly harmonious interpersonal relationships. +``` + +You can generate the `bin` and `meta` files by running the following command: + +```bash +$ python tools/tokenizer.py --raw_data_name raw_data --input_file_type 'text' --bin cn/output.bin +``` + +It should be noted that the generated `bin` files need to be saved in one of the following directories: `cn`, `en`, `code`, `ja`, `ar`, or `kaoshi`, depending on the type of dataset. + +Here, `cn` represents the Chinese dataset, `en` represents the English dataset, `code` represents the code dataset, `ja` represents the Japanese dataset, `ar` represents the Arabic dataset, and `kaoshi` represents the exam dataset. + +The format of the generated `bin` files is as follows: + +```python +{"tokens": [98655, 2317, 2922, 6649, 1595, 7856, 435, 2424, 442, 9556, 12807, 410, 17313, 446, 23331, 95746]} +{"tokens": [98655, 302, 1383, 269, 657, 410, 2687, 446, 2424, 98667, 269, 25220, 281, 523, 1874, 492, 1248, 38127, 4563, 442, 11227, 829, 8980, 95746]} +{"tokens": [98655, 24190, 442, 517, 15013, 649, 454, 8793, 442, 5849, 9556, 17917, 1369, 1084, 29890, 12021, 95746]} +``` +Each line in the `bin` file corresponds to each sentence in the original dataset, representing the tokens of each sentence (referred to as sequence below). + +The format of the generated `meta` file is as follows: + +```bash +(0, 16), (110, 24), (262, 17) +``` + +Each tuple in the `meta` file represents the meta information of each `sequence`, where the first element in the tuple indicates the `starting index` of each `sequence` among all `sequences`, and the second element indicates the number of `tokens` for each `sequence`. + +For example, the first `sequence` starts at index 0 and has 16 `tokens`. The second `sequence` starts at index 110 and has 24 `tokens`. + +The `bin` and `meta` file formats for `json` and `jsonl` type files are the same as for `txt`, so we won't go over them here. + +### Data Preparation (Fine-tuning) + +The data format for fine-tuning tasks is the same as for pre-training tasks, which consists of a series of `bin` and `meta` files. Let's take the Alpaca dataset as an example to explain the data preparation process for fine-tuning. + +1. Download the [Alpaca dataset](https://github.com/tatsu-lab/stanford_alpaca/blob/main/alpaca_data.json). + +2. Tokenize the Alpaca dataset using the following command: + +```shell +python tools/alpaca_tokenizer.py /path/to/alpaca_dataset /path/to/output_dataset /path/to/tokenizer --split_ratio 0.1 +``` + +It is recommended that users refer to alpaca_tokenizer.py to write new scripts to tokenize their own datasets + +### Training Configuration + +Taking the configuration file `configs/7B_sft.py` for the 7B demo as an example, let's discuss the data, model, and parallel configurations required to start a model training. + +#### Data Configuration +Here are the key parameters and their explanations for data configuration: + +```python +TRAIN_FOLDER = "/path/to/dataset" +SEQ_LEN = 2048 +data = dict( + seq_len=SEQ_LEN, # Length of the data samples, default value is 2048 + micro_num=1, # Number of micro_batches processed in one model parameter update, default value is 1 + micro_bsz=1, # Packed_length = micro_bsz * SEQ_LEN, the size of data processed in one micro_batch, default value is 1 + total_steps=50000, # Total number of steps to be executed, default value is 50000 + min_length=50, # If the number of lines in the dataset file is less than 50, it will be discarded + train_folder=TRAIN_FOLDER, # Dataset file path, default value is None; if train_folder is empty, training will be done using randomly generated datasets + pack_sample_into_one=False, # Logic for data arrangement, determines whether to calculate attention based on the seq_len dimension or the actual length of the sequence +) +``` + +
+ +
+ + +Currently, it supports passing the dataset file path `train_folder`, and the file format is required to be as follows: + +```bash +- folder + - code + train_000.bin + train_000.bin.meta +``` + +For detailed information about the dataset, please refer to the "Data Preparation" section. + +#### Model Configuration + +If you want to load a model checkpoint when starting the training, you can configure it as follows: + +```python +SAVE_CKPT_FOLDER = "local:/path/to/save/ckpt" +MODEL_ONLY_FOLDER = "local:/path/to/load/init/model/ckpt" +LOAD_CKPT_FOLDER = "local:/path/to/load/resume/ckpt" +ckpt = dict( + save_ckpt_folder=SAVE_CKPT_FOLDER, # Path to save the model and optimizer checkpoints + checkpoint_every=float("inf"), # Save a checkpoint every specified number of steps, default value is inf + load_model_only_folder=MODEL_ONLY_FOLDER, # Path to load the initial model weights, only load model weights without loading optimizer weights, training will start from the first step + load_ckpt_folder=LOAD_CKPT_FOLDER, # Path to load the weights of the model and optimizer for resuming training, training will resume from the specified step + load_optimizer=True, # Whether to load optimizer weights when resuming training, default value is True +) +``` + +Note: +- `load_model_only_folder` and `load_ckpt_folder` cannot be set at the same time. +- If the path starts with `local:`, it means the file is stored in the local file system. If it starts with `boto3:`, it means the file is stored in the remote OSS. + +The configuration for the model is as follows: + +```python +model_type = "INTERNLM" # Model type, default value is "INTERNLM", corresponding to the model structure initialization interface function +NUM_ATTENTION_HEAD = 32 +VOCAB_SIZE = 103168 +HIDDEN_SIZE = 4096 +NUM_LAYER = 32 +MLP_RATIO = 8 / 3 +model = dict( + checkpoint=False, + num_attention_heads=NUM_ATTENTION_HEAD, + embed_split_hidden=True, + vocab_size=VOCAB_SIZE, + embed_grad_scale=1, + parallel_output=True, + hidden_size=HIDDEN_SIZE, + num_layers=NUM_LAYER, + mlp_ratio=MLP_RATIO, + apply_post_layer_norm=False, + dtype="torch.bfloat16", + norm_type="rmsnorm", + layer_norm_epsilon=1e-5, +) +``` + +Note: Users can customize the model type name and model structure, and configure the corresponding model parameters. The model initialization function interface can be registered through the `MODEL_INITIALIZER` object in `utils/registry.py`. When initializing the model in the training main function `train.py`, the specified model initialization interface function can be obtained through the `model_type` configuration. + +#### Parallel Configuration + +Training parallel configuration example: + +```python +parallel = dict( + zero1=8, + pipeline=1, + tensor=1, +) +``` + +- zero1: zero parallel strategy, divided into the following three cases, default value is -1 + - When `size <= 0`, the size of the zero1 process group is equal to the size of the data parallel process group, so the optimizer state parameters will be split within the data parallel range. + - When `size == 1`, zero1 is not used, and all data parallel groups retain the complete optimizer state parameters. + - When `size > 1` and `size <= data_parallel_world_size`, the zero1 process group is a subset of the data parallel process group. +- pipeline: pipeline parallel size, currently only supports 1, default value is 1 +- tensor: tensor parallel size, usually the number of GPUs per node, default value is 1 + +Note: `Data parallel size = Total number of GPUs / Pipeline parallel size / Tensor parallel size` + +### Start Training + +After completing the data preparation and relevant training configurations mentioned above, you can start the demo training. The following examples demonstrate how to start the training in both slurm and torch environments. + +If you want to start distributed training on slurm with 16 GPUs across multiple nodes, use the following command: + +```bash +$ srun -p internllm -N 2 -n 16 --ntasks-per-node=8 --gpus-per-task=1 python train.py --config ./configs/7B_sft.py +``` + +If you want to start distributed training on torch with 8 GPUs on a single node, use the following command: + +```bash +$ torchrun --nnodes=1 --nproc-per-node=8 train.py --config ./configs/7B_sft.py +``` + +### Training Results + +Taking the configuration of the demo training on a single machine with 8 GPUs on slurm as an example, the training result log is shown below: + +```bash +2023-07-04 21:40:14,148 INFO train.py:318 in record_current_batch_training_metrics -- step=17,loss=9.810295104980469,tgs (tokens per gpu per second)=4399.93,lr=3.8e-06,loss_scale=65536.0,grad_norm=4.177205427229359,micro_num=4,num_consumed_tokens=2359296,inf_nan_skip_batches=0,num_samples_in_batch=60,largest_length=1300,largest_batch=18,smallest_batch=13,adam_beta2=0.95,fwd_bwd_time=3.57 +2023-07-04 21:40:17,825 INFO train.py:318 in record_current_batch_training_metrics -- step=18,loss=9.715232849121094,tgs (tokens per gpu per second)=4457.7,lr=4.000000000000001e-06,loss_scale=65536.0,grad_norm=5.018154183978863,micro_num=4,num_consumed_tokens=2490368,inf_nan_skip_batches=0,num_samples_in_batch=68,largest_length=1153,largest_batch=19,smallest_batch=16,adam_beta2=0.95,fwd_bwd_time=3.52 +2023-07-04 21:40:21,526 INFO train.py:318 in record_current_batch_training_metrics -- step=19,loss=9.76744556427002,tgs (tokens per gpu per second)=4429.13,lr=4.2000000000000004e-06,loss_scale=65536.0,grad_norm=5.245329823265071,micro_num=4,num_consumed_tokens=2621440,inf_nan_skip_batches=0,num_samples_in_batch=70,largest_length=706,largest_batch=18,smallest_batch=17,adam_beta2=0.95,fwd_bwd_time=3.54 +2023-07-04 21:40:25,227 INFO train.py:318 in record_current_batch_training_metrics -- step=20,loss=9.628969192504883,tgs (tokens per gpu per second)=4427.46,lr=4.4e-06,loss_scale=65536.0,grad_norm=5.503176552110271,micro_num=4,num_consumed_tokens=2752512,inf_nan_skip_batches=0,num_samples_in_batch=69,largest_length=915,largest_batch=20,smallest_batch=15,adam_beta2=0.95,fwd_bwd_time=3.55 +2023-07-04 21:40:28,899 INFO train.py:318 in record_current_batch_training_metrics -- step=21,loss=9.690847396850586,tgs (tokens per gpu per second)=4464.18,lr=4.6e-06,loss_scale=65536.0,grad_norm=5.5336643273197526,micro_num=4,num_consumed_tokens=2883584,inf_nan_skip_batches=0,num_samples_in_batch=66,largest_length=870,largest_batch=17,smallest_batch=16,adam_beta2=0.95,fwd_bwd_time=3.52 +2023-07-04 21:40:32,629 INFO train.py:318 in record_current_batch_training_metrics -- step=22,loss=9.61986255645752,tgs (tokens per gpu per second)=4393.28,lr=4.800000000000001e-06,loss_scale=65536.0,grad_norm=9.01168869536059,micro_num=4,num_consumed_tokens=3014656,inf_nan_skip_batches=0,num_samples_in_batch=65,largest_length=1151,largest_batch=20,smallest_batch=14,adam_beta2=0.95,fwd_bwd_time=3.57 +``` \ No newline at end of file diff --git a/doc/imgs/compass_support.svg b/doc/imgs/compass_support.svg new file mode 100644 index 0000000..02d2cc5 --- /dev/null +++ b/doc/imgs/compass_support.svg @@ -0,0 +1 @@ +OpenCompass: SupportOpenCompassSupport \ No newline at end of file diff --git a/doc/imgs/flops.png b/doc/imgs/flops.png new file mode 100644 index 0000000000000000000000000000000000000000..4b2ea0c92f9fb63bcba1627b6ad27d796ea071c9 GIT binary patch literal 203184 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%0A4RMuGs7G2ao>6IdK_7{X@k^tEl)s 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 eHn+&$`%}gVR!q_2e~F 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

>-Vg`x+2hd_!|^Bc#YbUgqomr+#S*A-sA|F z$4PZ;+s5iMy9BHjqtl<~We(|3q5rcXQI>@SWK&B1W~3_F2jXRkwv(EJ!nQ>jjW-I| z>JsYowi(U-_J03#{eQVg9G>=W@;_Qb?@MCev400shHMxDv}{HxD&$-g@gbz}O~1w- zAo82K`Cl;}xDI|50ONl&K<^9wzJ?U@JhRp`Vn;x9)?|*W3joNjSGu~oSo<-BZ41GQ z5JE^mz|h({@5j>86xhA(2sVskB^HEsv@V>l)N404k@d!ghHnJ;`QN#lFE1}6LFc)O z_VXZPz{z0u=YW0}M`mW`t$v_~)0>4`*uV`O{^V+Yx-&S!>Y$(?S0VTpx2dhInIkw?<*$BKU&O3^Y z+<=%*3&#AoVUzNR?2ZbrDh>&UoHbYh?T(xk?bmTRE^Gk?apqu%oEHLtIEx-UnE@?l zYBk5$>Z$dt#zwSk^7_=yl*#fNzwt^BeLE+oTA7e54b~@z+g?b+<&@d}?rztXu&}V{ zRa(#nV|f!_OlPn*6TRN3JqYDKw9rfjx!KVf^_}XYBk#YM$dCK5iWQNG2KRgz@!H!l zzQ)r#fEgScZEG&O-3v1}H{U*B5mBg3DSPwr@9(k$W(UO$U% zf`(`3=5~Ta&5VOV7i$|hW_gdZb;q-*`m%e5o1mpqtZl@zQN5rXRpMa=t&c}5)#mp> zQ_n>5p?&MOHc%)Lmpt|K*-fY1?|SJh?zHt=QAJT-p&KIV9_a^PQD!dWD4e1w^z~8A z>uY-++ZUm!MWrJwtG6=TO`LMrxINMd4`M~S_JvXs#sxA@g0|%BZBUT6_=>~4FNP`Q zA7}cm(rD9V`mRk_mHH{7Q0SLiJ9=#yC!ptvVCEzdErse?V;SM`)X`C&EG|Qv9yHE+ zY@M8NVw`fH2s%wIa`QZ-4Nr*9O-R4*p4U`{XgN42T{m6Ms>{rRSrwd`A{qBb)zWZvxfn8(n7b)5#S6EU}VQx%BKot->L*mN&t#r_ypMGxv|}lan-U z37_WULt1_id?*gM3|45>w49>Xo!j-ygV)1dA!7TTwE>sWF>{wDK$~r69vy_SQ42c{ zr0v%ao*AA`wRCW{GM*1$l!+SXvh&OLr-k1w6**f~N4NzFpx+yHW%1-V*xOHU`rt4^ zIQDaon|=1M0}@=xXaoFT9z@Dr!M2VA7xDpV%9wWf|DXcQ@Zo#kDeKxvk%AL+QdT2 zTFWnVgCRZ+AQVWTE*bM#f{X)AWTPsY&mxr?F(Z0e)Ixq?t+%mQH9jXxQ2$%V_>vjC zMNpsj&cu@Y($}X*6KEt88|zB3gEaK@B*@6k(3jvowYS+c$D!-z;Nj_S5s&BfSa?A> z6#%)UMwGNlb9&s5a0cUd>tL!5=8bA2_#IWCaaL%RLB~}SC-otB!^g6wEs?`tSIUa_ zcEP}>2$&kXL9T-l=HqzVDb%>i>NDY0NP^!%b$Y{c`IH$_cR;EeoBq4)wuQTfOBuE|C!AOO)cdhXz zcdkMLWqf>~31{VgC=O#V=!Fmgp{Xsmh|WacH6`fC`rfdT6}|y5u~%T>Y5$zhGVMwF z*)iQA)dLvh)VU4g*)$(;Nu(qlAv(KV^r5)C)!wD`IFFj-kkrS6lP|jb>@BKKirFOv z+uH|vgOf`b*w$>Ir>t*e;YDRUsbC)0&qSx6i=VghJh)cg4)_#Fwv-W~I)Pe=H?aBJ z0N8O5s{ZW#<_Y=7&G0M{Y`+&4*&Q0`;l7L^YIZQ_@IW~fRsRB+Vh731TGxg5FEIgK z1x)y+WX1aB;?V;nU+h!d(_fEPJ?WYDV|tgWcviZ;+(~K9Kl7bJc+974&vZF*3u&)k zzOChIKuD{cHr%3hSgf(^_YOMXlf9>~B$94bc6ukSVQbiowC8v^-34q1bSvLQFxu2#@RYG96bA-aYLbKtTa+Y7EsX3XCZ*^Im`) z8jWJUJT%eFdRy|Nu(kc6NyA1}&$Q*{+MKJsHtH(2NgC!?7&S2W$c!%2uX~+wM8bDg z8UH?*tu#YtS{zMYy9tVa&fcO$w`Vh96%W9)kuR?a*=7%Fx4;OR&9Y(#?Xk5FZAYCv zjpasaralXKbu1K|d-BPqu8dsaH_89 zoe0c0BGqI2AVG7kd~Yw9+F5vTYt{zzNBlcliNiBa?dLn1WBNyh# zmHd{hJyjey^Cd_)uIyBseCiG*M2UjtAm*V*WD(CG>Icu7ew;@p3xbijVC}&$bQiP| zH+4L4X=?m5s?S#W8PT#XJn{)FBZxyTHMWk9i4aV2Y}TSciIyXg2D<@OQGpo6^k~DN zq2}4bwoE`zag^TsS7|DTl&HC?tN5!mB>}Fq%&?>S?b^6JCWx11Vdn&bcFY>CUg4^>j5)*i-5=DE}Bz*{iIX(DG(;&t&{Pwjb~&lE(83R)iN8VG>T z9%8f$-~^>3+iOOHw!~{f3|t~YqX)AXC8Rd*eVxG;ExE2ul&NxLGuX*K-D(Dx%#p+7 z^cgeXT$^&68?95OA3n~I6+~#Zd4q+K=sA(yrme&^ z7AQB+gX~lJPeXwT6Q(i#s!s`ZVt;t>tQifg zfI3VLsvGl`bPP+8{Eq@k>fN>q$;OI1Gz=@bhKz;x+c} z4X$;>sGzP*X?}Zi8s`RUd%^QpX?MmGw?+CQ*B0lZ&b%TlGG%cgeEa;_0dE)ZuVavd z+h_(;MjzJane=S|T?^z8KJp-)3zBudF????AcRkdxWQy4EW>wbr;#eO2^kAm_c_yZ zHCESy4HvPp$;p@=>I@EN+q**?-nZNdfDRrXFH4+F(zeKUKq2vrH*{q>-k1aW2spX zI%o@9_jSA1>PmP-?;S?)5Q7)Flphn}4?$H6N-1PVYbknBo6Jfp=rMs@rdSOrDO&v+ zOwO6XeiQDG%wNcAmu<|vC(5PvMZlo1ukms;<<6B_M;KUYNnxuCTX`_jO+|FUb7b5X zNu;aalJ9N^MPs%R+jnYTAfs6Cf3I)Dlu~CjgApXtA0xM}#K543ZS1xuh_ge4^IX12 zkUh`Y&(k@II6djajgiEan`5j(3)fS7*4!zYb<>OYm{YR+mc80eQk&Eb*@S6B;}5dk z72t^hD3PlSY(!cd(XwVh_}XpP@WrC()CT96M4V{@Hy8x;--p+4w;d<9JyrN}(WY&I zGy4Si2(+=}=64(6XDOgHhnpcCfi8rHnee=k<5P z;-bnI1`|<4o&~c+SLF6SmNxIlRR+`%@yn4~j5neg%(HcVff-ny`2zzxBeb+lW2^Sj z4 zUKGr)-xQ)v&Oi2)oxZ@G-}YLcV9l$sQ4h+8iQLdXp4^ldpJGaz7mueWRdQ2wg=37z z^YeZVY7Y^u9f#w35bemlRmo(jfx_{6`59iM&0i50C^>zYE$4AvSlif(ykOV{06Qi0)@5WtZo^wH*AT?QH z*fNzv$$inL9b1Yg;-zOhAFehnKPUC};NG{=bT!1J1@tPls zaauZf$)jAyEe7rH8nf(?uAdbVlO3m%>A?4v!5!n2X{X0us^Yc(M#LuGB1<;b;+sDy zTbylypV#Bfsm`cgo;EEn3dEfyLLY_W{=`y|qF<|VrO-c( zaA?H}%QH(+oo#8tmk)ao5EN?U5pPDp^Mo|gvF5F*DBNpAS3XPOTw&&9rJ{L;*6Fw; z#`f$pbK*N~C)-rTaD=VBizyFlDScU5tG@B7Fj7=ctgwWIjpE&4H;tGfd4Zm!=4r=; zf&kpNhaerY>O3%A+(arD=lw0>`h0o%luQR5WI+HbS&;9I=}|y8O_}(=o4;QwIIjJ{ z-d(JtSTM0EL7QG~SSH9vhjjMnQZ%-q=M{aHpv3?TkO4W>=-uP+fHoqJb>Cge+S)Q^6r6|&=2W`bquuc^ z!YIqZbaR~o15kWd&b*83B4zCvg}%wc!Nb|(T+DjP6|@67@@bzfLuO3sV!0hjfc7(Q z)XJCQ7)|p1QB=OeZG*U%^pq%Ckz1p3ej@m#*@a*@!QR-Yrw3PYtC6|3o~+TxxI+$Q z?HdWjvUMfYAS$C(ayhz84kA}u(zYU=Z^uJkqHEgNw7qkX3t|y(u^+d95G*I=%?{qr zb5J?Nnc?st=D5w0bOG4T)L{{Y8fRg-W!s8wWq2Mbp2x--$Ae-E<6>24`A{5TW7iAI z+(D~2$t=98j2844Y`K>c2W|B@!Rk8?iJ{|6AUQEvR^FhpyAiIc03B$N>u`j8gmRXlnX*EBt@9C1ONzG%V|`fjI| zH`Ynd+(UWg#w2-^YtC&-n8*Lhb5IIpoSj38wDFrN4M-nSqpoK5K~VK*V}_)X!DPLS zOaD$a;$x>}{gKagpY%_5kYOM(l>F9i2q8uBG~!Bd5E1-#*>iQ?d7cYm6yC-6;sbCI zMD!dhr92y`ALY2#zKvQPA6;WfAAH~P)t#3!w?1jx*VB+z*IQ%LgG`~A-_2@k?x;$U zML1@F-*{0UV1kww8FBq(CRW>em_7fhb$V>%542`hXuy;*e{>WsH_^qF9yhpDSu`ricX2Bj*&)Enak;jS=Dxp ziUQGa6$-q;;uLa^VXRs*YZdfTY+S5sSSzr26)7Z)8-i;PDEFax~3#8Aa|2pILcC8E>!N)Pv!bFW9buiaolx z=ZqZ8fvaNu%Gvi>L+?fdY#p_43^al{neO9F@Fd+-C-1` z`&rAUb)gox>|PNQ{mch`)XNx|UvkLt7P(MzFl~944f6sqsnJG&e2CO04LrT2arPau z2%RZ_dzgJT$m_^DdA?PQZpzEPM(%N0`Czz~0+^rmIoA)wTNtfF?-@pqHVp*JC5%{3 z8)BbqUqcLfre$7QrzeWiBOGljxFzB;B7gI?QdeeMBGi=ivqH9=cjz@UF=%g(yb{~# zp6+tfY1&xrB6ITUY^J780AZELxC`|3RPUR5#Y*ES3P~2~(E;E63#k2BGeL!If4%%m zaOvXjtO5S(_SPw_li7oi&DOwj(9awdXa|4#(oFhAYuxFH(jTxdSH+kM>4PN{x!mE8 zN_ak?AZ@K*b)O?SzNcI$YrQ;1_R1Gm7bjceGu7-*F;r2$U7!>ngc1d*!5t$qLWdth zYFdNFC>M$NSts(_&0G!7d__FDiswsk|5z6FH-%T0@ib9PT){W4;ev$iXQK-u&oFam z@Glo{`if{vO_q^E0?AW`?sD8^G@z@E$5kk5N*mLi|7uSDONUpoBe4(n$tjBA*i>DR z!>;SnE${UrGm$pE5`zVNl@W2X!EK@;_M{T}6u)sDer3PiumE8q>jE+IlHKxcF0#$y zDU-CHL&sTgZ>KW6u)ZmiS)xdSKjeJTM(WaDI^-rJJ7^-$<3GBL6gq4m<83=Hc;1cY zO5n&#u|TY!U+I!4HpN^?fF4AZ zW>f|@UL7;W#NvL>4C`aVc*`l>Y!nZab7Dtq=GTV>eCE4+pz1aR-Rb1<8ze^K#|rcN z2A9cf7a}HC(U&9n>B*QC+3qR@4_-&X6V3e^kcWjWH7*F_)myoeONXt8Vu#+pq|6~u zij?scNwH{^%ym^I#>Ru@pc~u5y6Vg_@YRRrZn5{99fnR!oJvn(%gjx?h@NqDm+q-7 z4XVI1pmEQj#elhMs{3BAbymK&dop*{O6_>nX!RC$n4hO_ltzZxa%3KKmlBdWYQsj@ zbx9GHUOcB4kcGQLbY(qdfL!NPQ^2a=LdiAMLw|BX#J35bZHz z%fJIn37ju>|$M&U6$S17I)I`%B~x$z0q7ZqEKKy&@%ThO(!5U zMjvSPsG^#(?Ru{j5rWnu(l+jOKVWmqLP*zsC5V{+D74f|Up+gKA1^BV!_@uMipa^l z>$}7qp8|=?*D;s^KS_j*_Fq*=e_q()GhzkIq@e)qH5l$u8?@ z$rWT~*E*_`Lty+rWp-BGA#(c=FJ4KClEAf6p0y8bXk5%*`dKq|%0S}0Z@{d?H#r5Q z#=Hs+6U2u+>5!m{VuyIFE!znqF`S6GsrwB?wmdWKF0ihWj0Ru^w4XB^F%_rLw=KPO zm~Ib|Fd&&W=Reb{3Ol%w5+>JCft|=l%GQ^{lcR8YTtmd=B)mUz4H*djx@hyAHMjufOs20~u@ zs!TsMo9G*>YhL~{U4CZO0*6TqFaD_l&I7qm%jj6ycevmYGhV2My>z|7j!(Jl@) zrR*no3Z{dnqw->!9(_gTM7Qb>a&z!dlOpNJrdv>_V)fzUB7M^jjmvEB*3>hI^0yk* zS7_qnNlT?wZvZEi^9*Fe-4vj&6WeS*5~R-2Qq0VG(Bl2^ok-9DRI@A)Wq9d~j2B%2 zl|$|)I0)$|wA`CDDi8IG*IoFZYd96LU9&1{_fS|upGYAOzK*7|zG2gHFL!P{70?Qn z&yOi26>rWul?x>>2gN#BH$k6Y+IAht7ZkIQaEm zAJRKYk07<=M}xzO3*^iuCSbjdv+I-cdof}9BV%r(u>&)2R5CYvR3rw;A;hEHKM%~w zsC49rtnc#dDC2||+SEL@x@FY~ zy*&NweJ>EV-BK~ogmq`OWTeDs?~|zxzPtf|TRsuLuUuCKVx4BQgbp>fx~?BV&nR=& zjaL+l8`5|hmoi{T?cJ5}yaspWrta+|oeT$Q9Czk-vLb7tXl2#WjFU)obfhCR)piX} z?07T1Q3^T&Es(5=)a@AF;uNulBx6E#rdrXWDA>aOq>-5tjBmWf03($%UJ+>?dbvtV z!)SBD?D%XFcGb11i0>&PT3K3Anhb9Hgpsfa%liT%ynK_sV#rl)$=PiEk2n}@9&{hu3_OIpTH zTfO32`q5xqb)?ur5ZSi_&R3PkM>1fYNT=|tYpovi()zE~eV9^=_;$pusPcZBm9mP8 zvrt0HMzY%w)#W}aj$~hwz4-jmy+gw^ge#|%GgS@DJkzw2;^sB_*P_dlGm+%NCA?$W z{jwTGZrsW=KKa}$GW&-^Z*U1Ny!)K>Rzo;m6Kj#K*bim6Y z>6!RGa^WFYt~AZ3uIr_;679$M3Bs>Osi}n%PL;@SroexS$oqW~6V|=Yi%JkTQ@|yC z{Tz>p9*0m-5`2_o#4R->yBTlY`sdFqo|C@&8H)TqcB8)h880W|(G!F5N7LICl7}w^ zRY;$HnqHe)09Gz7d0t<8Tr`Y2THH`$mD1QF0uN${7g276{32Dg2UW| z`V<=F6*SYOdg+71%HH(D_4kK~CUo4UehvmTzDnLpodSmOc3wS01rN}WLB9Dn)S-sCU+m2nT|RZkniG5=D#$&|ao0;mum?BX_ltpxTW;~K1Vlq*C_LQ zIUrh=F?fcn!&IZLVUqbqq2G)21}v#mZcjR-BDW5^Wynb`&-t`0th~sKsWa@KpWA}M zzCCzVtozGV_R&e8bwrMmV4cpq$(BGa8Rg&=UctIG6)98F)E92a3nJMcERs`9zqBgC z2PxNYsKj!YHfI~_2I0M`E}b@RxU(5uCkIpeZU zqL2q@+cz;X`uCvmeJ{v18NBl7qbl!3=|x8_rwZzgdQNh`@SF&fYU21B4GFozzz0Va zn@2T|$?4S3DRj|qK9|&>fw$I)C z@#Libe?$~3t^Tw08TaH|G!Ab5mfnGK!s(s;_d9P+c!LH_#cK6gj ztz701EFnA-KCI#O@qoUY+eJ?^&&ihfPBF|Pk9)5s3+&al7lgrO;JPT(Lp|RRBtmZc(V~G;-6xMx3JvekYWJkSJ-C90WqlZYBw&$7U{6-cz?E2aHdsA?m_&fMzLr0zVeV_`t;>icj z%XbZ2{aSI!ZNg@4-AmotNpy9Wce*3=eHw(X&6DWdOdEVNI;zW2wYNuro}>EmRE6FO zv9%Mp8|m3Y^>FF=a?=xLJ#A8t9 z-KvYxvU&lcRYCd7pZl2uxVFoeF>Wv^lCqGq1jP}^7N0UzoAPH#L^^Q zYWP3!!OUl9i5PW|PEy_bf_`xfW`SpaH*>ig0zsyxfVt0i`855^HwhJp_TS??hp}Ty zCuI>Cbay@D)p+-Ne%_L87?E&lDzW()DRwZiGC#6LCB;ONA~|7pQ6b{N!ieUNxH!7u z83b7eWI3{^RII2>j=GC5R4`do+m*9V;dsw(^w^K(FYEW0A7tQr~mulmh zbfmpj#YY*3#W)@VwQ<;bB7d3>x6>2-PCdTCpW?j8Jf}2%{b_SYI-#-D(dPKiCL()7 zEA8gL`n|9AZB<#H&VJZLi#uEQsIB=%`pFz~8n`f5voMF}p20JqPJ!U%PQ0aBtXZ`j3=QPZDpU^*JuN+* zgJ%|s^ZnK)+*d_Es)(7^NY=}qX*LKdt!4Wz&CRPcV&1%|TRiJpajN#AG)8(<)(vr6 zHgTvj7nNrVG7(w(UT5W4u-w365;DX`O!++dIV7_j&+-}H5W@%eGwML4wDo8$gA@@` z=Bqu9YfdYnVe{zkZg%M=F&N!O`-nhWTfo*S5y2evMrlb-wEj-!lIdG!8siiOh8g zIZHA(+i1&YI-BD)srJzR7X<742$nMzp{e=jw!4^We^~WgeH2$`U;peQ8ZRr?VhNiS zB3yBw8jDk3n->3ggL69mP73O&T)}bF*>u%jYKi_5wgFO2z`rmcyeOX&R|hVfxr>#~ z&Pw6_X`!wt;y$PCH~rC7iAOpkW|b_g1&=s%!D3P{gz=Xb0fcQ5)#eU4&u}G`(&%>D zPFiG*bPK{df47Ufab}REKII`AV=2#WMrr66t8|d4K31$}xfei!0F(Kt&{%E(NEh!sL*AeU4b^Yre^KD<)iyKf_&-A(xM(q)yrCF+eM*Q9> z4P0Ab`(Efg0Loe!(X*)2u{dj1xtQQjQhJM!*;E0=m=DY?HgBzY^`gluyI+M*|DfY!Xspi7^IzrDzY~c54(UL=;m&C8P{otl|-WruP?WyVe59yDKKKvqu!o=nX#*m}Qy3JYbSVpjHu3))c z50ujr&-hmj7fKrArAv53+@T0&$Oid~dTxeNcFB73g~mdG{3q8799MMw@1{NW`w|gY z5GS%sUy8IbZTolHUu2AM+Z3A@D2j8qcV4DrBOQ7=$NgFns-T3gKNY?6l!=u^3C znZv}{dd=ku`kv?Hmt{Q~$}~J6VRFjAl2viel(~$9mGp3A6Wm_K%*9Uxc8f^RwJpM} zgH%c!uk_;F%^RcALSS~rgBBQZRK3m;Ij+9aQ7D#lJs4vNWI?Rw(NS=-a4ca`0_jOe zjeE}TAL61|@QNM0oEu<4o4KW_(c!kK<^{zRyQzZB#Uj=11c~`uv^FjHdG%x%tg(3^ zo}%Hfyh$rPNHN7T{6He4Ei&Wk+e(6}C$R}Zl0lD3eo|EWdsmP0WCP!H#ZgdXRZmXH z#el`BkSEx(l!HF`u)-^r<8K=Rq1A1EWx}m9Re`_WvgvDmF_+waYGx8rl;3w&h6%5c zUj`iy3pbl*UoYu)Csi#~8H_wktp3yznOaP(errc5I=z$ubT=PPTkyGw_=~k)2G4)F9C5w;!_$lp0Aw6_*K*R^0Aw-EA9UgrFtMz)bUFWn3alX~Kk{v|GL#NABrc=q_tQ09dYC?v~DZoqyr8 z|D*Dl@GW)DCxpj1E}jWNPyVD`rl56+N73j}4U-C`cEV`FIeyq{)j_N}_ukxR$_nuN zl|`e;gy)q;1;?JMLZbpn4VwHs{KcallcbiV4)9z@PXu25!rhTP4{$$kpN1-b=kCQW zhW47*YOLc3aPOHo7*=QLqFUo~a5UXktmjS90;Ii^dcUQ@ny;koUu2Ui*F zB59HB14+rRPxIXM|MGT`N+bp1{%wq7Hncdi+$xPskraxd)ib|Nqgg4(YbkSRkWDd8=EYP zBgAWe0PqRO=8|45DqLmc+UDk6Y+V%1?!O-85>>GK2u~^MaRb9);?BQPjsHr3|4xg* z&bY$j(^O64sEXbH{onhhPm8XW0`d8~@t1;)UXCcI$BESwD{lthC5LdKWCUoy$Z+uR zDxwyX6`-62CZln^$}L&wT;^XoMsduR4qw;|bWFscpE7MhI4<;84;3F7+8#*wt~TIv z0R>rTBC|%}2jg)AM>_>7iMoXQZX{>k*@;dBfwW#OHLF<(ZHHrewBz;Qbji^?Nd*0i zrjv!&(%x#SfW>C(%W6e^yK8_2cVF+cN4*We=4%Z9?m7&9^7;Tz_te}1%(Ddue)Pdv zXZlj(_aH0LxbM*P(>zG{mRu$H*7&R68By})X6s)x?MRV{byLRQbyyO`%@fB~+}AGf zL{3Cc_P#fRs}r8z7epvr$|t;HFR^RRLvI5LZY}w0+Q%UKv^PL{{b+f`$G3Oqg51#aerK=6>{41&SmY&y25E!ykR6;_+gjvZ`rf& zoXxTVcf9g?K=pLh`M@2)sNDS4_?Nj9uf!5Yioc0zF47k8KbkKnM-w!k&uqVPztV@F z%^o*Bs)oAlC(MDjsf3u{rkB~06s%40epizy$WiUrSwbL#@=VCjl&u9ixEKCwyl_)1 z-Nb=Ut9XjLi60(0rDNn@|9&c}-_}(+-(KJJg3a@4^`@8-sG2%yZd`W9ZrKTA7o6ok z46vzb_gCEfp*h@j|+| zUF@Pzqxnn-n>TP_TR^4^Whq4Cx)>?%2DR<4qUDt-aq}G0ao#k_5LGzxU}CvrQ1`Rj zi*Pj%Y$wgT5JbP=blXDY^HblQiCP21&g@@P(S1q1vi9JN9+x*p;Vc*#bt7Zi0~Y$b z7PEkTVE`Z#oz2>bvS%*DU^T)uaA6~ ztOZ3I%Tb=~i?MY8YGw)N_2Ux%FxDl?2lT`M>T2Po@^#j<(TFh>=4$iuxK4TEU9ID2$9Ly~`@LN4>j0>-WK7rn4mi_%^rfPS=`c3m zsGUX2lNkyV0>U2E!4Eap1KzmlToN$`%?|^8rayk$sJP5?)2=jEy=cltooSA3-!mbI z8z=%0$0IucZVV;;z;y(S1cPgAa(;W20oBJSSRG(vx&;!4$r~@6k}w5uw$}EPrsks` z2s*2Ei;67prR9mll%0O~`|R>F&LsVS>%+1}JHfaA`VB-MUw>T0xTn=%tW>~Xq`-}V zP3zbp(8t>|T;kmmy0#Ni7=IBDAGo0p0df3kNhK*W?tB5?aW0=Dp*)rf4EYFVR>GdJ zJ$OY;#DMzZDUhbZrrF3KSnH+gVv7l&`Ks9ZibcRdJY(E)y29qS|A)ay!>>dpu^-9g zv3aTW;l1kEWp5&4q6*qRQY^fd2W6V{CsB)8mDeGj-@Y-07qA>{eMkUOUhYqx>pls6 z`u+V(!H-_@sPhf?uu=*se@)3>7l^AJ9=9~>c(=BA-xa1zdxEhq&p1nz8d>Zln6<3E zKdyfV3}JByeO%Mf{k#~s#R6U}=xWm%)2}s@7cXJE(jPviS?jz;QQv9;C7e zFHyY-{ggpy!7Yn5vR5#&I{pwPa_Z^3=1miBu$4NPq75%`eeYEKXEn(*P9q)A*ylOW!7Y0A*tNDxmbR3qW9zR%gF)s>)sa z+EGq}F^kXX&+B?Hot)PcxDQY$7aAK`n%SB!Re$Fm7AZy~~(dWuR?tS*##jM`WmgNX^0x8 z4v_#__+3{+cM`PE+a!P}MgxqMd2rH{55A;Q)IuQT=H(Oqt$vo|E*#3h;?`#{Jb!?| z-pe82#nEp`;<47%{|Uc}g?K40FIC}yQ1bk%8K9)b>@|<&MCUM~TcGg0S5nPsTQ*Nx zR%Wz<*ZNu1=D{%34VvTw(M(~UUsRW-r6~b!gaQs|8QShN$vks^1hH^1D zpqUhuF6X^*orx&)Lf+~fS3fd9z6MSgIAaO3#2IiWiRBqit4I$<0r?35Nq@TLY_eXn zw+F`!%`IRQYt?lc$FY+kD=YW~Er62e^;(886G@6(%oC^6cLJTyY-ZEz(`eMbbb0Xd zt?}qcZ{Frut~>qk)mmuyV*8x<)Dr@byiFm)+E-ICUZ?0_%O5qf@8#h2r@Vp>D09mH zHZmR%zOi-KZ@Kw88Z(dq9~sw zndM!IAmZbhGfy2YtHYc)Z#X!dm`ZiP-L%|C>d`^hk1}CXG>eUnQV$}WsF@=YM#0AU{h$=3knHy$m|59=pQXGy998*{q+a!-f@zT^des#5O?#g%cQ z(`E4ca8@)cfa~YcY1Ifz=spM7ZjY;9Fw=h=5jX}c=t33w@(x;q^e80KbX`ODAU#`6 z=UXwXA13U+#1zbQXG9A2{efxsCyETYf}BhR`ij0;W}|JxT36I7%Ps-If-w0zn~?S( z^=&~qsLHB@0}-6xGbW7hPn>B6JN4rrNguyXz@Tun8zfzi5d`}`&eYV>03;>o`5$uI zA*Gk9mB&`KXKl^%7y9$AW)~C^+E)wAjropo5NdWXn-|`N%{OJM&G0*(JG|fV#rE~N zquauFD?;c8?~apY>FNP??ERrVxO%meT0)qRS9#}z=tkoi!jD92jDKtF52%4e zaTeC79{aESQ6cep6DrJq9xd#ga{|O5Gj-U5;r6buE*ig=rEg*>GL7p1$n@=~ebp(^ zXp~``iR02((@~}A^oER|jO(V8FbpS$fF}%^W&Wm~d!fqyomz7_e?1GGxWJMvTE}^Y zLio70Ujk+~s*5qMEzrCKJkhi%hp6ZuNRDhdWxWm%BNpQ3PmJCxc|(P*R2w7ds;%dd zg|64!{u#^u)ib9jNLzua=xqlP*s(`E5$0f?Nlj{uxv9fxuTN0e$a2kq7lbCN20I^i z5!R)OJtM=(wwi#jN~2+P$b}{^pTTd``>*?NlOStl{B=EXiL|J>!?n7JS1mnOlboED z3BUE0#w90CWv`unS|15kiREd|$b-D#L#p}XpJGDE@8ar$S$doT$?qtt<-xZrd#Ikz z4O^M>g)l6CE9?6;99p^v%w17JDfZe?#d*?HOS^?0j5yw^S}o55p|y$vD4%(tnUg)aISq(~E{?;(@B0^W zgq||rCOjPP!vEqFOu7T`(o{SKaVHovVqrL1fhv{u4oK-=Gw_5$Vlbg;a;8u6l~?PX zM;(wu<3-#s)cBa3d)5qWgN*v%B~a zoJDL$n>nK@K`4vD)C7{hrmzR&bJVS*$xpdw+7Ao#K4Q}#xdJ{(fYW5!;#VnmjN)OK z*sVe4FrXum$J`(5fD#5$ZkcT|R; zMEuVIJ{L_QVtW94nHekws($=z63Y3zLg{7JZ;MKxdQ}bk8rnl6eab7ZHsj|K<^sqj ztqc1RGYG|~{ypBBaU>7)2BYQv{l7kLIN!wXpe`0m6WW39HQ(8#dg*d7av{{xdUMdy z_drQhZlUSV%i>_%Zo5&&{AbVw{oW2pG}T!g_jNn%6-nsHjaBV}zcoF!y>q_5XuQlh zz+Vp#BjRJ&8V&Uci$Pbyb9j}0tGuU>uQNXs;3O~gQN={ZOU>x-T>}fu%i&E9=d>ML zzCl0mW=v~LJLl6ssDYxPaTxgL(%{izK$T*q*VZTK0cg8vH`H21lISUCH{jelS(7PR zK4!VZtCmt8&d;h~>(NC%2tYwauDMFqE-kIywX{dI^S5}zodSL4fy}PM&1vY;Hn9X; zv<Y`6<_~w-0NP-B!X(pr>O9E>#v+| zn21n?ezSHPPDqOqeSybWLUseKlkg~g_q$c6uZ@W*lK3!k zXA@5fK6H|V-VSp{(A(G;96HY8kBQ$=|IGx;#fkWw1F z`n;+rv;pCQSF6zNKr)vBbU)Ccl>i%5R{JaW?BX`WWA;_51Qt^x9QmZ z#=I&6&SqNTk-sUKpKaawu5Bmda4UcEo1gow%j6?1*7E zgyyf!epaSCrl{gg6^WMT961bTN&=x~ftx?!K}%U|-^sqXlGCxJMddC6-tV&`dNwv$ zUVKS)IU%OpAimtFzgKVeI1YffOI0k}zjE`6?d`_R_s|ibKf7Z%V)%?cz;8OPt3yyr zd53z+N52==_FcxC@EIr+x~Ff^*Z+3u=)heQ8cvTDK(=T=L2s}Ib%1rC@Nd)K4I>1l z7T2xifs}p(UkO5O!&|wXK{BTxR%T);_=R9kr;Ja`m9K$f)UeD;auM|}?SdD#Bw(1+`M?7{lPL!?5^V#a3sh1IQ|>9m;hn$f{(m5EzD5Y`rsw}BwAsrZRLyTm+i=V^mLM( zgdxU@4|;NqcTgq4Ps5$wOA@r6NS+?B8>P=e3Wl>zh}!uNe<|Y!;;A)aBK)xGbPbI! z0Hu^!Ge?g?dkD>to=g9sq?Fo_a&?8?BqP#L7zW9(%2@|=c2ZO2DvJ`m!wnt@nYm|T z-@gp-PX)D8mbE55(*CU=vJ&PGwvhVlrCkj-dLw|kB};2Gt#9G~b}j!vVUlhB%J%5_ z_I+N@hSNUlFiGbvCcl@dOyFQ#F(bb+VtbL+mA;d}C^An_z<~kM?qnzs`a@}sSy8^5 zd+9Lnm|ULsY1mu1kgI^CmBUAm1+RDYouVP7N$xK(#27xzV}7ot;aHbn`qRtqX@?B} zmrdif4+3J%|s1`ttwr>e(mleU&|aVh87-0O3iqzcQV zXR=IBk`ioqZzQfTjXwP8o^7%2*Y&f9MWFj1Q&tNa{tn8zrUTF}*LlR5e+@^m@GIm} zs=+J)dGvQEe4&Kxko?}^wJ{Y%&;v+_0Z!}A=Tr*J~R}h5rpcpq6 zgMzDak@Ip>aUWHyoP{41LU0a{_W0K4W20VCCqf8_5>hsJwa5S4UI8K>@P5+X5MIzF z%Kh*RN0MU=jE#pB3wzcqu-IzjHEEVDkvLc{S79oFjAskr9wvoVr9u{_VGp ziNNpks;pZg;0E#M4=~h(^8tfYv8tYN=c>*UPgn7;4uq=8U+W>Dlu>)plSId6NH^UT zd0GXSkY$3Cf26QUOU(FP7prI#08pZuzBdbt6dRV2{;&S=<6gw5@S zIg1O~JZD}1QW|MlWMg3f*WbtpGaD16g$Bf0`hChMO@gNBI>42Ze6A=_+~8PBf&Grl zF!lwTp0>!y(&X(NF|cus3Ffuwx4#Wu7zQYS8rtDY(lQbAZ8=?oE@|XLM(sF4SX*{X z_lo8~++9|t59ZWUEAEUR?65V{G3!g&-C)LNaWzJ7egqRReu+OY@D1-y+xqc3pXsYB z07taE&8u=Tv!T3zB~-eEnsVmn_i#8G0AO1TeKjGX)b!Z%i*LnPP_XIWs;suf`Y$oS z$x7=E&{s8-!8Mnw&V`Txi;##O{WMA;mzPlyROzRb)B)|A)pJdMm{GLe9@7E7s)Zot zy^cn5zdOZl!T8p2(E^smMpk?nlU8ww9a!frwhc3Ew6do8a!K#X7!k4DG&dYv_~`1$ z`ubG~o{&7pGrz@%&ykri9hY@Fe#(vO`VCBAp?s99ZWpYo$T8`R4`vv6e#llS*no+wgFBPLe@yY4?{1Ba8sO*%OZ zNPbS~#n0&^L&5U{pRr{MO=Rf?OUUYU^@_d)sy2_j#C?qj-xF^f)O8(wTi}o_tdE!P zL}o{_>L;8iC7#N*n6klnh~tfvKq%R)r8F-XDe+6CuzFTbT=nd~lr-8Rt!PhLDSwvG zbOlHAvT)MCo}lHEgN_h7UP!t9Y)cwiE5s@SE9b4n8_FsaSj^W<94TU&Yke8RLC8)7p? zXj3~S-Zuwp357J}UGwN5GGAq8Ql=B?>E}>M$SWxj>BWD&#Hz8IVO9CAq%)TfY2^Qzr`?1{aYXT!<=smLXD` zEHh!AryFLt8}&%e|MF1p+R?acU#$faEa_qkx6v-n4^|xnd1uKdPR1(ViHZS<#2v^O z44#I`d}3^lpI&+_Hx6Z1FjZmXje{6c=s5G)ImGxaztztn9p|vmsae@gX#a74z3vWH z*aKRswy+2Ibc4*GeadSMpD?WI321`qZh;)Ynx3O+Z@QjpzSLr=lA6QE@|r~GV zFvn>(AY#JbVm?e$vSCBsA-q5RQ{!n^YSssAPD$INCn$p@Kx8fiiE?Pp+;AdeefQz= z=OwVMHgS@`%|R}M@K;i-FQc=SVEn!Pz2*;x?>ev@ z%#1o1>F!Djg9%*Z%_TpAZEd>NR{ae~rHJVUMmXCHP5;z}R{fGqE1FRIVh2=^+fwbS z<&J$^T>U{i#sYY0?G@{CSl$SJ8_lOml3Ys%54__B^lF(9fE(oe7_}l)mR_$MPN|1K zr7&g4nl)=PYpzz6Bpe1MFcF$$08dnL(hBac_{qXb z#e}zKzN^)qK`|cW9H3-~_PHy=+g>81&4pI2*#0<)e7}%W^tTXv?G6;Irr`-D_epQd zIsF#*F$k1F*xdoMUTaVe#o#M2_B8==JII*wf*%__44Qcl8CM`QrE{F#)!(-2){A&^ z1AIR3tV2w>KcETZ;qU@EL*KyQLN%sUt;j*xvnM{2ICWF0Z=^!{KEQ%HQhmGK>1asI zd~$>;kyeD>yt7cOut+~?Jdi4Mma{bh-UNCY2eMv-2PigkYe3MLuJ^_TOS(J9fSkmj zkDtvxZ(+T_E0!39 zwZWbmI9yO}#NW;9x(7kl$en_o)+A#PJ2t40qv_{SW00}ecyuq`>p}EyH&1lDw4dPP z7*!BD-QP2~eUA_h!oxodqraPq`qZ76Ow6HnXc&}6qaQ*8nslRUJ?g){=%-&+Sv~~6 z9 z(O8Qwl!Nq^=GFWH-Euw|3&9aR?{Sn8>9HF5lh6Ab$6u7@(w6)Ap$WoeW?gse8x+z^ z6vpa(mhJtR4|;W3*Y28DUdbRHI?vOAhcM(^f z3_s#+%Dd#Uitf)ZEXz*PC!$h&SKfDzl;4!x%%h+3k9YR631K?#J^;ELscK6TaFFIy zeCQ}CAp0Pj#)X!wpiW}8d0>u=C%LRu-xu^H2f-*UJta}G zihT@p?7#1}o^7Cfi1*&BTRb7ocK=1Qx;^{K}1K6YU3@Cop@!hUc7+Nw2S(m*I(rG1N zl;nG=VT`O1qx0&3>Gbt3wgQRi|)3y9Ac%KSC_V{{z4gG-(mv^}m)MUTh9 zSTxKaNJJ^_p>M3i8DwKYPyd*F*MjuTb9cshJ{lMS`KBuQlt*AB5e7?<1)^E5z>j=P zNUBYnexH0=PEh$F2V)+zm-~}8TE>R!8Ia z-5{*!F4~thBaF1L7p;23euP82VbodpdWBheuDL*(q z0uQ6hihB=4;zYGfabm}jwZWaLr*MU!^=`i_1u`;N;$VeB*%)hUrG|giIKwPNrM7BU zKDXjx(>n$UgS<6I)1$KoP0ny|@72sdX|*RmOk6{_WukM{!S+gt`|%Ax;mg;9-W}m1 z!UdJc(#s3+4a8T8>7^^|vH2QAxc#BLhyBzsV(rJ#XZq*xNc@04#;{EGK}pDSB@W(t zePEiiBZ;@>TL$%2R*=^Z(j82w%VKNWS$6EJ)R&tXdZDB zRTsw0xupx}i5g#d3qd=0d3gh>QB}5<;MVrkw=PR)K+l!tBUr!pZRCvU`bzLsm)LoF z_=2{$x1}*$+R;z(-1_Q|^}^vdB6vK+QUb3>EG*n(k-l`>M(?$5Pa6rmS18dm8GdK_ zo*5G`u~{gII)ixL`(WA*=iBiU;Fwfu?C^|m=QtKUNEc$f)HL(f_Or!Ci6VVELS9ML zTQEqypy$*dmm)^kZUILmyh)H*%m7*l=vvPoZ({Sgri#F5hzt&}C&|34Cj(Z#mt-Z| zHOu$bI(389p4mGTeb0GIr=@7M5FN*}FF@*9lWmg-Of2d7Rc+?p9;?N*mQ0Ad9;kw4 zc#i=X+Skh%D4S4t=254RuN&i!PB;->j1v;W@MtWvnA3~%<1_R$YpqnKJHKa`*H=Qp z<|o*e*nAPGG46(SuP*s3Rksv!^|&Ot^ROp71BDM#d2uV;tm?enq@2MVgCa2!dIr52 z@3^A|lHJk^_XP=2+(*jZ6?b|vtZlC6HAgCC{x;o=c&&~vUVRouyLmmLIKcEAPHWj9 zM+VBnft>vox83c06nG;NVY`t1@E+qUtESUGv5b8^WpPi8C>}-?&cq8J<|=gJ4}N6w zy328Xvmw|@s5Gr*Q^!MSJQm24gXUogja~v{tJ}*YkCWd2lB40A7fWcX(I>DiixaYr zKQSr0hf$Ats-dPszjGc#9N0hWt!QfUlbD+M2dv+vTinV{PTx09W}llf+%`z&nsdGY z*}>s?3qwyn2?{=`S6l$YS+x^_VT7!GNpB~*egN|u8s_lQANZ!aAok}`_{T+zMjcPu zU%Kw{EGY>`Ez7y6&oDvQTF7WX5A`R5?!zqYAirJE`9oOkcLKEOKBkBeM(y5qjVK(f zT(ey@zZ_wqnu(wa=(Nsi=b?}|T&0}Y&R1-&_EMeFe=>L9 zZSOq|`o1=;)5yI`|FbXTp5^(DeTUEuMWzZ?UF|?&g^B5XsGC|SR_z9_!Rw2C%oQvTz#wa>tL)zVb&nB$z(_1xl&H=uYZt{lEy^8JP4x-+&(!jQAKsh4OK^hqUt$C;gRJNs-HKz zz9(bT!s8n>Wk516mEYnbtdWpltPpjD%%Wck?6r_5=oO9l$vJYzS$V2Y+35As6hXC5 z#|~{L0S1Ui`9V`Mf=sqv&WuT8E{8@7eC3ICS?v33VK~=|cYhIGC+Ual=Du?X3=8d9 zk*8j1-q|3|WkNRiw1jxQt-#l9Ow^Y@z}KCL(MRXA2AgDUfqA~MnQcfXyYDBOv^XVW zYsHkaUe>WL$J!~WIj{DPhjUSI(4EKqgI{p~h~Y51eJe612Ho~|H=g@cReLhC?WMl@ zWMHa?WGGt3fRRA+9j_2cTQvSx$zWA*^5upJW_D6FjMV>;)WbIjL&Em=odmDdu1jf; z0kXt{cKULD1_eNwlR)pJ?U5m9C2yeTwDgJ{3;zJ@qejj0jlNSClf5oIXg_M${kPiw z?;{U@A#`AWJCwcfQX8u?3dnjTF?f>RX-XuFWpGI!vD@wwWQ{&H$i|r2tE1|`^f3NB z=D;8&Mzx8Owe|Axr{Kl(*| zMnCW?*B#Bfb9)Xz8s2u#FXNGqzmdq>$>M2b?oAZnx#-lpkeL2nE|`@q3@C!X3<$Mm ztP`*2Oxgcnl1Nd#`TS>#jBlecvCzT54*B-8BFXXXkP=61xF3lo)n~{2;n>*t50m zdha3IT|fsImTmcNJpX&p13X#}8?nZT0Gz-mKs7-4rU@M^r5j6Fd2n;S9?3a5QO3aW zvl+PJBGQ&r!@XGY_9l!okn3I91S`E%$IW`H3=$$SZHiNylmLt{UCZ6!eyPdZzdhrB zMhZmw?ur~#nnmg5BvXkkhF1Nf@@*}}--5P1%-R0x05Q-2z|vyjeU4#Ouk!Zs^7ym# zU5^G(LmoBzM4qOEuxZ18XWiHO@QDe+RMoroO^YR961ItSD^HQo`)GZ=%=NU)!aRC0= zwyt|zw*!Di8Gp+`02%Gp+@0%T0;X@DifS1fP8Pl<9(df~7^|1Y4ZpJUFO8lVUSA%E zPo++~trsTJd6HE6O4ITykEAUhldX8(#zUKK?mi%FtH6Z9a}c@MX-^1~jXaEG4J5Q4)d0(9#IC?ZM#cHu6zIr9lMf}f~@*gYX<`2&BZ@?fj63->)NaFzE>EAC$ zhSDUywoO)k5&&2c?L-0{cgX?8cWX*~QlW8{OoyzR>#Os2z#>KKML+p}-d-QclRBf( z?QzXH9_1|5Kkv6?fH8%ubD+q(lC}*eNNyJ}8F8fB2~lsLvjD7SEG3rXxJ=|h(6s%M zGPlFEo2dSrjw~@~=hqqL_|Nasd0GN!q6a!RuIu=)KOZa9dPL1yHSsaQ1~{um&eiBJ zPuc$iH7l)eO15Hg2>t;c(Y!4d)&kV}l&`F&$7Qww#|%||aR>gAg|Dl_*?~ZmIrq2% zu433|s&bS5U-4<=)Xo2sGJdmSeTvA&frG9#U}Unj1E@-OSTatu*#T0_27vrQ{zc;C z=(_8_8Rh>Sj)Yz}z}+i;wRS97{n0#CgVVhwTPh+1jg9n^ymp|Tr9y^LPpK^if$yLn zM1ROibehcN(SviXVa=;lWfZg(Nl3L}xz<;-OU|p{xqm+2|Gv-v@#+tlZZIaqqkaNPu{3&Idr3*#-+fuP8gd1HT4FWwB|f|9pG@ z8R(uez)Ne&*sgpwAo`hIfQWx3W#_Bj1)ars$x|;HAPab)pazRwkyujxKt>Hv%~$J$ zt@*eEn6mbp{j2{RQ0AmThSSci?f_a@&;s4Yx}jR1PwISP4lEhSM}TouLGLP2U}TT) zrPAN~ng9JUyym&dS_wXy2pr94fM-?7jjoJNRWGXHnt7~u8Lc8{Zh z1W5Jddb}#r&U2pg050qP+gP^T={#(yU_e)1paJ0O-M!h%vb!Gf3Xa&ht%T6usiU`6 zrIgGxtu%IN_`f&zzjEAw`ptV_-P2XSP3d#GzkE|~u<$=s;iEGO3;=}Tgav^E$GkvRK-3&e10XNu(WEz^{F9;YO%HyuSD!zbydw`*HM=}JRMq3Tq&80Y&lmB(q*Owq zoAtanseB|VkrHb!mdl{!y#XxaUB|^psQ`dc=6_Sl+fqevp0&T@nR)OKz~spD&imJF zO0j%8*_q$v3Zq)$6K{Rq{C4@}zV5omqSfN_A-PlR!#Lxgu@cL%fRYLTo_?|*z0eoS z(M|cK>*=SlqM2ya5$gz5uqnNQ@abX}yB+|NZ+BNPB#f?KRZeQA2Z~0`UiFZ=*434;YUDN-e9uAEWxN2(B3s%d=Pd+ z+-bY{%x=YOHJYhkg1|PDu(+)KcYwmpD%5{MqEDsfBB=$QV}QD|@C#tt z#h{Lg#JMDB$d)&NfZBByw!hy?RiIHy_vb0SD}w{<%D0w4DM@`T;G#>+P?UH%m8TAB z-7c00&-c^`T` zeLEDo7ZKQTtR3zzkNEEJ^XB71?Vo>-UVcjD+9mr2w+PSLA+0xqYR+DW>`+d3s8Efj zF7o>sGpCJ^k*|QO3{O+G92tM4)MezJ;2I?#FRkQarY&PXt7H16jqXtB{?NmL3aLq& z+>t^x-CQb5JmBN6!Y&SI$u5Jdq|%a~N)561!#19VUxipLWen$YMgt?w1->}d`LQ3UKcZQdXAvgIkV@sorTcBKLHkPb<~L%LdiFB|0yDIx z>hQx1rD{#rl>psSkpBg6jS9zjlN85Lvg4O)jH|KByVRUnZf{{6%S)~!T18Zwes!s{ zRg>oV8a%3XyVMuTje`pD#f(d?E3ru3JyTj4o((eK$M9a$P9Q{9+vS)|J zf4aKTD0U38(~9LLWKbQ(Zh3aya43|;Ewa1f9P(q-*N|}%Gw-c4t-2sEBwWKQS1U=1 zHe;3-7r4?;QCHxRUAB?Vels5>yFQXL}G3~#Q;Gtp}o5Zdp=)Ns7Fmig=6H*6ROaR)*z zw`*}N%VMo6WEP(e#+slJl-KAbDIOyQ%%>#O%YpkdG8NWqg|a+n3jn1K6wd0H9}{Rb zVkX@5r%us&Wc^0xLMGhBNAx5aXjV#;RLxdMet&dBQkrzMu4&Dksd)tTRW5&Y2JGx` z>GW)1J<4ZKBfL>_(<$F%&cWU5c`d|~1q74=V96TObqh(^}fW9t)rsOmXj~MJ1aT%*+HF1z0e71}g z(QuFw(9p+EYFqG+*%+{w42Q+)w6D&F4)7dd}OwaqD>YOzHl;lVeE;Scd(Sjf)-(_Gt@CJZ>QhwxhnKEvB5V|LLBE9Gb4RPq#w6O%QJaK60zpWF%B@lA&(!NZQPc zxtOOWf(YmmOs5yDjbJbC{p#`>Hwd)sNl%_}nz9@m@UvKa2BSnKYV)jd^C=JL{)IxG zS^2sc8AqEw8$nCYw8=8c>>2s$4b5TlaVOxFB65Vi*xB{{&-C+sApB>HHqzgvQjINY zoSAXr{HYt%_=Sy4VvH%dwVQwQa^yKNLFPlN|y=z*F6yMLlX{pp_s7|mvkE$gbJ zo{{#GQq!-ybYr1z&!_>)X#(7HMN(&2Ee9jWv5IsFzR6HQ+xl=T;7OYiW^ypjd@C0p z3a#=6j*cbx;N zTD#g|TOVQ2kUsnEU*B&+-~hYup*%!_qWA1(YP?gOg#(7RYefbg<_>G~Anz6Z+^q%H z@=)lxn6CBCJJ*V_3@XV5J4CnRPZW^NmcH$|)7DYjv|uIdnHE>rBE=oVtk-<}<$-UN za(D}SzWH)hQpjFU?zl;t2LwFMwG-p zECqy?$U9(LSWLA{(Go_dP+5}Kep*G2N3Bb`zuOz;FpaWl-$C<6?M3*w(T872*2`iD zJxP%j-5FGuA^w~6e9F;vg9^$tb++3uIVqmCidd`F4?cT?->)PS7L!^ppU#}y%{*rv zW2ZGSRUe@Oa@0!f*4G0GwDH9o9^}A50n!uNoxDZ7sBC>O43L3VC6iOxnM??_z6yR? zSbSZd#*uZ7y-C6MJi+P5I&wGHN?SGv1>g)Ej zxDukpCT!5{0v2`jw&Z{2W1W@I33%jtE=)^~-F@MBQnR_?g5h}NXfb&!e^;922$ZAw zl5L@2_$M184kcY0*Dh4wG{ZmVMPwjpoRb-Zml#*I@9vXldvPs)sv+bUSDNPd;cX+r zW>wb(z-aS8yC1{!}m3xdWc#37KGn|3t{&IjA+wfcDr*s}*WBZxBH`E{s zR4cK6czLsXSr6qe_^Jdsy7e-(_`|=@Y12RJkvcQ2aJ1I_xk^1?=8csT)Qq%2`NE9Ko%__AtK#KOA83H z=#~XYi*yT8EpT1Rxz0cKa$jpbao_Wv zbIdWv2%CnYxC21pVluAyZTam4+-|L>l30qXd zLERg3kw`aQOMTfqE z7-FL(4@KYS=6zM`V%_HW${wGn7nf=)V-lAW*#Zw@&T^0z$%@ze%nOx{{rBtQI$Uaw zmsW0nVGG<~rjqk0GLY+2<9TNER(q#TtR#-R-~760BJs%wUL#mXkJzCc*0zs@(K;1K zB=ohHN`^$^b-Q)e6Bgeg9}9MdY0BJ_=-9h|{;p1fi8=03$-`xrKtuW+O%J1cj27Rz z*^Tp z6;ovew+TN@dwk*U%dYdRT|#~mSjvq{PpsaHlNg(J$%WbS=Znk4T+#QLEelD6VHmvK z#k$+TDDeQ7^l)L&fh1}I_f@4q z(erB2rBvtFHi|kS+-1nfB2xcW@iOBZ4)9>~-=o7Sj{g@ja?BF+f`kQuED{jyxpKSH# zD>C;czeiXYE1f;0J-CAEQdd$zp)k3C4K^LVHhv#sSTruCT z<+a2o3WbQ)B*}Tv<<~=ZP!%b!#h#e8-QVZJ?e|gwuf63~a4}ns*z>H(3ZBF>1Hom6 zq+beQBT-eQIF>(HjZl*G?*4F-hQSOvQOr#K(ou zdaL@pu1|cvko4@0;r$;kPj<5eFLkbZu))4b6S_AZS2lBQ5;&e8S*0cx?VpI?bp z#Qc2@6@JXwo74@0{%pY?L7?o2)Tn;q+&N*GFF2NW`jBUzrvI+BSWgGV{(HgAn-w;Z zinxYP*W}KbFSr!;o$cRZ_s4}yp8O1d`+*?0DxrPAK(5BgIFDLqz*SSJHfQgy1m|dk zv-6bIjH2K=IgLgp4fB*q^dgHyf0kI%>j6+ToQQ%u{6I&n$ozmSoaK7+WtC)JN6rzH^8RRkFo{;BO zw?H%Z;@Z8jC(&vimp`K}VHdz>%(pz%q}%4OuQx2@hBW(9Sn5^!X7|v(h^-Uuz`dR7 zx+RXe80C9m5;dQ~eoF`*H4$Jliy?QFB;I`r$fdIRBGzu@E0ldu6Tn<7q_b-tE@uC& zP9ynf-_cfqaBRtAYjJ5b(_WbZH&)(?=Wr1lheT-&?I~B)RhPd*V*vq*{=(OrpOSRN zc0FU>PJXiNCfu-dLXd`k#XDs1%blp1^~KlS2jgAf@Jfc^eBD{!?qs(>^|U6vl)AT; z)-yxnaZ))DVbhd6OyiM*^hmatHu*{rxvG$PKa(zOr#2>i8=da&pP}&iK;@hRD^kpv-dfC{Qc2Rk9bfCh z55jzdQSxZyS*O89-I?B(BC2ElaS4$G9#?r#vK?o8$_OY_I8I(`{YnfV4ZjPoype#z&fkk{T%yIogUVH88 z&gCGXdwU1gx7XX-rRC?EArS{>8upBuak8L$iKcWVs``m~zm@{w;}f^D2tg_gr{uA$ zu%_BH*~j6BjCUpIqJ-*Z^A~%fs8D_f>OonG+jHMZPWPi@nAN)XH(@U6vy2J&D7wFHSWta1TvRwXel#`V zqPgRV>fOy(+FBg>40l+mWR#!=0xA>xqo0j9C^kT95Op%AXRhb4LV%c}?2V5xj(?ga zKeb4Vw(smET9Sb599A`Q=rP{$-0Cz|+wmM-->S>Vr@Br)R*(-6k?G=8&(VV0jHeaQ z)%Gqs5zdVV3KLMFx<9012HyxEV~5*@KaSq$m9f%dz*LKO#+Y-DVR<&+x~sc{YMf7VdY#zP#1{ksUpSg0ZcUMwa3CzM7SB<)-Ouq+=Ua@=0fPM10(p> zTn@VKGtYELB%*ECY>68ilv(eNRoGpA{B@Z5zhk~!jsWxJcHB_yx?LL92s}?)rrc%> zKi%&DM$mVv55@rM*z$94LDa6YaoP@ug!Sg0e-kjwZlYt?F2)y}bd*{0I9TZ~p%5sQ zDntC=U9CSZVATbJvqhe9vIcCkNXmw`y&~5Z(WLhMIT!zkz6#93Nj}H>asSR&LcgCa zrLJ4!`x~|CoL>%yN}qJas1kDk|5zBPqO~cmX4wZI{_jTBzkiVt`bA=QPWFIp21u(Y zsNZ{;H=vWqg7UuSbD`~;g*$0%LJ4)i2s=LSrM~^A+q3V=e9uo+J+zExJNGI}d^m_k zGF1%B0nQh%9}(99HQ4{&&G^q(DCr03jrzU6Y61HQ88>h4f&p!jGoavuZ}Y7Xm$TvQ znets)aNoP1`hD&h_?;h_0zcrizWd8b=FOYm%h|Kk9CsC2(ny&frVLvb5I)J6e0hx= zF88^U^ALi`<->uB!}AzZFmpWzX-B~TlIhn}VqTA)=7|qvME{_DkR($^;}suB9nN&`F4UugcKjEwo2$ z#3k1MZUPn<9pyXr39mfAv#^}%aQ*VM^!X7bGv-XMZ)a`;1xe}f` zSNo_T#T!GzZl3c$rnLU==lZ`Yo4?*%8Kk)fx|^%`>g+tN0A-x$`hKM;-E;i|O!vhW zU;d2={W_pDRQz04r_AhuJ7{X5??4Oo=az#X6%7;679;^8X;iM0P90nT)AiSE1t<&! zqc+ji7o(tsH!n;m{?lZv#>qTSnUGFg%;@-iR%HGLNOyJsAd;oo4(6^abamsrAiBv? zPhtq@_1)bBmjQLJUUh(tN%H7Ns(mdRB&j_IXj~giEr)Agvv@lIh%2&m^70=b^S1&n zR6y(E!a%h98#^YjpB>sw?)T0eqQ8afAKM0+h+jJ%?)(Pf!KiD)n)3;EAGQ$RCK&TK z9V_j18)2gnWW5B_s-Y#2$2;iJ3P62AZm=3D0SF!uNe*q|0(epWr`w%3^=*k&MYk$e zI~z|ThJZcpd>LdwX@2s_Kn<1LSwU(@7ZK+5eUm}(Vp4*!pi>VIv}tp09@XpdxY`AEHcnu^?x zTL5H>{JW8>1Uud9^)bjUkPq=J?Y4thKCLnO|JxFZqLhbTb^dc8M4S}bz>?3Ap!0BFguB#7j`upP&>g7l zxd~+EemBLzFuc_y+`OQuD!dTDs%eTR?1UN#VCaf5a7< z-;}^m7y6i_vq};X7!aZSIXM*;N&$Li^4@9g^I>y) z9duEuq(T~nhMxsQlxJ&R8)@dM;4;cbZrXF-Rr^P0OF9q>&FmlWGR1vN0t2U5lDLnj z3xd;6)OB;rzdYfknQ|u z>lwQJU{Y}B!H-=E3jayq{(Y|zP@D^mKKY-g_m_+QFQ4MGK^y(UI$ZZ3tjT|U86~t1 zi0Kdh5t9IVfG`bk=P-?tqL2UO0{;6G=7T0l8Ksy1QD*TwbIpb_*X(?Ki+_AsRAn8{8|44rAph^g2d@9`Y!EIp1?z%8#}bT~M&Phc`VH{OjJ)^SxV(Sva)CqX=k!E( z+%r&BG9zJgj4lqNfuoQBoB9nX#jaB;G;R>brxLi!B_2gB{80?mKcyhKJcaW$^Y0Jy zo$(FFV#-wKdU<`av&&2^se&@-yr`N2WvJ86O!lrO$++Xw0TKx6xv5RVO#$2H%s)#cT2jo zJD%?{9MytPfYJ#`4U2tQ+f9gpH3#ZLyD`7ZbBk#V6vuxMfIQPd(D~9o$^NG>RUtVG z^tlL(&*sTnS_mbmfm8dEJ2QLa3dn47AEw^SdR(DyFcET3r}UOLurI>{mB=jO*{nj@ zS5?uY6ly#6*)ShDf7jH^{MjJ$bwl+19m8oKr%I5VvwJU4&EO!vu8DJd9OGhvPm8UX(39moSUBg;F02c5E zyk`a+83Th45f}p?>!EW6E%XSZ`v!@CJbMi&LfS!eNJc*-QZrALpo7-Smap{lRaru9 zNzR)MPe=0IjXQTpWZ%zvQ75ZRsa>gps5^@aO=LHm8MKl--!_t{i4j9m@uiM)&82|y z2&1p2Zj}oe_*7h$t{}pL@xz*90cxKU-6w<44%4?XLJ;tZ-+d25w~} zfHT8{$+3-0JBZVJ?%EtkSMh-()+_xY+lKQWbBABm2|c^R*cg=0j2-12{?2E(NO5Kr_P|iFyk+(uqwdX>QclBy(TILoAX;Kj- z*XEK&*VG3kY?MEMCx(X(o6%&#%~Z05cJpM76U4&11~CGlq`FPFvVoG@O!jWpI?g^= z-0*n*Ck-u4L7~LZ2!QYNM1wAX z3CMw$y$eo5gK*G}-~FKPH2S`%@%urhEeDKe`p}bXV1iJxT}V$1D%qWOJc3%2Uy#*9 zyDOGO&0cXEVp^#r^V}9OC5pVS7AFWI^H~A?&&v_xbFCx+ zJH030@tFFifGSxQ36{R^BJKrj0}Mj~!OS~o+w@2$q=gXuqV-U=B8W1$C)(#fc7Q}J z1EfbjcXrSpb*%q}ZD0$@+ZSqn2`b~$qD{QN%IV<~K$|hb6R!MwGs50uhAKIooM5!P zX0Y^LDWbny&l$8vL-H=mCAV|%C$RJxkidoLYD;6Qap1qQpCLw(k*@VX$139Q|&%~aIM*qL*IySZvz?4l$U!zpo_tj$An@v= zxE~;>l>#!$k>z0g!@uk%U_wF>F>J9u&0x=VbZ6|AZw$+dSzgclcl1{4tL02r-uL*ltE}qw5R~ix`FjI=r5f$T zPap8J2L1aVFyb5YwF;U6Z;a?B@IHYT8&E(o2ufPyBB?1LnjOThqGQVQ>J!RP69VoC58V>ktO_?4#RpYZysOwqk7ab+Q_X zmmIotd|?u>bRdbh43al9y1e3(H|vzi`xm`J^2QET#isq&J}E@}Y{^mC%`2YkpRvfa zx6TWb=xC%XJ}h#*vCq@TwXJFY^wK+OJMNnP;tO88(y2YHlMfAm7tK?3yB)K=q$`%i zK_GJIM~F_ zB%a7eZ7Y?UP0os+T$Ufx4kVCW9S34U6*uCjWi?{WN$fI1F<-NW`agMK`t8gH@d@D* zoXl_9dnTt6>d#bmTjBacRi(Irfq`36G3YU|{^qa6NvjMWCNEr%pxIh}$)k}Tms+JZ;qhy$dZ8w|-E+J*zo2;hs5Ww)pZ?!k z0560WB+dHHmAc++JU8pRDSVFO_->1*Dq4OVELBe0oz(nO)~yurv{THjWO1qK9;X-q z0l@KuNi2{bGq?7;H;uLN{~jCHG&g0xyIOrH(~eWDWsRJrj4s|l5>L(c-lyFXYH(E- zNK)_f4DjZucfM!PMRgt_kQAkRNYNduGi1qn?VKmV<&dJUx4$4>z%HsPsr~sl6S7+} zb+$VHqQ4UPOL2Q6zx{&ep2XiEgw-HPhqq7MVi^1Xx4@Q>^bfg&Ca`J%P?yCTDA|mG zpv5`x7Ycidqnm_7)C>T`sZzi#42g&9eXwpKCWUyJLMMx{S^kZI&b01o0PciTiuX); zIwrv)ode$9cp#UPhcGg4e>LBj?9oH#Q_u!d;!}rM4r}z zNqkcdM|DXJo#13KL;M9A=g^EvAVD+K5oI-dt~uO-bOeODw*3|cLCsruk9;vHyBh#K zJ_HP$uu&SMcG<4`lU0vb(Grx0qRiyP{(;1!VE?g*OVzRmbcR&%-&j;b++A73WLBt3lhUKz{&SWNY=34H$;>vRSZC{t=8kP5k|0Q~j- z%~vNUiwB@CdUcMuhdYS9w*p8txZr2LtGvb;+*y&h^w`{>miHe4M+{A*_~|OE}NWB)o)8TVGSZ{mua|P)vC^Oo{NsS*uQB~dA**pSFChJ z`Gh%ww@-+15}@V0y`-&bJ_!LAdx3Okw^Go%XJ*y>z!`LZ9;SKGC-gw1BDIx{w+%8h znRvkdf*bwT0{a%)J)9hzT1D0e$m~9=Kt+>mf@U*dq(BIWhNeB{_fGQ8qc2;%fqXCl z$fi0`0!^?t?OD<_N=EnIMG>QqN(j8-vO~L|B~^^AMMy|_E3GzLE$2ekxDhit z)zOOg(5E;ajI|-24B69~L{e;m&PdoX`)=MOms)$ruqsUOlSEhY*A6c-Xnfys@Bw*S zRWypURFcUO`D8OUY9*jvK0Wt*fMwO$;P>P~l3S!j-6@z%CErNqhP7NddV?Z8#NB?# zrBMiIyaB#VUvOvKZm?o3kS$;$XlfD>;m;kCP^7!dgf$sE|!m$PkVn)P=}SQqEFHs9%^nF!I_W zqeC31p91yZu#@?w`!62T5~UJ{d6a@a>Ztr9>@u`Hw7qOn_I>Ar24V{$9Yw+nbow~= zlY01UhA28550xN`I)xNstEN3SlmbL(CQzc~p2Rmig#5tVS_k&Ig)fm1Q8|~vt!L_P zIQrPsj*@)Ud?{bPtBC6fV?9drRIm&6R7CfrP@4|6a>Mb7JLXM4Q6c3Z3ihHf37d@{ z6_$%a3hcc#s{gT6=4 zGtTJ+oGzgL(u9+*(a22ba^2Ibr}H2=c$&fn8O@CS*gqg1CEkmf^B00Ku4;QoKA*PA ziZJ_9&2UD7ZMQz!aN!~Z7}u7`N6IIF={jSD>gpvO<~O5oIR`Vg0zVvrPV^S2tkp+h zT^fytG84HD^y=Skm{H_`*40d_h|JXZY?+_tSZ?KVJV9>l{Nv7e6^6xhafv?ybc1b( z(LKI%Qv5RQ9qT9?X1}}ksxUHU)Gxe2d#4cpio_|m0g**dnTQ&dFVZD+dN&KT+wxAM zSTZ_Y`$&*MWGh8L{{9eRqikLzt=z0K*i~oHjVR-jucqsItPNbtpD>`R8x}%OpbD#m z)E_D>*5COJ3EXg2xq6foD}Y+7K8$L86VIb(VWic5CW@2*?paYSCoAc65w<4|$XB8J z$k?TG+{|C`+C~%+^lQ}XiNA1*qYM_pV$EUIpDfuiMoGr69K(mN)qSEHcNsM_r(W8N z5O0aw&*ny#xw>f+LA+M`c3dbp=tZ~7Wz%Z@TO;cWJVzXh0hw#9-b%saHLPRUwLp`ddN7O=|)gG>McR_}g=^mze zt19BB0Lg4{^jl2+pdYH1*#fcmItGHddk>H|G&ZW5#u%(FKP=4K!%bW9QTpo2po1z9wq?ajWU%`3@oPWP3ohJS(tePJ?N(aV zS6jai1vW5t&(bO$vJqt<64wXiw8y=FAmPbJ! z`x&dsMX+An^2xq4;~}Qy$J;(w{hs%f6x}kOHMHr2{@F&G)+-6S_sRRO<=ek#stVt( zXKDJJzgbz&=y%A77-EE%58*5r@ybQ!pM7=h#9p{kP;e`VrMMstKi{3cYh$;`FlMeeQ3I0sCc27`e&Mkn=TqKIrwW^64h1Z2VqK zctVDcQ(C5-_qKETE9S3=z9m=DUxo@yjiMz5cbI*PMW5B>;Q*ZqC{Hj-N!hR3)Zi zkPNN=fn%Lg-7FeU`OSudw4K(RS8l-jqY7?08*twY(~O|mA}eJ1wgwV2^l2zBilKx* zP)vgGHTr=ZBgPfNe&sTusE|6IU-3&h$&Wg1hg{Li?UFfk`58Yy@?H$kO&rFU@VjO3 zIIKQm-g?Px9ODIpzT7ZLbtkr&AUfMhTqZ_3F~a)QFcq)vgzi>Ga-F6;YSV#9l7XkW z0%fBVI79S`>p>yk$HEgl_QGi2{9ln)$S`yn>>~sAi`v)7vrrsmFR->^Jh4 ztfv@oavsuE#m!O%oMeBuA+rnlevCXauzX5!zKVf7g7JF9`^5Jb8u@<+{DoIM(wnrx z%6U$)Tu3@_&sl}KH4yE(vrIW^gL}#MWm%Gqsqi<`Y!k8@C`?=H5nBbHSMkj5m3sYQ zyzS(0UbCe!u#UnR~pZ8xSUS*UW-d|3#|4IHI5 z3nmM`)s8;wNZk3*>uC4{$yRcdw3)&k6Tb)dVZL`7CG}VILb3$cDtDFNbm8A^L=yud z$!KB7ZoRNcqfWXLk?bKWBda8Sz(t*LWssUX$GbC9vN_Nz=wZTuy=#^Ai?C8;Y0#C} zYqzr_aHPb4zQvwE1tWe~COcr_;4|Fqh;mftBn%}%iQJ7Kg|V<6Q`!^~TRMN-!ptP> zAeK;8FW+=!8(=UhB|V0U`NSIzD*;0D4=5B;_sxf9r9^`xefRYDR(Bi54yGO_;{9kXb6aMN=USXavF^<}qjUal{gItv z;R32SyF?LrCdg04@|*Cl21c01N(IR}^&@6N5Jy9-9YSN@XmSo15xeMkZOb&qjL;G#cV(OtH;BWq=c4^pS58|KHN(@Y13)c_}Po|X6e(C zWerzgJt@q(;cyPnECe{HA7P=`Eex{5G60~ke}yFBX`>$AqU8=KO%u7s9M1PCBuz57RO zQ67}T!UnL0IcX!9IT!nYCGn0jaazBlsn_kk5}uSr>&NF0MG>1pn&P>doQI017`&(4 zlaC~*jUxq7^LY+sTdM5(_qD*dquU~(CfYK=IQdZ;_Bi>%y#;<3l*=tcQHpZw1`i6| zh!6p3A3pZY6@6HCg=t$pb%mV{v4a^nJ}?T2YDfz5M{evdoTTzW%u073wh7)**5Y3k zG~JP_DxWjzS$Vf2&lUr!T94iq-Gb&{yUD1A_I8_};5v6dZlnGdCVZlZqOi2$)IwQ* z?&VSQV4De}3Z%8jNMEFIz@qpaexjccTkN zEcU3T3QYuhuH5T(r7^Bwtu z?gU7Wk!3W;u~F841?S3H(0WPBEx+jhhWMb&L+@6jijpjU>&BVX{YSg+5{qu?(D-Bb zid|We;$^tk%=63Yz>#+E8a+L^+jnD1nJWwy1?<=2&mU_e4evh_zscI6@6CzRfJwd{1Q1CBUT`_TRNsyF}TbL8f6gZJ7lzbzl z(o%Y*;|(3*9Pwe&Yqirf%>9=XXwGuuJ5*@oPFJ~8$oSs}>Sc2B`hLJ(FD6Ihy|PRp z`^MniEsmfq2$|mm1=u5ZDKS+$oM70qF_8fB7c$eqN!)5wFX+r3aZ2Yqw~}HqCzz`CXRxFg)V$>r;yPk4Zd=(oIKL#k7QWGs2O)Libqda`> zwbro4AZ~`0aTH*mHZ{L zG@;rq$nlh>e4Lo{pb@tBlGB?Wucgbe5q^I+uNSOHtjl~YwArWtf2ZnHv@#Oz6oJ>H z50o%y4|S`!rC4(=C;~sQpR)QS>;-d3*IZvjb47X`-rk=Iw^9*%lODB@{VF58Od`U^ zJ48rL!bFs)^}JPh>7@+`;-h`#45`C~DphM~hs(RomP4t1q+?{+EkVtJ5Yte!2yqpk zY^M?=i(1LxjAK)DbaAXTJ8r9iP8kjHXsgDs#bhwqiojEwMVgi?pn?>6csT)O(GyZk zE4)4dA5F&_RhoX_6`Dx*ymH7b-%*nh4Rdz&C9GjEQ{D8xBEOGA;uU|j5u z#_cl}@7{j0oPV3!-54Kf>1{q4sP)}Q2vIo#e>M7C#r)(8eaFySYt3Q)QKi$Tw5v1T zY7L0Vme9cxb^iJR_$n{b4b}+W1COKei@8ER!=dXZZ-4P@6KFQhHh0q<<~+Z?=UCM7 zCI)+GX}YlcdHa~!<&x3ppYdk^alaeI^gO7j8T};S`>!SdfT#!L(ZzO`GaOGEy>njc z78#!oCC(cyhj!!ev+W8JHhM(&JB3Ey9ZBmKx-Cw7%iMR?)X JTKXe_9vr)4*+_Q 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

CV)AVjBI9P@vEFDd1E- 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: Apache-2.0licenseApache-2.0 \ No newline at end of file diff --git a/doc/imgs/logo.svg b/doc/imgs/logo.svg new file mode 100644 index 0000000..0d74a61 --- /dev/null +++ b/doc/imgs/logo.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/imgs/pack_into_one.png b/doc/imgs/pack_into_one.png new file mode 100644 index 0000000000000000000000000000000000000000..5b98ef8e9353c9f246709fc306bcf8ca210f7549 GIT binary patch literal 285887 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

3oM*Vw`dRda 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

jd{ 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

DFmY|9kIEWusLwJ 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 UN3axA}d@4oo( zfmB=DhA>Vfsnw8vD7Qlsm)GM}<+Fn#MY^_iZhpAVbt1d%V0y^IP5i5?YK4kbhoz>c zy}&LQ3(*a5eQ;{{>e7}E08$Do;*?7teoUcUm#gqKKs2vE z+c@qxK3w^y!O5HNRDwZDCMMB16~lEcKNw}8@|gmh4+w%$%QIg%=BUMZ=Jp3@2Ni_+ z0-VE|-~r82t}XNl*oIXbCx?@>)bylzG+W{cJ4&#Fc1n9y-VO?*$#*@StPOV^{18Jn z@cKo4T4xo|9y{i}^o-(6<{1! zu`PK`uV5Sx@h;vk24Bxv<7z<Hh zR48q~Dp{cYzPVMEF%Qk}`*c{uaEDExTj1%XCLhgX034khyd6S*!}qk>G4Bf@p3oE) zE3)Gz+U2Z{h6c9PF-KBRHew@leVk9^ zQwr3C6^8&G@$3CGZg#RR%Ir2?L2+>IpSl9Hm30vNB<7=~-fm^YQ9aKa78@5&tC*St zMyJQt`blhyG_dzkIx(ZRa*@2yO{3EnskGxO!^xUe#_4&H5B1peWXm?HK#oj~<_=QQ zx|kv=!JEel{M}dbgTv9e+Rv)zguuSYv|~7(-tCG0(Q}y%NESiwjl06J-X2N+hq%#67_^07px&3GSwT zUeeHcY#_zy^Sti$=<6oMW*x??A{4~T7q+*}FUY8C&JBT+`e>Q@3{Cs+6~S!qZ-Dy# zqtv84pgxh-l{L+KySu)sdWKPzM)ylRx>;_^(GkysR+S?1CTf7F258;NBnKHjRU}4!?aKe z_>8nX^(&hy5uXFQO7cv0Fiu|;;k;Yn>M{T*(e9;#} zi+{;akii`&j?^@GNo?TyxL0|Ydu=2xnm2&?z9h8We>eCB7wwLu$TQKnC;qop>Qw2U zi0$w7j=3GC3=w;3X^X=dnbvtaqQK`Fq4cV$dilk@*7}@xWZCA>+X3KNim!4Z$Xtz5 z8d@CtrpapY4zz!YZ7v%Fxe+Zc738r)H-%><6FpzJ$LE2P-c4N`*W!@WVHcjTikg*d zKlpGaDj;#c7@-zj+02p!?8>afcgy#tHuB=9=J((BCnY6|By`i}-VO*g`$(9Ve|W35 zc6Kz2KKyoI#_jq0E2__=fPrtwL`x+MB$zWm=QOxfu2!#h^DQhrbWh0HpmBFDpL|47 zInlAiQph9XB%@wlg^i26>snCDIpqv9SjpqOPVEmRx4NSjuNr58ZAgDz^!xY7< z+FKZ0(Py*L6G7~~Rjb+LwsW+nIgEhQ0j${{^!GJGd3w!dVoy)()W5JhcaUZ*CZ6*# zgBD~t$az;Syt2tTv+HE0D2YJx`$ztv%n30Qnv^K05qH7IRoTPw;W=_j{e_YLT%&r) z!U!fKT58ki;a}Cr>bFwz<1>xp^*Gb5g{kiWC5jL{HmEU5=>*42k&Jp{-4NMKqkW`) z&h-L#Y!7{kbt{d3JA*e^oGZa=zpJZ+szUG+dq~y0SEz%8&9S0x)oXO;jL!a$m8bxm zPOGe=On$y>!iU-bpeooTWsT#czJAFB_-Zye5d7P{uc@dv^!5hRx*!IB%k;Nh8=LoF z#}09P{HU|TqGm;e!rXGNv^vh}t=m`fl&$L^y&)7*5B-3jF789zxmjla&3Rizqtf)% zWCP;>%KX~Z-jBur^4vxA1iX2NxR~5S18JpPzW6w~D1%)}Dus3CF8UXCsl2Eo#Ot-T zk;!w}84bG1#jyq5>(K9hxmGawivkrq;bR%i~;mJcjb%gy+3 zjQ=7X1qALA+Qs2_dGLLHZG(3NbqR#TgPNKu#m%4ArVH>z$bU#DuT7(2RSt6!AZASG zz7P1{yxXwDvj@W9s52ZhIU{sso+O{A-aAxGF2UDL1ViZ^MwQ^y6pVl zGolrP8}-O*p8+6NIb~%{8%}NV!^p##W%H9?Ky$JWF63VE(t#my>FGWvfr)Cyu|t$9 z#6(@cmeBQs_F~8A!@@w$Hu9J4KuO*#0j?GORL)o)!d&MNKaWDq?|DGwG;UOwD zH9}2dG1p7>Ln>{Kt}WSLc}3zrC)NrcTQE@y=Q4|!7)KQZUeVe-atqF)Y>=_?*%a|i z0@T)x9uKM)W})y#&XFa}Eldx$Dt4F8tOLdol_2cO@`bqG{FEgUxhZ>>Oa1)qNYMU` zL9=Bo7Us6A$PE8VS=J{?LouOkVND&_!6OkjvHO_l3g3>C4_5@k!DV0rqb2u7Xroii z^_sJ@&n7CpzM#|tjT7scw9 zG72XLNSx8q-rZG6eaiLk2sLlX!t(;M5xNxcWYRUu2Oll)moN|(oHqvKN$tLG2|A;$ z%}+v|D5Hx>-tVU*F4A8oReEjaB3ePD%5glkmrk_Gm1(MezdS6HyODz8J2b^eKAH+9 zWswnV#AU}PrcwT`h};m0!x$DtxRqQ$8%pl64#9|mUu9v=>j3^g-8b!S&9T@gNRq<& z#<0v-h?c12cE~5xlfb3G+~@}*!9~Sl($U%f4wl#W3dg0J*iMf$?=!bNTn|z<$^ zdvseU+emDQu2ZT#&VYcn&C{T1|1rlxG&Tt=OB-*lO1lvhRshBUo~zQdbvR6=g|Uz{ z8akV={iu&;x3P{)S+ z%*Q4=N)4U7AN9mKt*-5=*oM`V5xd9N6ixN^)d*2PyBF?ikK!X%3sZF&>(}94UWC@C zGPr1mp+is(rbfL3wotnO)#y<}Y|*qR|mmq zv){JL1J_t{=owB=)Dz-`>l!w(1tDW>j zC8d9#+La_O&~DiF++{bawEtfn%Fix_tfPFIsC zRQv8(=S9jMmxECB!2y=QPA%~?pR3c?q*ZPexi#B$Vs4`iacWwGB*XJi|GL@EK-z@4 z_sEj>+}8f%GOZ=!VUyWzF&>rzV-GMJ9yeTrW3hKd)O3@gr-fQB7!LTm@y^$6wkt^J$7Q@h zXiWTsOSX|(D4h7$`yE_Cm1AR5;$5i?^%swt&uT{EL8`3O-wS??EBrXPy zgishY92Z(#k+E1NjyS`zrymM@iOtaph}-~yCN`J4ZT*@3|3J|6Fd|xC4yZR9Xz+Bd zHm(!Y4^jTQSwdVQ{d<#i6*c(EA1Iah!MW)?M)`PH?BT&rjc-j%O~O{3O1$-&-Cv`> zd1PK#F4ACRm&siX4Xxco%ezNXBlt3_@2|O9nUMLo`u@6>&H}Y(o-<+BPdUZZIF1j_ z&>Coa2+kx32W&NCEDlZ+2MX?lJj_*aU48z_SWQiLx9hM#8^Q-&0=rCw_K~7LzCTUV z^4TnBgn31ZMl6A^m5vfmOi0wvJ^?Z3v(+y7RYU>@cB2kHInhie?~#zK#zf{;ief?y zYvkNHtpicHgwxU8EN9j@k6vq+BW#yD;awUkqT^>2V)(hJGhZ?*}B|8n;29R z^kwtNl-=XIsi#Zd`V>YcCRY%_>Bw-4v9}~sDRrDw3FowrAq76ZFB1m?B2Aa;WzPSX6yU%DwFTzR!d>i7}AG~FUFQir569~ewsvyjf$JYAr9KuP7r zplsvEkdWE2&Wkj$MZR0r!h}`Y>XQ8<*Jf@v+1h66N6A^|2!C(1lQD^xH&w6DBGR3D zJV?UNI@FAnbKi`2<0}-6#PAVdp!5ji63_d(9_SB_Cr2B13xWwJxt}9f0VL z<8m#=rItClrW^JhNvRUM?iaViPE4=y?T&IC$x346L(m9`z}^g}^NC>+&JU{PNbj4R zsYX2>{irQ+FRRZLv8J3{13#dq&*qKlC>o)W>?0+xF#!#4X-H(xABS*sAokt(Z z@AIKR$@|5taum!-uCv?9m;NfHr(Z{O1fS;KMhO4uHRERmgES;0Ez>FF{j4bs&INSf z7l3@UEG6+sHpuWQgilA8jyT+e&=#6&f6e~kaQ%)h;Z_>0G+T6-y1Aa_lW36oJ)-8@ zz~z`YffXp!9&1eHHgPO_>|&VtHD}_Moz@4W2eLa}-Pu?CTEC`?S_Qo1Ep7gyppw%!ibxs+TW|387F7?F(bx+;I}jh+0to4-5te z;@7DVD1V<>O25WC3kNZ~@*0|&f+!d|%^n;ik)qWKm53y%jiL5R;_3RgO+~@2=(@+A zL{#7jRZ?`D`{~;jsRW8AJj}2rFxaNp@L3_0CtIYF4g?VC6EjDt=LN7rwjHfb^#qW?7g(&Beh&J}xh?c^H*nE^5FcggEJNL@2L zV%k7#H28uAmMeM%ebNxJ#R8C0A`O`UUtP+x)YxN4)ch*%&DE5#*)+AnL$^}hswk-f zThTe^^-~VzI%hsL+1XNXA(#0UtG|6lP5n~g9+M{;8WFLBxo2*h4u(xR+%_Dfx^?vq z2|sI9JE>%16cOdXd&w1ZD-9PgiiKV&Jg&PogTp#mRkbkI0;J({$gQm54>NmlMPj$< zRta3SzM2wI5-(4R?#_JrHKV1#(ivm;JmSKYfxjsi3?p&i`ofElNQgAGt$M8%`E2ON z)99RmzPig=;nJ@hIgnSiK)7ab!p00DYQ8|CKf&e=y}ihq>scsVw6e-aGW1wHCv#+m z`)Qc8rW&Fgnlg$>R2E#bLKqY0FnRmldf5w2T5fo9spFh}omGNNV ztlMEb%kGdg>djNzWFs0L$wAokVKx3ya0`97TP~scrCTgzY>{&BwY_B(#of@*e!tp@ z1Cc)Zw0v9JDpIcL0f|j5OXQaxSN{+YLZQTjGMlU9qX#`(>S@l}cOmn2>9{@Qu6ml= zXyaP+fQ{y*0djGa+_akVgPumW^!;Gxd(3|6;x@I2AR_h+1yJ~W#yqf;nz(pI6}VK1 ziMgccH@NRj`}f6BTaE*VT~LjT91z{oo|zD*N18acz0(SqDS0Cg6EcA`WM^avT{g5M)`7@hpDvNdRS4uEO%KGrv@UyuC8@1;P=Laty zI0l=+N$@p+T*8g~S^>M3jg-Xedhk@Ni*W(FP7)Vp-eCCdP@te{;PxVVb)lt5X1SI| zxLMy0rP59D)pu)Vh8x0k!u`LP9hKQ7hTr!`YP`8Q1z>xFI`c+DA7vH$=MmGwb4@0U zJxso2gV%ChKv}g`pZ49qmQUa2s0iLQ#hBp|D0+@hpunI1I14U=r0h%LqDEFOQg z2B_G&#|D#q-Z}!oiv1x`Vg4_b_a}J$Ksi3O!tY0IP5VAIvN+r5V-;{aSR|Ybk?W;N zz)=f*!|b=&&JcrDOssSszcf(gR)YgQF( z2#s5CAv&BHPIVyIkxjw})GjHRBG9>Ep zuL@>~0vHmsvHqrR67ZeZ=up#*uS~S>+0RJ6ccXLg&h}_2R<+L5K_k@hj~}ltisBjP zC|7E9CjAuai06y(0;!Or{tgSMr=}F5!Cr?$G)+`%VT+wX3giTH(-O}UD3VgR76&iJ z^rK3GiEIRa-1|nbdZ&lnTmE8uZ(A1;q^(nFlnu$ZVw=ngwv#MeD~!wq)`{W5UOS|X z<7x(X+%D~`sjYPrtA3fLNTBz)m+Yw)cCHr2;2L^~usay>28!VLTi9^3oT${#cA6&f z+4N+V->Li!cjGc2$K4`xE=F>!?j9b*XT}0}N65n67%Wx85M-JRcnz;$?@ihBULZL( z)J;+7KG@Q^YSbHaPMBMjmYc-J$Ywfy&MU3|Q7^7@eawVm(t{Y7al1gnnw2~Y;5_i=jR%VIp2E-P;3NX+djI+30Wc6+@S_vPI{tG#iqY-Au2gA&c$$azB zkQH0myw%*d*GtSk08A=5PW#iHD|vF(BKf66Vx+hf0lX36nPStW#1riRFkFv{G==S# zPw|uJT8HdfPX@)ES}jrT<%m?&u66 z*9Y?58tQfYh50}(1q_YYMVVk$hkcQzj33bVZ!)}ncVM=;zU7#!PROmaCrcLgVj$s7 zQs_EG`F!qumWD2Cj$rO+@wdnDXu2<8tBFNNL9jqUsdi`j_ zSFF2ja8s#k`-auK55KBH&mA=K^FKi=97$EH_f#u)L)#ChY#h-8;;gwJa8nmaGE3SU zt|u^pAY^iN&5J3EZwPIuf|W?j!7Mm~6g^Y9$ZQ_1VNW7Khh%<*Flh>7#v8+Vo{!Br zA*Ix^Ls!}Y5QfgU_D{%uy$4yi0@so@zc?Yyl%_aoo91^0$ajplXw{t>vAO>Es|hBl zy~uakF40=-ebRJkY3ZKB&&cwlgAJ-WnAN5-?*s|OIQb9HX;1iK4EB4@d}`ujB#IL- zSC(3#QPa!I+NQv@p{s@<8}gq?YeN;&g}q0fg@%0ebPw)7rJ*i+842VlO`QXW&Ezbk0vhU(*?1>jLe69vqCV(xC z#|RNB`ZaeKykg2(-__+NF&QpsZ)!3qDC}ep;q^~>6_%cGo2F1G#(vZ)U$;@qSqtJQ z`((1JUbE_H4{jNP=)EZ0#9ioInbfAYY8xQ~kst%lHj$%x{XLV`_-1Y<{?Eqm*B=_B zhLWP~9P?Rr#Y_2oS=PA<;a>Z0y%a@k&&7QhFG8*_tOPkzD%V(zI>>Ou<3);ZrHSH~){i-QP15%705WOrvcXXGb}XlS`Gew@ z>w=fc3PW&$D`MYWJPIy-%G4y15b}zgJ)Z632}$y&T9Nc0YthFiGwnAM?gW)YzKW|; z!fsR0l9bAP-*no|j2Cr9qEkdR$pn)l1O9zqVdROOFwI+8v9+>R*15SlVwai@enu0! zta}&#gz^m>D&cA%WaTY6I2iDbg3!o0extH`ypGr&XkI&l)K6F;+k%2&E-B%p?IG&< z-FGo_a_NndZ@0#{qt}AK0VK`6N8Scg_Xp&u0?H0~*f*Ly6oZFW`3cDORs)_@%Gkr; zi-&{=C9!J9VAo_3)r5Mp^3@p~OFrzezGEO>Geoz`#l*dD<9lXMMnf@C3VO|`vxSJq zIL<>}o0>p~!JB02e>=n;n}3mZchE5X*aa=rAR;e@2)h zn8`74GYZA#%saY5IvRq(5YG#Tbs>IN5J(VKPQ?>%OiHm{Go%Hc8a^QRz+hW^_PNrx zkA;M>H*TPNy!#6;>}_@;?$YjVg*J%~3j#q@Y|gZ*1Vj{dsld|kS_>#de2|^QMFkQ2 zJWCLAJ=e}HZfr7KM&6<2^e@oDW;AK!&*XlvL5G)Q^(;D7*q<#)ET1Sy$KGb5~ zBvCR=nldrh%!6#7onX@~zk+Wp9;}wi(W?clEhElRp0L%CZBU3q0>)#m7;|%Tz=cFI zqYa`8%ApEpPVs&xlA)ZS`%0z-l;bueZ@d7IqPZ)D==8SHHYgMted1>Z%dGmyLkg-P zAZ^cFP-aKtD)>m@>?NJ*s6k-q&)ffkflP0H;Q`f5^@H0EAf;?Qa=^PY+@ivN@vh%0 zzwNRc+YuYGQ457SmMK?5Fm`31cVSd-#hIFdrz}YEBHH&O8dgF$!_6oQCstyj=i;7a(OZy->b5egj*oQrZLM8AFbm zi0rgV$%SGXr3JZ~C1fQbRf%l;Ke`fFo(iNSu07oI9PiCdEu9pK;}^Fbl<=AGfx-m= zX$eV*^p77uE@tIjsk@b?!BdI^QB8&3B6b&7ZpXo6 zkI}v?x=W~Qil@cKvM`48?<*&-Kv@=3(1xuJ62$$*bM?(HOrd&ByW0}|)fXclFZKk? zKL}BQtp{Z=WVv@82#pee+k2OKP6FQ%VHk^S-p3qmzS%uSV$bm5wX+6Ro6Z~qpeRY( zem0LEs)(+n2Oyx|)%p;YX#EUs_yU zz}$ZR92uxM2+KoRS^rI)X9865{l_qV?1H5|eGbyU|Bp*sJHmHS0G^{AP(?8{{`j{M;bFS>iWK{8k)1KO1WNRvbUuWc+4{{~xkM z$@+kr;y|-S{~*p}8Wbb6*s?}334!em>;l7+3~J?sVmd#kqB5b6mansqm4#tBHh1^4 zTcpY-tHO($i-WpVt@;q;z(Ghdm;nP^xtCtz9T zf$aoi%#^;=+Zmz`Gn2Rn`;o*UlZb45#pFzjEoV(7`74u1XJH-_sjh)9-Y|FAFpmdy z5_~+ad;hYpQQ$sy<=q-PC=TG$Y!A2H0&nTBo+(@dp#%CEc_P7^Ws}?r={s~-_yH1g zb=^5t7{qQ!=P(>O%pBFAnPMy{DWcB{lXz{hGO*XX$G6|={a0@yQ#4JH`Gr87Au2B3 z>VHHW{@BmzB1x4_76*N`?N_TRaQgP_+bDtY3iHNmZ{?gvpy6U-|2&?!t*GpmBOw8c zKW=ln&(r8un(LlnZ7vyKOMzp+JS~^H?0UIEcbvrx_laeKLt!b*?a{HVh)15RaGkXF zSyOWYuW`^9Q#(5Y;H4!oTQ_rQ_u?$@ z^BI!}NbW)I?nC;G+{`@=gFh=f6^&b(5xP{@{j4_BWNhh~6rDKhJIU-J8PK+CGgZ_3 z8UBHsq*P`?(4a<3e85z=HFNO@;RR>jl~Fx=4nzBk(7Vu>Jv50@pEC`p!kbL8A1w5# zfBhdgK^epJqKvz8D8dxSyT~2_ayAlSS22}eIPu;}dvx029`|EU1Xzf@dSDm#E2o~o zSFS#UgG9M=LIdRLyw*rKql9RRk16}zACYDBZX3mio zswgSIl#@YI#P083LqBAarCmZbq)_Jy$|uA7Id>>!?4i)y;ptO$%8-FuWkJCOep}zN z5I`>rXPPv8ZJzY&pERu;?Pq!kzx?-@H-aPU()ujsG&HaI@IqjDA{XJquW{8#)i%Hc ze*rHbi5JV$v;(iRKtI3=>CbXFn4iO{jO}B$uph}Kz1Ekf^HUc0A& zg*aDVgh1#oBNzEciUSNXOW(rD^cRr;u~-eW+OFHa-0bQ<=!fvYBjDVB5q|l}@SMiq z#Q9B}-<-o0lE1grZ<+I3Apc7>aR2eY)K+Hva;#su0KYZYvI+6OB-C%>{3gzCgYaJz z_-!pOZ-?Km1lO1O?PvWza6(f%$lM2`$o7-^RhcCeJcIk2vaBVE@z2T;xe6s z;gr};{QAzGtw{F|z!9LWWC7~7HtKZnsN+dg^>V0K1K@{hu6uCbU>6 z#d~$5Mj5yOwFow@p^V)%7TfnkdpexsX>jOg({WuJvu_LzTPHoXawh2T&u94U*v}?# zJW*RW`5&}s`I(+D55S10RQ9!hxD%I_3a06>ucH{-37h)A*j~HVd@fkDa=ti?+#O_K z9%_pe7W>4&GQ_?uWnBUchEy}cMG}4{A3ETcAqZ%V4NXiBpqAG``Y*jRrbsp-f)QlA ztL4l+n_VI--BAfmnM__AFs8$JUO<1+C)AVwCP5+C3CWb$lk*>$5>tGz9EQ?J*8zCM zXCowm;8#cV&j6_@wS0Ig!oAla2;bD&eb(S3(hm{I)zIAnoyz}25w9F=I=fv@(`Z$x=wxDP}A)hNL39VN8}mi*=Y0 z#y-5)t>=6Ej`#iJJ>KK}`}-Wn(^1Ua_kErBd7aDW`kd!Eb&zW&+%U+yu+e1hwddEr z{E9`;RA-w%jx@_@i`2WsMe zIBsZ06wp9z%>DkZVJpCc^lts$0X?X})ifZoPdx1 zrmb4w+5M{o$_d1;I)j0WD-Tr6YgXrk3*A5)YeOq@P!NFzx4Ai^3h_Sv)1RFHK;IC- zIKp3~N*7>RtY1I(tnu2njpP9NSZ?v@UVDagIj~7&6wZ9D0k5E}?CrU`cXych;e|j$ z`M*6K0bK9^Jf^J1)LKVh`1=+J!@Z(=9gv2AEZy_#0}}eX!K1%V0CWtfIM$rvWWjzp5P05#=kfGl_wFBC*a=$hBNp&9+GE6QL@_F zokpI5WxJWiP8bN96e|@xl7Pp6zu-l{A4jvl{S}ljv{3n}wa>%fGr@xfIqF6HT__D& zsB4$`zY9GF7J4$PE&zTn^Dl23h>yJo{E?S>^Dn#UFI&Ejxn`6;hJqK*!SbI%)heLK z0YW?fZIlf(7HS*tzs&@I3+jyuR~-tWZw+Zu|2jU*pH*9FTn$vYBVGvpoAv#@OAHl5 zI$+%N?+XT?AuIm$9#97W1QBQiE~ojAAJkI;+7BMx*a~|CNKFG_cNIudX~;6Zzeb zkx-lX*WTckl>21RxhNS(&1=lAw-oO2CH>`JXkP|=Wg;+K^sn(52Rtc?Tzb!6YaRX- zJj&j~%>DmL9T14e?!1F`G}PA(m?QA?$zU9yk}>M|yP-7|GN=V#(Q$&;{JpvkSOG_5 zBw+1f4bty`NBQ~<^Diyx7SI{|zA*^Rb-26)Tm_^QZ$rO?Y>BfK&4oHM0SQ50iI%FH z{Hvf4d+A@6BlxX5B#S$~GXEZ@>;=DsJ@~Kq{wu!!Y9BDz|J}U*wSE6}9shM5kmvk= z_q;36Sg4pAb|J$HVS_q(xwuoRN+0${ryHVL4v=GZUOz@cd+q*5#vmUx;P}ydz0(G~ z1oiZGu^k^q)(7nVN3c;D{^$9}h|hOvC*vOO`X1Lh{!nCpaj{5V^+_t8bZC4%#_Xs1hU?%XziY+q1wd72+3dTfT+{Al;Hpa0I2y#nHxVVN`2 zfBz{0W<0CO!wLUR^EUVirsnQAoPGM=nY1EcO10~$&r0A!-Y)gXb?cMB?;XdGS3n`z zLqi4ezq4ywpaI)`hH8IDz=y|x&lm|zo%(lFFIJs?z3l`1%l^CT1Vnxt z!p){d4C#ocm-{5v3kL6~qa%JMD@}BPefP{N++bGlIkJeET_GVLa!U$sEX{p*750dk zL$&UAB8+27xMro ze=>z!E4AO4f;=TF+u$4Hue#efyFD?qsw%4T@)6T4)IpoEUw1Rj!7S^$NCEp4B(NKx zdS|nM$PE-cZ`$~+j*^@TGDb~K<{SFAlfiJTEmeuuH;XB-{&0jW%|?~W!q>rLj)Mv5 zZP+9Igfl*-kHDo2QU#|p2w)5X+F!PO=)}UGHrbcw9Q{YUd`A=PmKYy(Ns;hTSZkm> zLjaeIv}V~$sHMU^1RqxJjAg(*vfE?5ON$l#$ky@J<-g7BTE*9FA3?AP0bSEQy=|x9 zwz_>Nk%*I=6nbj$? zDI#aSsN51OughKDQV~Y97n29Q3?8-=%g5B>}%InU4zCN|mpmIEneDl5&uP-4auPAJ_;lv-i zSh&X_N^H_|Bk-lVeQGZ%!Cb;fislnT`nl_l8X6ksRT#PI3W+6L?c7=x`xDj4%*?E) zq9X1!Z1B>WpZc_UZ3WT+|4br)TX|14=p2?<><~>&W)2ujXB~1~I2OaieIC{`dE+H$5`V$sop@SAW<-?OC`Oyk zo;z24K`c}^T}RyiTdy5Nw!h5FhQ zcau%3g!74qj9+$$WWvDHQP)iycL%9fO&m6U*Ye1}u@Dq^Pfs=jfJEWzoZOS>103M4 z1-FT8RwW$MfYJBKi@`R4(M2CZEvG;os)^@CyPX1!a#lx%vcWW!J!5F+h)iiA#)T1Y zX68Eg+sVH@3zW02-MJ<~xt??A#{{{k=;dptf8WM)$x|r=MC-p-=g( zyW=>ljO#GfYP7Y!Ka^W-mE0UOvC(&=z$Y31tfGMX=1Kp}?vS6KEeE61PiVaU4;O$K z+SS2te3b3#in$cJM3y=qOyu?k5ncrjmF?4Cx!6YGN&B$b{gYp0ASqTNxBE4+|X*dRzG<@p{h5yFZ#k^+ z5fPUepfLsj&!|u}pC8v_NL{z;uBz@OzH0KJ8U)ert zT-tNIDs7jzSE)lrQ7$6|dEfP2GHw^7<96WvQn4UXyTZo|xJnpY-3opXWbjJ@H2jOh zGi1~bJrF>%dzj=IcRb(FP1hA^$r=qP?Ie$pbG0zFP7?vh?vx*t&ivc%#SH0$OGIYo zm7{|flI_j`#{dFD)|g49?6>-NL%Pr&)r2nYN615Ai#hodLabQ+BTorIjsodhPF$V_rF=-zQpUfhHxQHzZ3(^C!u6&mAJdV8OOE zZ)IsK4-vfIzb?x3VZR9fZv6tvnIm zQl>hPyFBB4Zm7g78;eNFb2~$@9efXdM4X^fH^nuBJps%=5$x^IB|S4Aix@RC+Ba&Z zIea%5)wZSRN?JuBx$irQfO70YF+IuM^igpp`Q}CwjH8)R9)8!BjrND3-=PD$-ug z@b&@Bpz8x#|6+jF zu!5PYq8HOe-1u4XW02f zoMzs<PWxk#d zJhdOJ`=9iam&FX}q8QI!L%I_Y9sN#LR3q~}N&fydEC0hntotr>a;4sKPQstNBlENZ zTeC&}4{`D8kM5IOl7-HbU$K;R`K!Zn2fqixRG7skSbe(|5_Bzj)XIvy*ZLf;9yKJIYam^rQr0u-=0gjqEzFQ^u9%|N9D0^p z-DpOvz&i*FVhtF#*;#g1XcMfN1*~kPu{4`~LMd?1tr~By6yAzqRUVQ5uwrGducDx! zJ8`R{-@=ja+TTu%%ua2{{-!Ql;r+nmeX7aLCr>Zj%Y5Q~$HxXN+{(nd`4}+n#s65( z;I0_b2b$C4PaS3CJ~MMbVn=l;lLgflwEDrvHb)b3;!?bklw@Rxk_z$Zy&THN{!vns z-}FAae(%z=Re@ud@>G&#_LZ$U@Lu30J~M?u&R3juLvY(9@-FUkT4nmdZ(Fv>oAbsnAYAfF=DY1O3SHU0@ zg(K2uV{EW!{;wLTWNo!pd{Zp@aEWVYNT)g0mftJIdA@r-Wd61A;B{bR1}(?3&z=JV z=gyMKH1okrzigQ5Yy*xL-duzA%OYb)j9aE*t+F&SM=y7^U9R+=9oag;`f6K<1EA%{ zn&KAk1%WU^CuM9`Z!AfFw=sIU3@?`Jc@99(EaB z&zyWNBX1wJa%7_V5rs|>xzd+e6J!3=H?QqzhweMH_wTJ(58}PEa5F<|VD1~<4eCOf zK_JK)e%?vB9sXt_x zIryYB^lPs+I;nLpaVcFZH57Q%6#^CZT|@L%%*@jWw+8dlUX42s_XYhtj$0i}dfpPS zWuRHwc~Q%dj(b*icr)1kM|LV)w*vb4hjkPkU4R{5_`KY7V873fjCf_oz3mwjJUTpA$a*4+jna6U%SPcV`1zOu^2U4FqihKjunIVdI#b9h zOr5xfvxFQq4BR*H%CLeu2c9FeT{d){I`w-8;SuNALPtD-@G{{{Ooz}Z^$R$bSUh$I zS!}VDoRsVwx;)gQ#@dAK zbN}qR3frVuHyyMK97@?~ZB0u)Y^?qLdyHX~irE3{BMFVGmehNO7sT$2eOj2$+A=iJ z1Rn{!sup-7O;I^K{`-YoObD?A>IBoXs{umC!$K2 zZ{0%LUjQDUz1xqZW4b;C**y_G(#DPNjGNg#KlPnrs|rWu*=AWQSbD|5^nI9QwPVs( zm?#H_TaI~Glpl4vsj&W#+V_+M+3L)|_R2GS{e>?nL)sQ4P`S}$AyhspHeYevv;*9*T=83S_q5v+X3=*q=G6;4?Y6Qrryc6NU84}e0z0ydj>UjoiFQm78J zw6Sbn=+9z#HwQPEUXo&!N-{7>R#b;~oSnJI+vZfYk(_W#n*VSco~B1(1Y3=ZV__*f z;S3r1l51~kYBzs*(}AuzA*t1;7wA)dCDt_S#5ApZJ_l!Ixp#6ZI}1lO=KFU->gp9;6Qrg)S7$fF zWMq3ck(``kPrD3%n4K+ms#2Ng?0mB_RX;W&5=28veM)Zn>R#>GW2Io%C~>3ug!V+| z2#mG<5*E$?ORm3KoWjWEq-x`&HnHxI+hNMfc8cl>38ma3X+^#JkWTE`xqEf78S&Hk z@D6z%(b65lhJcn%@89BBJf zonl~Tcaw=a;e`t=*wC{ zp|@zH^=qKZw_T~!JcN(y3rb80UHKXIXOqHe&5jI*w551CIzOs?2=^?=7ubimKAb$V z#{XyDc6r_nK~bR%dqg$PU-c_>+#Z1D1jft^E4nqDbmPCk-3YF=a;+(47LLCZi z&VRf}^m^Us>DBXdK5*~7xiPn2E-g2U6(Xu{yXar84b)m(X&PD_A=ug4HW8Qj;UrX4 zTbl3&V)Y5N{M=}K)8;BXeL`&m(D#Su4XReWL^WqAIrD7~uQ{SCE{pkeV^aUfASY`IIsTi>hvcdLORiGf@$C5-^t(uq7y7j9dGo4;_u-+w}zJH#fu7(kFB@t z)091itb%)9FeVO!R8PJYa^M9ndDz{qy+F&hIch>iohra-p_8esr1WA6BfQxGX@*r|iN;E9E@r=Q{Wc5*YTbg;Q9lqx4p+lsu`f0BpC(l! ziXM8-%x#yC>U*|bqAm|WAn%8PX(onkSPt<4*cQk_dX%?)0Y>NyU(YBa;buzCwFqtsFL&~bj|)XRcIe`?LuyiN}$`JPVZ z7^TxU1o+jG>OyqW#jU@f)0+SL8&eh3@<3XPVW13sDg!Bd+D%qtJo|EVY za-I4Ob74KCJJwo@;j^}ePoo%^;&6CAPTB9ePV;{r5Hr}7vPhm29}t%J%sD&JKe{|dKS8b;NUu3BgJ z#Cm7TQACvY?j3UfaQXwB*L^!&ugt-t0F`vjWB1Cd0557)$+0ijT>R0u-4J}Ef{Uwe zQr#123{RdecWmt2?esn1rG5M)FpDnX>_c5X`aENYa75}e(;mW=SEU0J&Q&jvLm0C~ zpkgLZF3JjYfe35QtWrPW2KH$-uSq2CEqQo~$vM(VzUNu(cv{^*N1ue4D8dkg&rPJU z{n|rsQ(2?NR2snem~U(o0hZU(W0gdIiYXZ2qt4xSR4n^7;>|`WHsqrRxjx%`o*I-0 zeiAgXXO5X>v%p;8uT_K_Y!x9N0Q-H|{Jsz<$?dym_W(z~I?&2}$?!8BdfRl>g1(*R5vQB=pM6_*(DaY z-Yl*LXx^{>8ktYjY_#zGl?0<*B5uVRKF62?#ts@&42tW`*xnkEI*QLsUHy*HXn0oP zh(-D=T}Hz6OWaP=gIyzYXN@v7KHC>`WcKV`=^M{~UvUk_#stwhq(-9KMieh~K-@rD zgiMX@))3T}4U-icu+3FJomnijIZf`aLGDKX71jN1p<$#RQmB%T`r#J2MGTcvp4@yu z1tv-dsOy2GaT|2X9or`>%JR0OOV?5t=fK=npG=7xxhSKoPsaT)@ zZ+RPR(to0XuhmZ@6=tFD21vD&2)nuo>jV~deOH2_WZ(n(tM*iA35cB8{}J&CaiZna zV{K#UUYuXWigVbg0%R_KM-xL$LP3OlF(R{C)%E>T=Bqg!Up`X5yx{wQcuMuwuh@-@ zbwfzvYI+W~J8Qk2SVlDWGL#gvMLAEUZyBjhYAG7$wnPbEKTK=!rlxL}PZ{7y&91|CNF!mGMKd#!{Z<{D&LQN_3*ChC+*;u)FnAmDc5#7|~cgs(B z?;K206dsfsUM_csw~z1E4)EydE_gemN%)63IXoW{P}{~DE7_kF08WUUn7x#uBF`0P zLJo5>+ldlb==CDNBS>wOXs7yAJG6@bvyVG>Ch^Q>v$Mq~zs&z!KBl4vf#Y;|y7ON3 z4y{(%)4Ok_A=L)DxB*S#o$bmg$g$)fD`)$dq5RIU&o^N9XOz2wHpLxcn|pzf&&D(UYMXHie*@!m?sWPjN;P^(Yqd7D-;(F;`1-+gBNyq zn`qov-=5V4M%uHX%7}dQAFf=R*a_3q>%x0Qpnc!zBox#EvhWBHLF-(H1x+2dch*+` zNVr|I{^~s|gNrq9E%p99-xti&>Iv8_R^q%N0n1PJsUt+Md|dt$Zud%=sJkklHIs-P z4>T8Z*IT9uH$`Wt=-+-AdZuPFXX`N7J-#6@;#iwr;y0i2(sbGo>Cwt2d5`f0h;>Jv-j1=-Zy zti|56eX$&$R~juDz47lM-7@}Uq`ZRxnk<*?#aLRgz7_YdlVt?eKDKuw9^a_QHO;yu zS;iAlqK!9;NI&j)pXvCnfAakvG;fBkCk^% zpCjMIi8=%R?_}h&y9S*g$ejp*}-;-IUa-UWFRyNW+0vApnpI zCv6#FR)2MNK4_-D8l+Gcx$_2mHSlYi$?#b>P9Qi>Dlwj)izN|)AtPe7Y0bOrysi)p z_t-h{=IJ=Vqj{w&FFT{NxH#&;xe1x zD~XAm+pX*u={c|`uKK05?xPl4qz%Yh7 z&om><(KD(N6E_#xT<&gr8<6K3@TGk&mzjh-`;_bHX=EWCDlIw_IFvfG6w$^H(v8%* zSC}aRFj_BY*=x2sVX5T4rxb-#1tjqRe5~cu$ zKSRi1%HBxzAEnrmQR=l!O9v($%fKknu**U6to4jS<|yhF?JHKD@i8~&y2rQWb!mmd zLQL|wc=mL~);T!HuB3y>v8VVx zkk`K1dDZa=rr=0zd?Gj}^0cbo3l8bWn9rer_7D2Z+bVTI6S)y1-I99FT~()7$_S$7 z%OOA3BLl2_YpX}GIzrM6d#V+l6Ixh(acNch5aU;QqaQhUQ+hLHXj7c$g&Z=jqrzU* zd3)FHTer|*0EeXS<3*JsBP^sf7;@!f*O4J)l+uovmlzKkN?!`X$qt8~yS|8cv%l3A zeM)x3qKV>QMC^$Va63g95pP}OVS{09svbRhZY#$zvxpM}t?4?1={FWoWG%Gk>5pyz z5^~{A@*lQjJS&+1u)wI(V4%0edgo5^kVkQ(#>6H)N+Fpf|3>GT5OZ*h{A14ii4#Q+ z#JhNU#LCscNxF8E)yzrdfCDK9KZCeB=4|*M@D@#Yj&@0%gZe3dHhEM{p6?_B1wJMo z*0*WB;DK#xA{2>iD>(p?BPCPZF9_0;-q9!r(5k4qnNmOyP!4f7(kiCdV|O#I7eyi| z%&f~t9y%i0Cf&nSdq0paAFHdMDzfkGY~j%zjd`b(bw7O{7o>b}2`xzKBkD*uQblxu z9yc(~R4P9fRtY*r;}`$A9z&Lih+64@$0g<%9;T_~+q}3PY)53Ob90|eRhvnzm}O0+ zN-ntZ#6U!`PC$9%PzuujL7TVFDT4btn_-D1S(-GA!Aj=IDsB0458xiSGx|(3?0yE3 zsLdRSodsALkw;$==7%pV<_@0094DMPxTg}-B>WIlSie3EBwr=?2V7(@EQh3I0YK9` zV>heDal;ajs3&4g`U&5!k9zG<`CdvXIF*8&S<3X#e^=l-w)Gx6Yi?vKhTu$j%ix>` z*2T@AAH4FZeDW#-R*WYG*W0&BP~TuTtF z1iXMBRjg_5xE~;(`v5%X@Xpc+d+@$fMM~}NU*dvbg;kkmx$^%<9 zG#ZaPq*yS6E3Xin#%FM#Tk~d5jpRf5nRb7JeGSIyZN}SoVGXdBzH|4e-DLV*0T9&K@%y>Uz_oH?z^$n>2KNjy@X-9CRJsm%lIlDFGO1 zNogPquy!OxbO`=jswuu@S$I?_A@fKGj`K=CKE7e~bHxcZswUM9_GiIo9Z0&v-wWiU z!50HW?}q@M3pja5I|xdv5-*gsKoxZ|c)lG^ZUP zG!xH~7GapxWCaLYi`^f4Q=;o@R&$zS;H6(`*s*d|RlD1%q21Tb(Iq02^3FTr{OtUV zf{PnI;1NYMwN{&>b|8Vs>}Q*1w`=G-=G$4jWZ6qXkfuo4&iAX~d0xBwf8bEmP9`wQ zAdA*FNY{Dh3Aa%ZOX`*}=CSi5S0bh#3e8UpYdp-IeyH2+RP&YrifS6=z7e#6@RBde z377!5vTo$NS*5JWwa-=$T7dS1aAd-I5<4*k@849*&UEg$H!l8~QkbPb>7~M-Hgzon ze_i*EjRg#fKG`Ah9@|tX_*;|cEyV4px|UG+f~Z_At?WORt2U{5{I@tj=LzQEx+B4J zpOLF_@2mU|7vLjBl8tJ6nn_DK9pldpKxm}_#BSl$EM5x4A$3l*;w@+8Akk*PWP88& z8v3U?ijW=-h-XMIio%?Ut|Nsa8Z#%IvLcZ@KfXeTC;7nrtb=V|q=UL{kLD|H1t{$z z=7A2a9vpksCs-v&OEMfM0;v9_LSiTHKwK`I)Cf4r=w7?48hnq3o?s;@oJlpzkhu z*7t42?FInu549w0QLd|hw(%OZ<{ig6ow~b`GJcQ5QAHh-Y&_1@n7kff06uG$;fuGM7!pcEHl zvaRNzWk@9i0-U_{>mRvsb>rM{`X4ibwX&twRA}PfHH+&3m^Npy*EqZ&z?&M5?S8h7 z#&RLqC?^vKiwgs?m1y3~eQ4s~7}HCK;J(Lf@3jC0h8Z@pQ)ZtUBG(T1eySt;bl3;z zghaVu=r&9tX*dmei2Q*$ah%XNhIo*+Lmu8_lRle` zipM)J>mim!VqwxmNnzF;xu*tGV1oRPj!yY?Qt9`HC&zkk0xpMyZobKQXx}?rl~!y~hF+cCmGaBmi3=YG0}; z3O;RUt=nlDp)L(eA;tHQGT0M9H+xAg7ekyj=*1Tf6bk=J1KM=gDZNXJY(%B^ZC?AB`7b2 zBr|Iw~Y4%kzCH{qxduY+aDYn-lwsrQPG^Zbn3zH0fK4F`x7SN2U#+V@!Q%z zUIvgtia#iCh?+w`CtcX7dqQjXLq>W5N6nMnegW+o&6*D0^O>{;1{)b*mq`0pJO}b;UGAj09?sh6GQae4lR%U+<=4B& zXn(h|gh9%}_edkMs95$`v~Wq^fbv^P#_2rP2@qtehzXA#D2Jhmb8I5-2+@Q|g6EWc zgN5BnJ4sbK_UM*qiLfnsg53RkDn#Zp2?~QA8hzv(@f?ml{ozKXkQ7FE^efoT#2xanh!Sa31kykF1#yD=?uVXW0HFCb zao^SbqI8n_I&q&g?+*YxgfpE*}fJX+lYPt@O8VqxgR$xV?xlxZEgqT(#EYm$y9E>0T?IM(h{M?YCX6dtPCo7s&0h_iUa^fWU3fXq|4wIT&DQ zh3FR*BAMKxLRTht_G6PAgzOIqUTK!YllW$-t5s2>-Ra7Qo68I}oP5REs26)(E4BfG zv;AM&jHm>*xqOb^763RlOOJqeyfJ&^hq&{`6MN-TgbJxoJtuEk!`p#+0d3ys$=XB$ z)TX>V#i8AJv3p}#wE|2u!;2w^-RQsV*e__tJ9=!_`Br0s@em}^ZO@g`tIc%?Pi4{lx71x*xr6{w z^8O1ag^v**3Yn{mP63{dLxWLsWmuGd`pN@FbGOj@wvB<@D z6}eSS%<4QxO742H8VXn_doOMfumXIaNxpH%^~Y01Q1wU;pPE$KFh%J+wv``x#&XNp z*2Rn+A&-;w&t&WGY=(3duId1PggXhMIyTa6aJ&*1N{)n+xd6pgoMK#tL;^B9sXH{-$K`0aI< zVr&Rhl!I)fyC);p=IEeTbJV$ucK77H=0CSltz}<_N zw&?(PyvU792E(y8{Z0{Vj$WEJ+E|^(xb-ruqvLL9fo+fEK1U~D7^(}F^TX^}ej}?wo2Xn*W@Ym?&>4WXDJcnqK&}>82Tl<|6YeDY30B zWyfMjaYJu?5ocfNerY|BSmc3>wgpp49mslZ14N58X2j$QxzwtFQxwpSK@Vcg--US) zou4!@#|MFYgw!86|9Wy$$}3P>q_2hxj%+vP2>m}NKfbjOfl$z!eoNs0-XmybOxF(Mpsa&$bN78P(@DJiSCoc&74 zAmVhEb=$aUHu3r4gaWbfd~>9zyI@A zL99ZOPW-ThQpSa2#-%4;A;%gZ2V@19={kC9roBX?nW zG{btKs!w0q=sy6k2|-~D+7KrcxAlTCQ#sFLs+u<~?ywp3y@Y2)cbVG^$Kpdy5lE<- z+c_^b*p>`QP@lXDO<@K_fEmRcRSHg!wgL~2M3O~=&d?IQ2t_`nJ#@C%u!Q3?Chp8? z)hP{vdmX7AZ2Vt3uWy#LpIEsD$VGkC6;4Ay6HhR+fRp$DPDr9sPF>msY2u|6!|M>y zZYQLP%Re1t)j;O~Qs$MB2K`i?iM<1E7aOIp@1z<;eiDI18~A?{?Jg{-#{I*QL0=D2 z&^wqE(Iwrxv{dO`P8Bmf$En)!yw@q4)!^lK3&WO$FP6Zx?%fDR>u5K=Cb+Pw^L?z) zCH42(PPOw_TesyznnV~f2Xw)~)(YDw1O#r#@HX*``){7rA8gx}?S#Kl5lYk458fu? zIZM&?z(zX%il9F4zWpvlBd}w6aq%`R$6LsRd}S}Vfk&|x6z*sro(a2tzRB8WN*O0{752@{ayk_xu+ji|#$GSg4$d`C*^(#9i$QxgGn|P;%}l_^ z%(^0}WJioY%)DV_WXO2DDbKUJ(zf8`HqZCbc-kRXR)YUDeF;yi^hip~NeV5Ti*g1M zTSOb_0*SeWLv za`WR(b3~4T5={R)#rgWNKyLYSGTaA{+~APhdP@sqfBLN&9;GLsUdtVB=93V1eBx#1 zl*_tSAzmz}Ix-}!`6DtdV>g5@ApT`C^z{F?7 zHJ;P5cV^a~Q~4taVm?3-{X6TA9P>{MG%&FK3)(fsqTZ5P81(-U}V$w}dzW6J>1< zlFXD8L6`K@$R27%ySgqRu7ypR4nG|n{DGjeXERxQn&lkAN_L3=E1GC`O!BNz{>{Q} z(YWYR6a9AWM(?+SQzb0ZX?mD_s3jOJ&T;HhG6UhW{g`>*#_$_pza3&vpuKRwbu!Y{ z_M(TBF&<{W%HC?cI=o7R4nHcd)d-p}=VbQr(@(Nd9+4X``hdzQN1&`oEj;LGj zii3`VrS3wR!c1dv^P|j3{Zlhkz!cJS4f&S|84t!dDQ%i8q|Hk{ln#$guwz<_dOlL7$-}*_XG3m*T_xxyXD4sEfI4)135y0Gl4-g zwPU$+?lCqIud8K{>c1}%#R$ipKs^}c-R?OEs4w2A&5HKdX&;Uq;G}BoL>-aLbn4L~ zd{05D&ui%s+>dm?tbBknR*9vKA>P#Xu(Mp+R?>ay+rD5~n;1?I51B!0k}Fm(tI-78 zs*)!%VR$tgoMmPRtQY(Q;t{coq$sy(Qei?A?3WTmpsy0V(kK^IRc?ycUs^q*q49fT zvLU^bn9@K=bT)#Rw(A7^z%iY=)DBJDA*cjVTx)S;>+c$-lgnnP%8-yb`9KzbfkOd> zZjU!)H)Pp4$(Xz_kpwVisMk>JLP6P%_0EDPWaTGj@$_3IPfN8t%WM-YN)O|2R5(@3 zoMSTg4t-x5uy|dPk=idBZmYN}$5xR#o0j<6bz{TUl@~&n09S3KIlG|&qg7tw9gxzF zpRk$>+5-oQ{pRaQh)BZ`ke=$0IXi){&ar9oPN((VhHc`gb^|*X3te}H*R;(YB6PaW zBHnDA*0S&KgS#P zaBQGyC_!~;MTY@^;jz+mi7o?7yOX~L8`ZVf3954aZEzP;u+QID$Qe+*Nh#8x;Iv!v zkh3&Ea+?68RQl6GFj%54IL79+x-qKoS(8ONepE^kDnJ;-d-*pKg|smb+Dr`T03Q2C zzZQEur6V??Ix^qO`%8f#gLlra=T03D@3r#=AfO|U!@+^mYvVO0kwthw-odlFlA(UE zQ3%ErP3nZI9!-b#i}{ZsPAC|6dwMm=0cV`uB-b=FX)G+3tFZnm`H^?|}}lRWT@Jvsg5bFhVuCfSqs&ynRkNJ{4`)c_y* z#Yw`kp)V|vGRP?TZ!coGs0BW&h%{T`SK8F$k4?_9enQ0LTSfWv^>Qtc*L zYy@3&+}JY=Wd>6CHXB0m@M#0^W>1K3Glt5j@JrE&axs~}Jj;{YFWE_g5R|cjBngF} zr3SC2joHLix6$S0I~y_$>1h>>n2mx2l?yypeCRGD+Ts+e4}j5am?drHx*)Sd~5ea!K1qM0~?Fd^ui&JE|>;Vha3B$x0JfZRWBj*ELE zWei3q*QqCcBM??D^!>}zj3KgCT+5f5i4BY0-6CgeQj?r!*W>tHTGw({%~stb&Skvz zDNrC;TJ7lnr)Q9^sHeJXI((_}AhvG-1IT?pwk`>(h~+u?O<;5cvPwdzybG$AJvU^# z?L#JRK{9kGavL19-Jkw78n}@zDbI(fkvm!tO473(W*d?K zSLQq@#~PZGKExmQDs3RFaAMmerXg0%2FN*^-D&!=z`wmJvhR|vwnej#1#p9Te#=#^Wgjut)@oQNs@gDP}iP=)zo zen{GX7+ZU|S6^Cd1LYfUl!K0f!^;GH_sUPq2^aOb?`EP3Jfn+ct3cg#X3xY6ma)3A zC&<3_cU3uKHb`iuO^nI#9PhrrBCF;@vNB!afK=?T6C_E%LK zWWq3@iql61r&Es=q6do)=1uI+a8RB7>7XT_?l+N5&?(P39ly z26NrrE(XPO?k++_+o5?pXZ#>TCpB%(Jt!!x#HioRYXVo!`D$s=d)&YDggQKEFzbQ& z{0v5_(yCC)m;cUuR!b~9l(Pl`M%*2+3@%5T2Vpp^xN^LRfH*2fYvHC((!R@4#- z%!gljGFrgpL=MVB;FrgpF(Wt%M3YcYfbe4wczca_ZqCBqf%(`XG7eHP0K_~*gBpEp zg5DZEWK`-ZC^ZOq&d@Y=h_PAvF^1MJlKY(#wj%r>6iZ@{1iqusrm?CohRGs4`$8*A z0_e-W7)<|XWoGNp#adWW5=Z~i%Fk#jwzn9>F;A>& z>8{Mj86C>hp7_3$`4yy>?wK!;Z|-F76nrCDhl!c_{Y||~b$$B1{9`KI_Y4_eGC>Rw zBo>osc2HsGW~({F8-sv!^)&7tv=_<+rP(#OOaLy>G;lBvh;;*Cdh0eW?nYtK(4qg7 z91Dft2do6iL%%?!>|r1ptYc;C7B??P^y{SIn?P;Wg|`aaX_5mCWUyizp{OPYa5ofp zv7R-Ydkgf2`n1o#!E49T(ZGu3%$Rq2J4Ic)TL%xw=qq+;vHcwECMySy&&GG3uzWGg zny|>rkg?qQ>Sll(1_vJWTpCVZ8fj_>_YCg^Rp##&K|~gv&rE;k^yQk>OxYp{WN7Vu z5m4kwhqtn4Z@h1l(k<$1mRl?4pJ|cvn9Ppqf&9^dZN^X`=i=g1Nx1=Q5ZRlB=(C%r zD2Zu5Nt=N?s!KH34(*m(QG5D?{wF<;Fh~UZL{K@Rwnt^VJijf2P`9{fQqFGndANci znz%4<-RUht+@(BfwCYi z?ycW@tM08j|7gvyXYaLobwAzxbg#9Qff-l8(kDeQH*Zn$oQIf^w%1hR**D}J{y0sA z9j@1i#XD|p_~gi9N~C`hGD~&3lD=GYo7gc%9hj*fj?WKZaFuLwpek9haT8tQ+Amu1 ztn!rrPwY!XazzT^DkB?X=XP2^{grNSTc| zY$aAE!!ADW1+Z%Yfq|cK#%cv~OqYg~8XUm^ zb|Bdp$aH`a0kKj(03*NhW*Pbmr1Ot}R*7axs38AJR*(T=oLsU@PjNnL#GL-+Ua-fT z!+L}3SGU?!En;|IrOE^Bs@(0W-dj4}nmk-<@cI>XLng?x-lA?79pGNfEn!^pdjG3#j*cgyz}hU4m(gKsZ%9k41J+SW<6m+)2XWsHfi$6)&U)0BRIsDQKDK=cgQ8?6Zp>5w-O6Dfr6 zP&6a0(F$#@f<(j)CV>hgp{p75&qTBoZ1N<8l=L`>qxB?B%{)e&9SH=BkZ6k5{yLFF z#1)kzhMjww!oo^gt%~C{v#P94F4pAAATlEbSSaA`c>z4{d{N#VrUI+_arP-vAab-| zIH|;9MUWAI(uq8vk78erLmeWJd?ule$TT`bEabrvb|oJ=2-8gp}Pcu+!K`nk#+?DZKg{ z;9@nfRaV>T$k6G!zRS<8gu9=_OAe_pCF-o!c{Vd+`1Bq3oFlXzdQENy`tb13-M{zV zu*~VNV^PdcTZzxqorve&QTrVJ9)<+Zew#ECpoeaOdw(gYqzNUe_p0_j@9qJevXz+f3^_;j0yJWYaATiOh1=(I8@4>~Q*>p{4 zC(ry3`x-D%C|<9^)zY&?A6NnTfAGc2(h(_O8_&U~x+EOZ4 z`#(JI{%EXEJVmos?oAKmdBQN^n)QCSbS&<^B{&9Uqb`Em9Swa69|$hKHhM(v1DwgH z{A?Q`n!6M*)(!=`&1Xn)u7bmFS`*K0wHW;Ig<4RLCUQE3P;V7zd*?a)4UQF|PpG!M ziBVGH3?T{Fe8DQv&8GS1-d1x6IH5ZXe>{oVmuyKapYOG;xQ3=ma9#Oq%nhOB=6HLl zN!R^{X*K5{>4U2c*tQV)2LLM`0nHOwEzbtW(UdXHA+2{h0!SFS#TL>)yb@py86q^u z1K2KL%m97(`(n3xb95un>Phy_>=>Stw@QRq<~Y%;6k70^m5JfwwIAGd%cxPd!{*uj zr8{4CS<~|1`|s46g~cfz^6W#Ux#}&3VOzcGwU?D@#0OE~8)YEmZw}%!Yh}0pJ#L1G zPtPsw=vym647;{wj*YUdy+-JlaOBm|fW7{(RCTb&2w7UflO+NmhavG4DO5Np(iur| z`s$OPS$}~T(4)W24eu==G5YWF5F)4R=H?B5C@yJ`stkT~mIgvQi$MW3K+fv2KySY_ z;dP|ukr9AzgBj&eb~p*ya;b^o9i*9HNrB~V?MAI6>MXm36mT5Q{-VJofqOL+nY{!j z19ZGJ*rY{{vmHRSH4ddY((cF_fiBCBJ1`R?Q7IPsg;Dd?DDq-^axm(Uz#ng!Kw?pD z<-mf0hX+c>_rQtxO#M;S;G8Q+;jI8z#9j1JJ97+p;$Ohp-LxZladun}KUq3>g4O6o zH7oMscnDeG6wk(?Q+n3aHNlxu;NC{q;JFYtjv6FbZ_Y7qF4P^1z#W&v%{78_7);w39QXYX!)ymI%NgQLgqk*F z1PXSf0jOz10glxOqM8{wZ4^X58v`p6g;3Q5(*}1mfdr}Ky2*+XB!~*2|PfP?-dsAqvxW7?sK2g3C72nlKvX` zS3Eor#9(`rgGix?UTPos%d^1q*n5Ra{NB??$fMrKrYnHly12aOkv{o+H2y6Vw1PYVf3NHhDhC#U?;&>|In8*mQajZih9t<3 z55P5^7{4r0!x9IrRz@?w6ueQM@B&z6Y_ETZ`L8se|Ert-n$W+1^e=Ay>xKSxmj8wx z|3*mv|A{y6;KC%oJo1pkq`)A*@yL3N+~aFT^}@+7Z)?}t;vcQ)WFYvhPX(cN!~y=$ zi_grjU;0Ab9^gwW5dOy7;dLNCg60{4-p_8_P(>EX{CuFKCpPvfGQHp@BP*Z~_r*bf z3ce1w8##l|PX--r=JT#u4Q#2kccwvRnHQ!&CU7uFQG6MhHyDBlTy#YOI{WP``G*d- z{S%OhBrh(2vJ5!0-TJS>14Ma(oFOyj?Fcy9{Zcw7GH|~SuCf`wpa9}ja3B75klN^8 zN<(F1c-~M{{|kQeJgUD2QWXs}KQ#)FK;OGU@d@y%)ZiC9OWu#71wJ!h6=_8#)nq*2 z+rB>K;+x2!)_~tl_}%M5j?~TVIhfv)olK~05c&apDnhXAA_lt8mFnsITC&vBBfZx< zva+?9mlzyFT}Dqss&ND@(e|Q=YDvB=P z-v+}-VM`T8J_dT0E2ierT+s7<(ktMUTA>kRmD5Is-~_Fmg%L-Z$tF55E=?P;@+Rat zQAo+cUjQMDI{NRTD2hlR=f>*t^TCfp5(MY$oh|&?KV%%>HZ3ahA)xLhDu6uUUb^7@ z2l$oO@`OkYAc1nm#2bcZ=Xj!_KLz|j0DeUBxk4b>G`UB}i@`A5AUc2t5$VtB2iktQ z22+MWWmDGRquEt~-hvO@sMV_k3X+yxXGo9y9drt?hJybg>aO)5F_s(R;Xg(x4A2^h ztNxcITpd~zdk-0KDMv7tTMPJqM({;wRqZtO5P>(9y)|&!H2%*Q7!ZU;?i*xFR<7@a zE9)#(dpis|_;?RJNbFoxK0s8|s|vm-g9T}}I8Zc-Kd}m+ z2Z@>((PIJ*e9B<@#tKfb20JTJ#DE5*^#fXGy$B$&7Xb$MgtqBi-qZh8SE1CO5?n!* z8CO>cT3PbDH0qv03xub047PHAhd)AUtsEK9d(1fD8_2O?K{W#mk|3lqg146eU6UTp zL>k%|_5_2mi~Z)v3MbFQ z6e1j=d#-Z&P$9>LCkQ@bag!h^Iq-5gAf31Zd78hKngWbHaN0_aUZ6MDx>zh<;&XpW zC)U`_4{#k!2e8`}5|K5;vnspxs3N6t3p%$D)qVw@>Sh9Nk>})gfLb_Ue=xuXMZ;}R zp!1XKcRU4VnrH93|HgET|PGR5NXO98praCH+piX0fz5+IGD^G=dWkkWVz@XA{D zDf0Mja0_IAINA;hn}BAaIyH_4z=nQT=e2`?E1-MH9cu-Yp&w9*AOY?(I+!5MB4soZ zg88w)#|OXd&zCzE;E2sP=~Uz+p-}`vWB<@4Q36=6-X4+~Dgn75P6|_bz}67{azM_g z7m(G=8pk3gNU6O-o=7^5L=m*}HmYS5T?8Z~4iQMO(fw?IJ|_p`J49eVMZ!;p31lSSEx`<4E&weY9{4CUy>X6V?7(F#e~gp-d!g<_wJ?l?5aTPbd3Xws z;|uVnF&ok0G=RO}fJ)?y;LpK>D-ZkzQP>Mr#6%j)L2dSIA=M%5ow(S4K5|gcLiPo1 zDc=_8J=&>QVWWaJp_1n$kQsf9ym_|4#Et(dgp-LOhUCbFdjLLq*3ZhKmisNl-d^Df zLs=MDD0Z;2%UHbB0{{^v#GJOH0U|E@7rb}?`UO5OAZH{FsQ6y%o!e*aHlQ+tJe<@L zRX78EQ{Wbrmov^s4wOy;ETx3;LjDuLJFi#`Sx7;ZHsM!byDZjI8mN8@gm@FI?+XFy z9+U?Y1Rt-vH>aSMdm51EnKx`{&n*nRM1>NJ9sj*_) z{tKx8J3uuL^z%9I1%QItf5G)%aQ(mAPw_9f*8hJ#T0P}+T1TfeupxCkNuT23dDiq* z{Li2{JxphP!c9-;;T`!m=AVY>r3k+{u$O-NQq)A2_|5_AZQ%uX@j+3nx2$d-5vryX z&0jNFUf&kye|bgWg1*Jw4{z5d=AuTObSW8|MEm;I<8x1!IC!-7wr5wC@(-Pkr3pVV zJJ)XgIqur-iQV5h8a-)Jl<@=%@;`fpsQNTnWMM_~J$2a`}jXd+3xB}{t zA0yGojl4aYyB|QN1gM&aZsPa)>Y2>WpGk%%4@U9zO0_=4vB$MeQ`|+Os@Mc!f&=yF^Fge+l_0MkDac5GtudlySRW0mj{yFo}8;-kmrw z-Nkl$^mEB!@sm|!e4v7n*e|7TmY7A{O$=Idbs-xbvzvS@v*xP6TQ^5nIG5~qk@#cH z)M4q-&gA-!D@1%xxGbjn>~d_S8$yu!Ze;zM#v6`*l}a8p+j3yh z%jg7(XSjie{(uThc4qpiHFC22Qec2h%)h0G{uQ3n&bPYef0&2PNtO&ftcH?5GcTSVUm03Pk)jQ1}9U z?=OTFY<=HxEum&_jq6vEGcIteCV%#y;rSRyxqnFYV<(W1n78v{>5 zgFpEy67I;pgO5V@xjk`^Am&X29uj#e-bm;iRNW&9B0a?qnoRQVRIczj9=&Ycy=tG! zzG{5f#xOx{QG2qS^$fNgdDUcI4>1~qO)Ot`)eGlX9h^M>QhMCFx0}^;w_ieCWxY{- z6+_cy36sON!SWefnf_wzxB@?=jgSwgCIJ9kSX!6a1K7cRv`R0OHb;Tw4R!A$M!|F| z7-%|n?Ap0F?!v*^}?Mj z!sKNA)%UX<%5&Xc%YGq*ETY6JF+0@k5Vyjp)+eme9W+wK=*9ARLlw4UySeLc9|CTO>%)%Cz@bA)+8wsOl_VH5&ykv|*Em%F~1!1|{pEJ-=PUk6D zFTBe^NvQRDEr}M)oaSyYidt5*dqgKG zV7BI)RheoZ))cyA;W;+vsf~7Z+`3x$@^R^D-iHMZr!}ny+N0Q+obx876OYQ)M|&Qq zb6!r~Obuf~40Z9Wga$V)Q&}w`$`GHaNnQ1{tCTIO1Uk7Fs^e`|BWu5`kc^!Ep>Q5s zZq^I6AQbMEHIyB?1`J#CCAK(`H~hjCj0O}QN%=qv&fj+(x#0EG;3{7CbhUFRQF;M% zePGcZ?=SNL)D$$gTr7tsm4#MnnZvzz%SP!$w9%;wsqNHze8wjy1G&nr^Ih-rUPv(o zbl%2oJ832{ACm3qQDHUbRAHvb(BJES{Yeh7^4N=+L-|!-utXnCaQwUFbnqIreB)~= zv}u#IR$kRxwky5|=J@@-@X-X{uxQ2YEwx(m1a5>ihvURkD!S!(r!~edlM0i)V`68M zLsf+W=dA$cx#6AWmWL4<1My0Gue^NVof{d9PD_K?W5-7NvJ0<56P~R+QKB4>%8Nc$ zjEZ&cbf8kY=XF?jYUXfKk=~)ZU~yvFwVG!h!AYK}CfC2^3xHRd@?tj*xe?ljdOVaF z$WsDL7a6uj#UQ`k!Bx23O9Utxxg()9$m<+5fvg2Z>rH|cKK0D}+^1sy5*(Fy6QRftsV3IUJjCu z*OgX7@q|`Z`Vt7XaGehs#QlkmotC?;m04zs@9T=^-iMeeiuA0nO_aT^?R=a$A()?g z_L~G-LuNTOdieGyzmn%MUc zsnTfZ;IINp;%lV1f1&FItdIWn%p!6f;STF-TyrhWq)$T~ed09z;O3apV-{st%lBpK zvS)0bG#uOo`>$C&mYt2-^sNYwzpMm>RIN{Ny-ih7+4e8$3^U0ao0J`TK{X^h!)Qq6 z4S(PyJP_|*xBPvF6Xg-o0MP2*vroH@ zL>QnkuO+o%kM_<->!bE`Q9#zA<8BQ&$XIK3(=cR3po@W34Hp4 zJTpcr+4h6SM+LTVQJ;oH3m_wa1b^7gfG~bKO|Xz>4hb9KB1ME}3dIM3xG5e;*!O=9 zB&hy@`#k!tF9uFfI)?pN;BTP+BcV+|zGT(K{pMMa@vfAbLic#ViM_*dfbuVc%bLtu z@oD1A;g&B&9@uHnBpvKb65@+su&Ah4AQGWG{@t_k%ZblEL)WJ2C#&TBOU^5w0jyg* z=9MN2?ic%`X%`^A%pyCAk{JeYg+>Ll4T~sHm<0}%ID)L}T+0~EfQIJzPAGH1R1h9(oD`&7O-P7^P-LM@wah8o z_1iRpIT~LG<-8%q@aElSt)VWF&`gz2T=HnuYLy<{LpgkL^|~8;^Ff)$&6- z686W%lkTx6%s|*H&mW?Ka

~S&8qR51F!F1cI>O*KqH%a|{i609@YPJg|xEJTf4|lY*4y zvgSeNd$X}O`pJ&R2lG?MLL(?t&^y(|jj=MR+0_&gr>_x~TPRtjeQtcI=Q>efNW{q! z=EzZ1LRg6jU+<-*P;QxVYgnxFuEV=>`&W9FUnsURN;A>t1-}@^m)O|&H_qrd%txg| zf#AbW-=YbXo17lPI5E4RB+VesDn5rMCwNHHN#sezYSwP7=bI-3QxocCh~8cGPWHpT z!k;P4&n;avLr>cnYP3f=ZI3PAtsttLP67c6MNawow-SL>pL~lgOy>=E$GYfo9vTGz z8T7yG!^aRM|2@tm(?ZXtVGzHx=Q9v|55C!t#g03&jkj9mwD%&{g7X7E1Gq`fwR7ow z69qRn#n-L=hxO0mLDp}{-uQf>T>l#8$osDgdTk=N{Rrbe;t8@=bHj6GY>^9m!Q5OhsCLU-xK7<*kchW7yd6WasX(nJB z3Epv#Ddo7eYceKizV}gj_>X19#{Ad;RWyL61ujnm4{0!}Mf`g@?*V?)C)1*w4?1u@ z6nNjUWCT7{m*J9xrVQn-{P}2-PgBPCv*KrYy@6Z*MbFokn%g(>Cx%*wD>!gPxBI?M z9ex$U4=k>eFIvfY8L4K8*O8vN4Z8lZo|>vNB#Lg_ z?oKL`A|hhFKUGwFHCcxHqyW6BLq4se#3U&AMT~SfQx``*wbn7QPieM_T*>f8oa5*c zPxI@AXQtJ(btK$>!gJK@q^4?1uIHxTeaUhoD^Rh>hjXOdOl+(dPS(Y{733LwtK%dq zN_xn3`;WUx+ve1tFK2GnY0#!qZEk8H{5yl|1F_?|gkn;Q`wpSiPIE)bWB0oRv>yR1 zPV)XHe<7He`^#%MYT+3Gf;kEVvr>uFw}vK6Z4z!>84-9hoNhqP(lk(P!q+jn9#T7+ zcC5FSc&LyH2+Yk_SV zuu3;!!YQm_I?-e**vSc|fjBUhOFr;gfgqjc5D=Dl2h&`JChHli)@D>45hkiQu zDd4GiQ08FiySu&ME6(XWZ@G>SK!^^g+y9yc`&wX_&UfmNXKH%9YaG1R!QMb-;7Q|@ zW$`uPb@RCsnt3DIOM{b;N5&Wm%7|TK~*8 z`QAoktkcWUCzV!`cYFF`;d(P4vvT{`>t^c{%mf6Dhw9JYz=<;JD!cDo-g7k&Io0|z z(?~bJ^IaFDa>qeGi1O=td(y3PCZd#c-*P^p$nKoGJarn#{pIv0q1FC(YMF@VrJ4iE zrij{Jjj>9*y}0D3R=2`jEXs`*UJ8_Qy|O*xbNqc}E2nT--=%3JVeQT=6je4&``28J z9x|=6OnjN8>w?1jlGh#EzRizT+F1=}U3W@}pa|{;@d|O3ZE*$Htlq*TefsEXdgb6+ zm8+Ia8tapyPanpe*EPFDCJUuZLEpG!Cr2N=%M+qB!~hC_ztt_>pd>!SCQ zIj;)$W{9$uZwXRfH#Zd}xl6wE%`MzE z!7sxkhx;*nbP?(yVucs=wVrp9ga(L5vv)rE4fo|tMR!JKz6oMdAX*>bgwwxcE1uMlyG{g#LCC@`*jr&;Vp|AGdr0peKau5 z${pj1lhIt~hst3R784~-a2A6%l3_3RCQlK8{>7c1rek}PR_WZ^(^K24DGBzOBii|O z^M!#nX;0~I4*uY>C@cJK41&xN*4PcLvb8%Extqw00)Y35*K%|TvFb`#t(hFpsNGaktMx4cnqX?j5& z!^%81Ke_HY#_hU2s{0Fg@{+MZ4wLW!0bPx%waCEL5RYdt+H|@nHQiXDoDuX|)x&xc zC5;>rE(B@v<^!C5etyY$?q-d%*42)YYMAyRJ&}C!Xutd996j*&h$)_w!$4n zj%dmwe^XHrpAtUQ^-CGl+=!`zBx1bTht zVw%IbUUP#rTjr3vhax#4hkylLgLau3T}X&BfFDnY6(p#iF-^OnboHiG8j9O`D*!@p zOvny=3Js~PpBjEy10rWabU!XdBrM}hXY0LQd@&u52r(j z8*KIY6)Se4S4#7>tqwb5=30(}qVxBb8xXH{_64@;P+V!G%c|nagoowsfJwDdO>3(~$HF~)<P58Jr_}lKQ~(oKZYJ_D zU!<48Y{c}L{cZ@q4O(<&udm+(c}Cc&LZyOFf%09diy(CynNQq51N+l+&s+ zGvT5$$zS)9otM(UVuy%nl5-^cKM>R0T>ijiG746&v0M<2&ph2c?*)*{_c<6QA#!tawVz3EIW=4HKLlQQ!>A|C)2o&mE~Z~&$PJtd$wxhzVHU&c9-X)FOD9Yu#so(Zh;t3!}W57hJpD^R$L{% z4`SNW2d>%`b-W9Eo)6weYH$s6e{It1K%diw$AMO`9;jXD925{jfcwA6QN7`_-LoS) z5X69FHy_Bu@kM|0E}n$*N0}j1yhRGY=>Uz#QzPs9{&gvv_kdQ!Km3n zGtOfw{?9;+muT+!qbg9);I(^!;Hh7*Pa-H_OlmNZmeDoW{$Vqvl@gv z)Lyy8KUa-x8r);%#FbT>zU6d5Ce>Lt|vu0bvS*J1K z4d*J=qULkhrQv`Q`0?@BC@=koHR~tNJat-vN4E9d&Y;w_Y=yQ+g7UNO!9e2!{rxYW zV*rR31*O0Yzkj{QX+cCxRiSIk!;D7s9B?MuEIdBdYyHrv#mFwT;)Mu5{6gh)pB+%lb}CNFb6vk?`b zv?&txY&08Qu}vz^T~IeU&MPgu`%clV=5Vq`?om!KgBgd`EnktlrITWs<=l8q5GHG( zqoG3hkAPe-S`=(@`v)eU*X@ZxDaHB`IjudISHEte3#*s-GPUyo3eBYw0I+RGHK&TP zkuS|fmn^EM-W!L zUip+3vz9$ybx88PJ5Yq_)nv)S364O2Y06No>;AV6x!8pD7Dh?(C9?2_!Kj#WTKTe_ z;aG=`_A_&s+rPt&XaCz45p@B*ECeEAY(h0V}fAS-i9n&wI_L1ws1a)x~Ped~!b z`Of>H9kPctM=*L(X&y(!(|5BkxSU$y(e!f7JZxoYy5r`;-#~W7YWT20(=?VChd?6k z_qD+BEM)nsE6a>nhuIDYs1be-f0eZOm91RU= zY3|)nzlX+;JB;Tri04*+2N+eeTXTvKP-7esVay;1z_I(g=J6zs;WAUGUoJtEAn#WB z_F}c1#wUpwjg9HA32h-keB_R)d!r?!PYJa7{x-PJnUDUo^qth~7nNFel(5+*Rxe&# zXydXVW!B=FU6pC8v>^@NZ}55pc=BKUebV4%p+)~za2rOH4C$p1bCc%dvm3CjOQ zyD?p+qw%epcTMI11F!y6iBODT!m$M6LpFz;>X?2nJEmJNnPzZV!LQm6nN{`c5!pcR zTvg7iFn4MmDqiat%Qy2&2hGY-!4aCaHePO7HsjtO&4uOOq(o8Y{xJs0OcsX}<-mf1 z|AbW+G0#GB;Tp@3xzD{iS#oHsM!b5{GNk1sqUm}}I8yM_K185D>P`P(-)_A9kq*c9pxXR% zlOPUJR&(wOi!obM$GMuoB&YWiH=Qn-~>0KpiVjuXFeP&0s-o zEz4%p7E=yI+!d#?`$ysVKf?W@@MXi%NWb(t^ zjEv{8%>ke--WdHu8@~JS-x2QJ-*4EQU&)Uyh%H}&+uFy!Kf-rFlqk1P4Ut&+$2ttA zzcDv|A@&Dqu5j3|_j~tyy6eqEWzdf(g9JJ#Of>X{Sg)hi)Z25@NoAv5=EHAeA-K%9 zALOXzsaj{$<$-W@#2{fPPwi2A%Rvyy)X5=Krfi(4241FoH!^OEV`WvQY^4tHX!8{i znS7_}*wJpR^TIMW=uqi?-!d}v5{*O=C>|DNM>!Pb+*ABbM-IEhC+d%CG?)eqryPS( z?=9rYkb&)g5+1j2h+?2nqaO09Ie6#705lFeK9+}g*0aT-QVsoYn;`uVdDu?Ora^5% z>X=QT@Tr2MVyARMv|gcND?BFe2AvuwohGs(^roe6KYDk^B#&YRe?^Uf;m1+mIggzX+*E=wR3d~WLk?H4tq2mkzMU0ymjB)X=K zMoPIe-~AdbY5w6Jq50Wv()`T?H!3ceJ1{Ae1bl9whHGrj)Z5tVjf3pXd7|8$G}>4w z{2`2zNN}2`p-317Z?#Q;f#OUAfKHCL)1P*?q6rn>$f+rq4oJaOK`WKW)+sJ&jWpDz zqhZi+Fgpip%Qrur@P*TstWBMI<0~VWIM;~mR!xKQ6U4I$SLY&3pIWVxgxGFF#36B& z`BUfJ8!xD9R`Ed=5xHA+CW06L6Cz-dqV)o2xCRj4Ww)r^P=#7K#$;pZZ~khEu?PWe zZ|1IM>wC5It~GmH^Xpm@j;W?6?F&l68jbDpd=8bSClh?DKRB}p&yi-!U!TCH)QkuO zp0;*+B65UUEJen38;e#Rqt>nYol@DfQ7#}{6irjyAEfyrZIwv@lMZ2ZhMKsraxea; zC2cZO@=Qs1+2o`{NwueR(FcfpxgioJZnrjCG?Qf)Mh7){s64u*Y%_3pUcTP$aqg(r z;7##`AB>~w$TjO%?+>Ph8M5>(JMXPCq349@hc(*m@fHjE#tps`ql~*{bnxX2F>n2+ zi0NM713$))zMeq%WT*8ou55kju58Q|>z8o?&wnN}#9HLR*7uGWm-+AK=`# z7nsK-4X57aGtKkclccnvC8%;$Ctg`z{^&r9JQz#X`VO*chVh9%bQfQ^H!+8{36wzq_=fHVvp3S`ScyZGuo^cXl zpWW6d<|IXycRH7@g zIKGGu&_66ucTs|=+wny;iey8cTu_p1`4Gen;hp{;ETs+kIM&zAg|Z^tC(vw+3;gub8}jKvuOZh{fqUnNoxrt<~<@N7DiU^>ki zOa{p5oc4xyZ0;tN9q1DcL<`)MSXjVqi(nWxEzCG`arVFI_g8ABf|H9Hzke^dr8mXqyv|8BP3qpT1!hyU9}BPSEZMF+G`87SH|YQ~ zIuY@U2fxaPA{&us2Mel`!O3Uy!CMq@v!Wlw#7G0JwZ)ApZ`vXHcgrB`X&2Pfc;PJ_ z?7XpL@A^!EZ7goQ(;&@!K2%Q~dDqiOH#+|1m~+3SNX7=M;I{M6_YMmPk9VLy>erw~ zReDjR6P>xrd5VK1}G^!%%t>2JbPA9O}(1)+_&>wF?cw2Qr)v-ZZr*yAk@SC8- za=>7P5>;HddZ1OVws4#*P}gh_>{Y_<^9AMDvTPuk#77r)@dqzpe0Tu_L`a%0J}NW( zezrvU7x3@V?FkS8gKkhagfRXs`FAn1!$o(9r_i#mWxlJ6XDf94U7yW-my4z)pgLQ5 z30C($CkEgIGaKUH)#Vl-lu*2+NMrqS>7g5EAEkkngT%uSo|ta`RO4@Ba*x^r1cJrR z=o&IZjA5|@F%0m#?63_mRsl#Czh^K~l>u)u0ZS&qpc2zgQh+%+|E^GCxX|yAd%U_j zZAIUqZrpZx@NFJTg(1{d!gw77aB-pg4tn>p19_n!S2zOgP~2L#tvwm)ujU9>LO&xn zRuFr|`5%>Awv#TCekOf?I)-QkVic>&;#my6MPo`#1tMPKpF66ILg`$tNk`tSIM@q<8flqWMN9#TE8(ckbU*R@k-t2 zsd8bGB{q31QaJQsZHUrMU^eoZXtLUmAoLIgKB%(YFF{OHjjR7GHFB3mU!};w!ukl( z=B0PBu`1j<*^czp;efdLdZabibA2T!!fThOn~frqNhpKYYSnYLy$G~TK-DcSP}-b0 ztg&d*T0ahKzjgK9UX9b(Og7?IcTz$d2-ku?z3wTaTWiLb7!munK|)Y03u1D5a$SFF zL-I`dH7Uv)u(rq)@lL+x8|dUBsj(|H3K>&Nj9V3w)^71GPn@l`N@lH3Kj zNUvj!eqM$J>+Oe6nJ9ep(~&p9=$z&K!g ziLho;GrwZpoLcaK{#i??;0rhB?}xu1z#O|mZ#_VBp9WI9Vs3h8$e3U(jat z;J_+ewaG}gpVvca$`@WDEV%3_)Ok4wrscfT^}FQ5tqiOHz@H0#jRpM>?bxH&l&NCE ztc~}VpX8=oo}#rimPluUwdftd@&>cy)GC)vY)iXu$?v$;spdv5jH@eaWhw}t;^#e# zNMN~p|4h@#rul%`v@`FAV~ z`Z}E>q*aeH2H~2QIyAJxva34SPM=_+n9V|?3_#XAFPkBZF4;gwm6?KOLA6KCuN@2B z@&O)8aA<k}J#q=4;H6wY?%6^3 z%$SHU%)4}91^2IG*$BPP`(9T zq&uYM%+BPqT%lxn_9Vqu#0ps@(HYxWsS)G%ViKRq0)^PdNT!4oVljf^2EZ7yX*%Fr zv^M%UFw#KRnzeC;?ojX=gKVlW^nvkYehHCFC7wc>|h?vW?r_T0lNZH z6=>;IydE!y%I+L6)J(d(l&vUX{$S5JvDi%nEyf>wuo&;#0ho40Lbc9QAb>y3@$nwO zCor>r(Wd-KG2Jel1)=9cg;H*sfgHW1{ByfoFP%zi;!TXwdNf74nzoId=xLL)J{$YR zo2cAX1kmevsI#EDMd6+P(+`UR;OLAX87(;tU(okAjn8Bt1POUi&-)DOZ*(UEoY3{x z3g7sss)8t8cAoDCoE{UwEczdUXd!?CSin*9DWMkK(F2@SY)~X3itf2QFG^|lN|bgV3bbdp%R+dPcd`$TMZc}lLl^7S$dKp90n)+LXRMDl9xwszTwG|km`4v7Wdl$UYy;uz=e6K& z3I09&ngLOn446=7Ni2DWWNb}miSbTlXt;2t;)<&S|b0P1D;;D#7Z zkF!U_V0A7sCsj^%kE@i#NFJ_h?%OcQzR%Te=E_MCg3=yG|0sdMUG?=SNUK8nI6H+VYb8?$Bd3^93?M0R8 z^HkMf$6S^*o!M?quvcSWuc!h`B;u@*{&x`Cp||U**ACD>f4qElZ%~Z%rR<7IQeBNs^-KVjjDlNbq(IH6{vc^SO<1!gtE4td!itltD8)%py<+gdUQbeRg0LIzPS z%SnfuNtOC{OGX4)K5xcG13Nyyy8+X6e% zm+RnO-c@fKX?ip?#)b3Pbwx8I~_RfB@rzX_swUK{%Bu%`-~#-GY>BQ<9=iAl9a9S*z;cXdj_o8Bl1oL!QKAZ1ClG#d@(H&v=dQp zSOk-hzBWxT@$fj#S&w#DY#HOM0|X#Knv|RK#{{vo>R;p|#9%{ULn~aJ00>Vc)s!5>ALX@fhFcp|H9u|drqBjubH(r9KbMX zR*Xj>CH6h@GVufRpR=30X?2W2)&}=W5DKktGTD~r^OvNWu;NuY;q9h*vu~@NusbUc zRLfRXXv5$mro^jUhl}Q73tF^lfpT!_l6x#Sxe-~z zw?s$0-!tmjRVra@2o4#$CRsJ*xfeA}wKgPS_#MA8Q-xaF7bp>b7_IF1IxFX;GN12S z`zChsR*v;J>(!RO&)acl0Wovqr#UP7^xw;-4IEQCn{<8_BOaeiqtP~?MaqY!!%1UGDngalZ1yKfgH zaf zEBdu-xz2i@3;0@N4-mK$W(7h1f&+(Ocg!SHstDHiFpvn*Z2}7$T6df71l|1QUv%{1 zFsj*y-j!zX8DzXN>WqR(MA@jbt*6BU7v~_~6%JgSOCyc1F>wb*)?EQaR7mHG=X=n& z=)&6MvP-@zA^PG?IGEte6@#X=Tk6l7wYy5jw;K+i-7I)|=-K!Z`wl?=KUAmP1&$c+ zJ%|xOl&F>J&j{@SZ6KW>Tc>E*bA5Pv93M0GxrzxkWAe%M7}M+$&_W+?p0`8T*II-887{mE~ijYtc*A7>K$nQ)ughJL|L?TaVCTS8-1tj@R&ULi?RGEVDIu2LyS{j z-x3a-3KCu+@)!YTbK_xs#jOR^8yecoIPMQ1k=6-+s6LA@RQBTPKCjBX=1CVqN-R+R<@Yi%6*L0AjucZ9McxFdcDSXS3}kC zjgok3@4Tv`+Hy&>A=OJYW(q;tD3~zqL%#se#TZx^dr?$u|8j0!O#9U$%&k{7N)eJJ zrYGD|h69|P*!;8~M{`nau{(#V7E;j7sbYl4iA!JFgVG!p%Y_L(f67tA;-VKTP7W3Q zPNY41h*de(I9aN-n?}Q8q7T?6fZq1ay|BRZMhEgeAt&Gq64v=7W`W}k@9{GlHehbC zqNk3*aksMlT`_nh*VJvzX_l8-ma3F3ky-sdFO?u8zG%rScV{8<-J5;&=S-io6pTU0 zcHlrCt)WolZ+w@k*qGQrRE|)v3J5%Zk8`M(i9e>1dDZ081_%H)9x{p}t>0(e?h+F) zuxbzzeB+&I)o6P?y;`KMij-W@aR?KE4%5!Tn8Vv`!uYCIR6LwtPASO&wUNsok{S@y={(ZP&s5%*_alj4d38WY z929+`8vD%H&iQbD(y(7dUzmVNA|xvL@U6=o1|&ROLO+V}}*} zg8EKQjsk6rn$z}C&J^IAz5&nFnlQ0r+SDU(AK_K5$f>xm0En5#2`2QRAZMaYHdg9& z5m7O^r9jV#LziMZRQ4?Ir2S2234ufloMULyDYp-VjMKyy(#5kXm`=u;%|m*l17b}! z4)ND-{a@_8by$?|_dh6zN=hh5NXQJJq|(wzhf0@(Akrx%F(66^h?Gc!r1Xd|bSMZ) zOG}GLm&DMq_cP=B`}XtO-Rs(GKf8bIUit?YIP=uGPrT0Socla9Twupw$rX&Mm*_96 z^7jKxe@0h-br}|3K}s9d|GI^oF?#2Cet&y%9rd*4xKV@`G+x2p-joxFu`HUnP6J+4 zaE-@Eu6JCUHAe7UyI0_A@yNj@+gN6_+AxFG=46s+d9G`BZ{&T@D$wdcp}R633=zK(9JNLn#2OU2(Z_cx=A*-!_qHF@y??P7#$Kw! zpERLyyOTMpmD4hcTF?V4eoEYZiEq&|biAcy5nA-a=_#B2JIVK z6Js8`FyHA#oJ}9+k3QFuIu!vo`QAb}cPQK{f5>cjXhpyv(OUY9mbaR?ZoHdYQ7m1Q z7U`!Y)N7}HBZ?3jrMIQ>w-&Xxym;#NZ7o=@@P#B$KFEL7&dQP61=?rqg?ds3`jzjn zO9~`;iMtrlhFjDe+aOK1nO^Zj+eyH{7S_H;Mw3Lkt1$NOamqyqcuK3HNbKu;izmij z4V@M)D??}*9F&(fzh>SlScst=b7ZlCIpg}nkgb)AQT%%A_xZ_wg@F(nCMFrNi^5&- zh=!79rMPk~|2N6DRUyxf6_AYPtJ+(J97&ytOG^iUGciPiHE}TQFn{H@*^ibCIO}GW z(u}Ww!?oC5(TfBbL=5WRQ3=PkPd{3AA60rB*440|>1Y=@fg&kLa&di8u z%kg5-tzXJVKB}_A%QKZb7&yKLB{e@}0jF>xkwIZqH8w)ZuUTqgn>)0qkypM=-g&BM ztzrD&d0Q6cLGs?i#b1a|BrekycaJo>!LmT&Ldhqak zpe7Lx-;jL?GdT^FD(9c-8>_JQE86r}7V;A1NT)G860c{j3udS>b86D=_dcM5!bzGB6lk)W;W z_2_dDH$NGxIF9aqNUVA}>&n=Z7PF5~yEocT`qZ{ZWIug%HN(;%)@IFx3nAaVhN0dv zWbdO66d#;uYk1C4_SB3%(uk^%*ml#8Ke*k60zTzcy?8tkko(goqlkdXh%#S~?zLef zPWF5$rZQia4B2Q-wjim$Dk4>{-s?1{8lvwrJ{h$!V8H8i#uDV8mcO- ziih)cY-iEKJ`VG=ZXD6uwz*pDH2O*^+(~if`7B9`l7{GTg)qX5y7wco?L;fKwPS|q zg}ix>dQY&AC;uixw|mG|oR5EJRDnHqP$Gjy9$i;r$ev*0YV+EXQkp|$IIC#hQBwPr za?T5oc`Kvo-O8`CdHpimi5m2M9c}2aE5Yk<`I|xui}3y?7+l3SO@JTZkMZ^arYXEF z3!oP#<@{VOnqttU$a(q=bFO$pV&@zS%C$J#(%sA5va4o)Y+ut55Zk?@fz`;mH3qsl zgK7D&IY9L?U7+@0%oF#`?w>sF)<{!Q(xBa#Q1ZJHY$;sat&<&_)>%$NT&sdPrcOftKWc__qv@w5W44D^4hvpxk>LA zW}1N{!8gC}i`3P8VmoxYCErFAK$^67%HQIu_7$zLwrs)EdG+1-TWezqTHh;>_sF$( z$N_iPmNN{-{w%}#OxysPw7e5R7JnA7lGY~Pt=+IbJ?AZQb3kcGzr5r0nF^9|h=}BT zkr3W6aXKguFz%MiHKewdfokLFCtkjmAhYp}_Z}cYY2>x{U5!nU_EtK097nDmc^kR) z#c8)XE%*S0Bo{9%X>QAI(pjwp8zhi4t7TabNzAvxtxYvh=>9C!!d5LI1Zr|%TE(LU z99|sn^Xk^#!rDJh>pt%boN?xUb$!IrLB%R;Kf>-_p`pk^<+}*g#9wXO01b90Gh6}1 zH3$vzhP%l#PJ#QReJOm#{*|ft5N%xMu~^2O3vj?(N&2A7qRT!zmk;AnuE9iclW+wUN0h6xx@wNUK^=E^weh9o z$XjWr&5}&DN-tVbJu_`)P_zx|G3PZc_N-`(XnpeTDyvE!)lrQFjkc$jibR}%zN9Ux zItygIDV-I(EFI6y`SklzJ!Px}SrV*{s&p4vqK}t8p9tj*6mTgC#0jnJAnKv)a)kCl z1jn*ATsyt2W?s8(K|*(ebh>2;3VV&RfIRK|Wa!wRJ#4iCtCGO2>%5+*{I=73@0~`T zPL^>&g6#^*2r*fH@Vxv+DdvVciHm41YcUK&cUs&ow-uki3%V}a=dulLR$vQd2Z*d8 z>LrxO!IyX6_jbVq8O%PL0w^2lh85@uicz=#9ll|5%BU}5ze)#bwWP0~Jp$61&G&$U zGeBxsr`V#a8;yazH7vOm$F8`{h;v{Vj#v1qwv5(dh-YxWJ(H2)R6le{Qr7;*2MIWcZ(j*X>&Ab3X4UOCI>}W;h>1QbrgH(f7;M&1s z=80ZJ>97yxij8o@+-oRUvJXS0G%<;M!1ZKaW#RsbC+}^P}-8`5n!? ztf;5TD*9?G@rj*sE|nQBYSM}-rtaljuibb0?!t?-+H>*=^QsKjItWFCI)f}}&^4j@ zCXTJQZ$~xLD8VntKhA(yr04872vP^ZMR|r5RK%8dLm7>HC&N2<()m#ZJDqvs1MvDZ z`>;&GCab(!rcQay=+>+(4eLD4htjAAy@;%d+yrsiW?imo(r=_!D?<`Of$MNk+|xW4 z)z7%PMd+^%=xac#yf@Az@^=72FANa|vJEW4qc?<%01KETpj0cM7yd?N$fuF;JqnVJ=ht4aGK;AQfEn`65U$FB2!tKC% z7Kao7?Cs!I3EpD}g=7~3K9v-q=j+^j-iM2{A=o-UM#@~SH&CM$KmJ*$ayq-)HhUKb za_g6VX~^q#N~O1&(cLp%5)Vq_7jay5N+Uy!)h9)k2L+dx_G`;C^(px8J*5xc^hBJV zXW_JV*NT}cQ&{joA*|D{-X1v6X1xuUL#nzHmavc5# z1(Ph~pIwT4ds5R(K(u?2wdXTe_1gEbVfS*f(CMlwqpS4=VF@5_cV_wy;+Ee&tNv!e zr4BB8mew{=wy~=VelF~D2F`kqJIH~O5M!WTXor~vGg&+?;6r00hZSl^6_T0r%14AZ zu6pjYA@7<#?2|JjkOf<fS}f$ffwh>O)RN2J9E{FU)>JUuvEXP zNZN`v@Ge674HndT#X{R+{7n^zq+8up*`SH_HR2Oj-olU!*eBuQ74YO9 zaQ5w4-xS7*X&0sML!$w9i$jG|ZP8)ntFZ0Yj6nXzv{@C`g(aUCRUFULT*mZ=jS=it zMewIia4Q_|OD2%jPR7T2+!^EMv-L}IDXQdAo(02z0zyyC86?{V+I-~I!`}s4a$Fyt z0y*!f0%&?UJ{w`W69w8v275S@+3iJ29c^CYdI$PckmV0cYya%GOW#k9mEv0{GcTpN zDQ3d2BHP?AU^}bB8E1pCFjwc=Cgk$IpK0F#w@{_hNb>K$R$z0mPhiyPlRso*eZo#N zTrygI?xFe$TlC^%Ee7_b0W^ZDid;uCF@*m@ljG?eK$c70XYmhOh4n_u)sza4a{R0b z{AyEVQ=B-o<9O5!#!P4#^d`LEKHZoLur7#lLpTTclb6W! z=z)|6oWmM5oyCS|w>K5lk;RNo#SgpJGRXX9p{9iUhPb|~FfY`R`r65)1>t6A?PZZE zR(-KWco(XLgdH;`D4rRk-ibdRWpdyLq=JTyHnR5-k1IfXRnRdPv+ITDg^D9Q6p0VD znv;xg<#b-P;R{;CL0RD5?&$b3X86%i2FaXDRYxV9*6!{)-Emz+H(r1_!ni2=QEqwq z@QmH-zSVVWBSemg`ZXQCJev}Gk0E+^w2e{c*Zb!q6G>pNZIn9TFRZe3;hNZjk}wXX z(27Jaq6m>^7;TZ+(?xB=qE>pYgGyFTlTsR$TbtHdJf>h5)ZCwKVl9`2iTW8tf5`iB#8Yc9p zSU^myA0mIr9%E1&<*r=YsVkVtUprri733#@hK?h7Y`kQcbikYm4*?T9CH^Wq9o_`j zbIpN)(f!(|l(Rd~=sV7?ony)KvHD#crdy$&b+g~}`EBzU>}*GeRa?r^hhFp<9UW0f&O0ovg4B^~U}s-Tge$>S-iAGG&;X!}^dpd= z*imWDN%ZCpy%@_!#I^(eBdK*A=jn6K2eQ4-@uICi1p#Wq?pCMlmG3lwQ0P{Z&q&Wr zvz233RE36eNB-!@NV|%Dhcna46->G;e zh{6rTGGUNJx?OVHCih6Lw!IQv{F3f&QL0p-Y_CR@9q%P8eLmg!%6z?say53Px?)^4 z4Z>2-7?ftSI#(h>D==L?(=^}?SKa%>*UAs`2JRtTFWG12CtRQM`?O(3cHb(_t|66To9sLo4^GqVn7?5X`U}5N4pfw%Z4UEkOZIA-+Bes z%yy#6yLP1N=Wixe>(UqwaXK9FOHb87`bFlX0oOiY6yGG56X?dapa%KT?4l>77&@kM-&$|8MH`vK>F9E%b0eqM zN`-sibOeYS9Yb3*Npf0p>P5DJJ+nVDI(QyZqjbL()aD2Cj|A0a7>}0d4i`MmH;X7w zf1k&x^p-tx#2r34xTIL3@F<&E_4Mb=Qe?XIsD1a5Bh&M z!11}@7rq7_-=r9ysIt36$>2RvHnhgd>!{pTbo4nToy%MTh^VPftA|4OR4~~e|$ld`Sb%5 zq==+I5if%O%KRFtFb<+dGwf*xG;Q+TG zhBasBq3vZKgzP%a*?QMF7P{tn8aQd|*|F=-DMCBDVsGHcZDgv|;TMKT9 zduQibH>)Kz_isNqDJk@;(8xWmg3?JZ?Yi=Uhv@+Hm61>?xcRB=X`LAyoG68-S-2D} z557czuK#%F1wI3f)>q~(96RJfn{V&D1KBusn6m>&fGX2v=>e|+y!%5gfF(AnsCuw1 zq^%d?TO>9nU_*)su`+Cv*VZ1MD0HD%8I8Rlv$*aILhJ3zH|T-JT>&FA z7A36y7qKbB2W;n5h}ch|WNEp8U%Q?pG(5aaxj9ZFITt2p4H_b2RTB#q?A5PmlNy%^ zo0KNV#DoM~BrGZj7nshq$m{cB$Ia`{q)`{J&7Gy1syXXcMB7)ftm?;M#@&JvI`(4 zSjmRyV`2g~6cg4Yy-;6xPQu`q=rj~xhb!(c4MXNwsq!oe6BVHDb=~+}usQ8hBor0i z{I5~rO7tRKG@)?faG!p4vl@rD$QiXFr0%FKl{y!r9^X(;&=DSzFwb_Da8{tGpxf2g zULRlEUu!8#Ln*4E%Pp~dvZ81P%A_VzUwtU=k22)|gP#YZ+ z*?HW)358HUk68YRBR_KsXZ1n&r5B0@hNUG((w1GQ#u5i=%p6uIZVuu?G2tVKG3Pc- z8EMu;@uOVDe8t2?{J(@{#oB1I$J*TG9Zygwx|pcSnsvP!#Czw$x*j~^LP zw^k_8`)-y9j@0}QnM0$t>iSwsxr+H_xqQ>P$`YV=fOcA)hbod)+FS~&(H7TAB=*l(K26{0KoGyK^F@I`!UzH9&a|e^EAXY&q<_0OgWscgYm$MS?ZK!RRcv7K^%kp5P_z0Y~Q@(H6mOY1?vuv9j zI_F)(X|M^1pTXJU^%SW5P^|9W@WS7Ps_bj{yOVy&U8uvio%oPAWFsIBWnm5Z${FZE72N7HjfVxj1PDq~VKlHHDK*IB zvQQkqgaNBK*2uxk{qJG9zJka)+|gCmmeV*oQp~t|@~H97HNuR%r+6A*IFNId z6Z@bFO1qe$>h}YdVbfeUWP8_l*SF^J%&tUlH=6Oi5J5)kR+aTwDY6y~;d)qv6@bRZ zp%3v*5dto!m4uRRCwQ2{Q9tsPb4QAeEhR&qLMB=UxrH}EH~Lm}j&x+KGyW!SasEUa!Iud$f?HZ>6N5wt@3ZWX90Lh10`=e;1D3EB8ZxROwVQ zf3SigSU}PT_)gTu7XJ{6+{m-r z&5yCU$0E2V#GF~PTXNFc!Sbb@{)vA`p(UCZJ7F6n4V{JP7Q*@*;dlVs7 z`ps~0+)k7!jr@v)#x=m36iM1K<_+0s6bz{v5#oUt?ZF?~L$4wDrqD&_zEmmdANUQY5rMdgzQaY^%Od0Yb{uN?GM15!OyE( zyda)&+XNUS zQ-Sx*kOPFw*5mgPm6kz@i>Z_XbyvvlMFC||b~gQ})-m&bR^(vyJ=nR3G8i|9X-D-_ zfn9M_j76BZ#)mVm&^808sa6Y?l*PJ;`Qsid{;VFo36MEAUEaGN4(8!wO6k;rrw+bc zEdxaAE)Z+D<8pAPSm>NV(`*NZMF*WAkX%9QT64&2j2DaroRM@m@iZVH522VL0y4}0 zSb6sP9nx;PP|!eUu~|hao08Us;>qc|);gy%h-SS!jk+Zd838}^wCV&G!$9JapsG~- zdE)yaf2{qzon$+~_=7LGn{Vq+fIS{X;J_e+2a0p)pG(P}gCcwH<4>Nb(ibCDgElvR zVRugzzWk5{?baM-Ch-4KS}NL*`?*l1biDSAZ2y<2cJ_0>)Y08rn$4XZ>`k+lkW1 zLq)(fuPL!StBWA}^$Q9gCLPo_@RGq@>X8E7x(+O&3BUOOott9YESlH>P51%B@lnj zUQpxuf`vuL_+CGF30jS>hw!mOw$Q^2=ohff%fL1W>R%&sf*5Z!kR4#%Kq|LW@D%Y$ zoZ}vt{^V*Qc7wrRFC>foi1Sq&{U;0AEVXzN*BteVEAntRl~6Az@aZT>?L;X*oRNrb zS9rjvPfwY;5d)x7+SURcZYHQ{)1=Vcg$iH5!`9=9%rT-}xH7O~pkr9B7l9jbeeaxw zt*1jFlxJg$2t?czDbVq{G!#hx=n2u5mB!lw=#ReD_0S&JS|?{b`afo)6JPNRLZM1BG5+h z3bcaeX&FS5k0{{2NJ&S7!EkN8|CIp!9ilGE9}!&Cyk@O@OQSO<>rzs*f!$MES)dp& z+|2zicxG(TFIBI~k^(C5sva>VPzc}%LFDeeP}8IuvyKrqcjf8SebpWT@iNC^uOJs4n&mWzhgZDy(=O@y#m??CHUV? z#c=u*u^QXoeZrDcYB|!!`c>?Q(9feyo<#SGtxGW6z_gRPj-$i15x!!?mR)PwMz$J7 zyuP8KA@R%?aaw-nJOw7}-&2LjD1Z>I5L|5fJ^QdQ8u(ZCkL%P}p`F652QopEh|_~2 z1V*ZmC{N*%vqc`xh;GpN?Y$*WW9cKJ@E>6Vy;45w1=6(9OC?Ov^=?wUCr)y7dcO&T zX<8;qC?G!Gotncikp`@kJV-M|*l#TUbBXUlVBs2IQYU|05GY#E>#{C;w|C|Agn9-nuK>BZW!e~${ znckIXR*GKXA2KluFLWL#-Os6I3hBM&y$Ymk4BCIMoM(`M+M2;ph2UK}3+!*!@v-Ls zuZ98dxw*(0^v~4rCy?dbf;9P$OI)YH9cQ+l{*w7~oTEV^q036(H6G!~FF&Oz#*^;t zF)%Ht7PQ0u@wyy6APDFcM&#K0mU<2_*dIo63J2^JdKLJ`6`)`5^MZR}Yl_u@x+CSS z1pd3Z6PPn%C+P@p(?chO&iY@>@&G41JXszmdS$7NVB0rZvs@DBaky_W7+%|>}?xCwa$xZeH4+ z=d3DHPOB*dU*pHdzM_36PFSqdm^^T# zd&fd-CBf@$1IwWwq1M;%@X45@n4W>Z&cbg)zdw-*IfJL9VkoA`CiUbL4z2(t8NA4P ziYp2Hj`{MFQ~qP%8!l|cN2i`nPc*Fbx~C%pLh(H2s@0hmKy>48H( zHS@V)4pq|x&yh$q@ty#4P0Ve5F#>NF_V_VE%A{zJ&ISE2Ga$r%!UW!sjH7e`d#D*W zl;To%Kju)W+u%8D4Ia0%Vr~~JioZfq`zxfsn)KJ){`#c9j{9$P`wId7;-tSg=`Wc4 ze;siPiG2|FKwJ^?+zoN+qU$Ef%oG(o+{-`!%5uCT z5t9pnDQHc6cST@MM9>{R_UP@!|a;nM2-?sbUA^B5LTn$kVaj5Wle!u{M&@!5)@sZe_zr5 z0vUW<(Cait-G0m6*}oRZm{gJ>)oY{mSN{}SW0%qA;JGwcWor8Ik{p`}>E7M_T}Fw0 z#f|;ls3`h`*?ybG$)m1{*9YG`$DB=viZ2Wr>M}_8x^mI28`(!&7iF|}rF;&)a90Aw zRWli$WpBzU&-OH{Iro`9HnqM(fFJFyJR*#_;rre|KPx_u=VGPsVHRYvLXLAWe+orU zg(-r`npkM!Xoe?X^kj=P=9KlOOBbD=xS>;zw~o(V38UEM3Di!lKp48Q&-n88q?1eK z@8wxcw7)m5MmvY@dB#Y*GlmX)AaSrbR4-xpZbzI;rr7!&I>mdE-u z_2&&e?4N)9*1{I#E9rFf(d}8o(oq0GbTOM&#u`!d>s-AYWsCxifE<40tgI1M5V$}A zs49hX;}893ij0t|d6sp9Y=5GCJ7~S6#JsTy2Ald6bLY12QPXDzedA9z zYr07;8P+=P4TU4~Ozg9*f88K)FJ|ez3=iL|o<+p*1WTq>Y*xNos+`vCutj}0pC-u* zPV+LmSxYlSl@_wTK9k2EEZO&U*1%=lDza=?*r#)Sm;ciF@>=b( z8{iGkCZ3wYPDcXm=ukv9;*)PiYq${ONbl?g_&9}0i3F#jL7`VX2}Y~F+yf+rqv;XW zt*rnI`g$h zZ?<6P9BpY_J08I-m&NJk<_sEdK){KVzqh+Zp9@y zmy@$wS*(Y>;u{;L=f9c|`KxVX9|G z04p-+V)0#D@t%nHaYX4>RER2$P$wI5)q3s3trDLrZYY09RSThHlBb;VmV`h{540F!0tuJxo4gF72`M?gx_3_4N`HUi-y$ zb4B`Z3zKd~@)u|kj1WY>exsP9h}F!iKr`i4jj%xj7x)dTcUN;{v6@+UjY-kw*?%k; zqrceGtfkJaB1Z`}PlQ+P@FoaCqB)*m868JUMLn~R{!z_=h3sj;bJBfG3q*Iloxk}t zb#h5I7^}I~tqHkTkL*w1PCwZXM=B*2Tf}YmQ41esc2CmFD|m2{_E5u(mRN^e8ElKZ z>kK{vL$Xk3R{}9E`eGYDR>(;}$fJ09bXZPI4TO-VR4rw{y`462CHCjB!4&%(KVe^6 znHD@6HjAK$Fy_;DF6RE64NkNBStUBhLBlo573&YEy}_RFvr3ayJL9H1$XaW;k0a#p zx|4eECe&Ju*n-Dowr;>s?J7xuLugBR=Ta9fyl(fY_*8I&_6swB(A{v8!`uWR5VXOEjCcyH|9zJO!V3wOD*S!lK6o3%(Jf?iacldx9{>7y zu91`x@iYF6D>KlD?>->@7FH&ddfti<-v<$xj_4jqw4k5F%f6RP)`O?4E;|)!yN04)2+?_ z(fuIFTBl*4Az({&wGmz^>uXYCOQSuH*my1ASZy~Kp7lRa;7Tnoo|5FFU*%3eTHh8| z6%SlKqa;*DufxA;016>vho9R|l%#t%hQ1PFp8113SVy6ZY%YvUuBHKb?b%qgU~c5i zD!50tNu0sE*foT-P|6s0<$QEY()CI2;fbFX-E%8q+{rtyHzPdH9C!&CmGdc%JicJ% zGvh;CR=l$;vby`uc8H+8b1=!#?wjx(atC<0=|shv=Y#h_vwQf_#TBP@PU@K!E|3Nt zOZpAH|GHIbLVf;Z>~_*6w9;=Z_7%cn+!3u<^Z3umEfowDO_bO{_zzXHfqh+NTJYu> zPa2b@mB|9ANUdGB6?v(ngG12^c#&Y;ROi_s+nNcV2f-=$(Gy46qD}rw$lJ3G69%+% zrE9$$Isu+QX0>NtOEN*Re{Xym8x#L;U`BuUb4sNFQbR-*If&%agE6O%%?CQ#j>IbU zC;Lf_);uD04@XT#k5o*}e8g(^3rm|=;!IFe?8QQp-=^e&l?O`c^4Zlsbge@HFtzB^ z9oGA59qT;JdR6$F5*HSV4j?i#E&(-aie5NB5!k71sA% z4FDfrX}eGHhn{JvF(H|(eZmh{O+5QMhVyG9-p0N5n+3B;ID>@KIW8e-*5{w+9DVv= z&CkF{XKT#~1j%SFts&jpxyFzN$9Q2D2$h=ls3u@;&rV7z()F}nA_hO<;0BU`4`pdo zpZ@E&{Rs)nL>2c3h0-qgZuQ4Z?Xjg$IMnWaB`l#nJe>bX8ic`0=z*shx+b3byZc8b zB(TiPsp*Pw2H@7pUO5t5*8iC6Ce}5sYj{{gU04g;M{7}5N%v!zRl%srTGbNKR3MMn zdg!R=gWwhX=oa7JC(GTn^DI-RhZqgrgo-HP_J%I}^*?(#bnzZc8z8F|Hy%#weAEXI zb;3mS-!80%V6<=-JxRT&-Wa`t5$xxGr#(|AEw255Q(!UMovYP(-h?C%$j&yAY@p z&o6N!U~kj%FzhEX&1YlX++qE7zYg++qi$r`x<$Y1q40Jw0FmO3;(ngRwr7+cWXh+t zxV>$$Ryg3UW3HXe^@AlcEzJ5wo>2l;(%|hAjai^qY5;Es$nibInBqGe5D-Z2TVt^o z{>5A1L$Zh03I4EC_N%~7t>HGrs)EtYk+Wwmtq^%kx>@di`$$?u3pXl=kla5U=Ww`c z57cNHMHtXhF2pDn8K8Ghd_AaN-0|i~{HXFMC7hm4lw!iWbzpOHqm1A20ZH@$S$a zI3(X2IkxoOX8By(D{-W1$LJ_yWLv+G_`}kj-s3PI(Y!Y4H(A$OlvfZ=FO#9auau&h zxx17mIo%;}`$1AuFe7PjghBJDsRGdRv0?qeloe=0}HY;DOTU$DZ+^Aw;@JqLmp#r z9aT^d+)1E~7)a>SZGM-^^h|&eBVb&Z;3Aa(WZP~i?t(1?qJg;=S&kQBlTa)WKLp>{ z6e>QzhsuCBf6IV>Yo&h+%6|*W7%21Q|0h-V$L*)ZAU?@|srdGO)du3ADTFPpdPYKY z*q_Oo4due163K6Qe;k{!KLtqwRUuOjmJl1^1gW8g+W7Azp$f1Tvv=%H{SifNAj<5p z(ZshkaLSw1S2STB;_4uNE=+PEh=wrwb-tnPU7g6XTg_z`F~>zp1BT#qG%GfkeFFZT zg*!D5d-X&R3kJ)6y}tbi;D?fc6*k|sZ10#mJe9x1?W@GMGKCoMJ;siQv$_#+#^lDE z)k0-{y*Ib7Dkj1l-qujTSIR2avFXJ&IHLoyp$8jlC&0NpiI&o^k;JM3#E%*|w8Fnv zJLS&;fW!7$Kxwy^XYaxRvf&!UE{yVi02C3O`-(_C*T?>HRjbngxjURHn7@5SDa`oF zCYI!b*baN-+X-y!0ds$p!gR8@zKZ- zc>>S-fIw6S8dEnt6mxWm3MdIk!sREWE!z?&c{A};t?AK{+Cg{k|~o0qPgoq zz0^;SR#bSD6aB!rEz*C$b)2Mx7%#=~&ut{U!NG3Sr+uOM(lUXh&vMi|m!b73n9yW7 zv+U^MFvmoN-_3y0))a2V5v7&n&lK=Z8oeE?ZQTdjeum@u0v72A0^=>G(el82_CyLY ztEvlhf2w{W;VUjhTAAeay{XIyczSQ&9Z~T;^pQ!85P??9+<;{Y{ViSHM||^}?hKaz zuJ7eaCY9Kg+MReddFNPU+hw{l_+{Qcz`f^pd^{I&zGCVVa*_wpnB)P1r9OKqCVC9h zLff^lWzVI(_OuAo?#JHN#2Gnh5t~-Eds~GkE9mwHhx5TLYSzRNscwUGjbD1`wEK>S z2%{yop9MG7Y^TO`WP09Nw}q&ts&Ikg89+XbzBb}ktmazYBW71jj3_Y18oN3$gfIh| zO)Sh@AqU18k!g%Eqf`D}5EI=sqKK6SM&bKa-q=a^mWhBg!>rkMh@YlgNS&1yFcPM$;ndW7JHNBr3*o!fa(e3JsAQ7QGL%7!tpSTk_*L?ZQ5iQMs-4_eTIj!X z3BK~m^;`=%eC5>pD_E2NPdf1?s1(gU$yfR90Ca)L8hX0j`F9U; zYt_4~)ihyJ>)8KcviA0EjtWuqv?kJ%?9Z!>=lND@N{kK-9-J!kJVfu?5mz2}gc(yv z05%)GwZFaT9t`;B*Fv%GkJ^c%-8Dq#NQ~6!@sf%6kB;h@tcz7St>Dy`RL+jRVnbw0h&FwFJZXMZPt)P?|1UL{58F@~GNMNP52@sWBx|9K$-35m z3()5#=OgQXm0b!Rs^2Dosu3h?sXmLLYL-1uv%>xRDqXsV5e}8#e;`KdL(V8w)Zwip z{pnTP0HQJoVo!i!p6^>NIP>hv@BE$Y8w0qr6=xxK%!gQ&833zfL<4BnMscO*u8+;( zhMs7*sj^Ec^=23Ng9O5;;E2)G@u|F~y8+a`N01|$1$&@Yj%YAsqn%^i%;N3HGD9@) zJry`WtgS(eGzk z_^1B!s}{tUyFQCAoj~D{)wCBXomH;S%Iw*tzNo8?;)iL`Bm$;AU3vC5)6NFql!S^n zmP%v>(1falefA%wodq!Mei&c<`yQAW!R=Z;&9bKEQ-*?rBZ2WJEF%jsn7osaHPmjr z;FFmiG8j)z>~^pjFZh23(T(iO_eL=8`+P$!1yI(Q*)1yyJB_2J8W1ZJKbMxk2(5pp za4rv>2TX2tL*2-s?Yg*C5~w;Dtvj;TFf}`~F5xxp@AP>k4V0{+o>c^bvY^{N_bR4^ z@^^E5xlGm)#a=8J20#wrCN7(Y9bp(ZT&4gbulP%^-;q}YlG#mL*l!35t(6)NRxS}o z-=}_o!UhW+Q$59TTfq*SX)iU?(f&|9t;4}jE=Vmn9U})E_773x4HsEkJ~u(s79!4w z{Em0eLMur+ggEBsU;f-&3Y4Mqm@=?;JQ=fW{CwW`s`bQWs_@Nvh~8JYD_&KEth@v- z`nq=Qza$8NGSQaMIj-BaFaj=J*BD_`X?h}{BWbi!`Hrk4x{ps z5UlYn_xjx)3~6-dXKmykVUO&pO5_&QRj^vU)RlEV9O>v-c)wPCYxdc>Xda_Vk4Z3! zv*9qBC`J&8SfMkh_mY^{*xQplYJzjpreWxJ^oUTvc*FiuYk0;DyZ!kGq{#if-2`gZ zqYWbu?j3TO+?vVVoOg3YDjx?5U5pCsljk5(YJumhVc+PTBo8-{N%Y7Jx(_(OxMjgD z4#jGc`5-JoI|?9Lb@*-&_U`EcH--(19=8Zp{^-t6Y!t<$G<}Wt1pjaa*v!Z900&Qr zqYU5*4lPv`tb)=2@5;wyjVHj1P{VSyZ3#s~FA^jE7U!U~XasQ2O5dQiL0si77MT7rO zgUS0h6|1Rl%@a<2;Yqv1YOJh6FYa*j*VawP)?Z54?VYFmnTf=9s#RomzDaW5UY~EcPI00US@uPnPY8Q@CV=2Z z{-eA03&<+@8FlL{Azly^>eWUn!|B$;_{YuI+4M zvz%}Ot%b`8KHtl}3f!zCes_I;`MUddlHl140Vw6LQ@ro&eB;x}((2;G*ExRHcjW$- zM?IZfNi|Wfu+R~Tt2t7SUUG5=tvbvp-rz9T0Y_-R0Z%$`?Bkm)6?qQ|1~s8ye_%GcMuvE zNbl%5SKevKaoU5ch5p|3+cxRmz~?kFzoK zRe{R-{sMUUUN8C2Dajm~-0G5*Bm&~Hs`&sER#RNuR3b>BZ_*OTLEn)0nG0XK=n
I#@I5|n>mL)$Fu*JpGfjHxn!Q92kA)AI* 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 R#}@FofoW literal 0 HcmV?d00001 diff --git a/doc/imgs/robot.png b/doc/imgs/robot.png new file mode 100644 index 0000000000000000000000000000000000000000..4979d4f2ee4743b21b64ff1bbdd978554a176b7e GIT binary patch literal 4312 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
S5XsQ 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�k*Yf$97zfN~4UuaZkl;wPxk6 z!GR#VhLm@Yhx7P%pMXeVyvr`3Lf1U+#<9-zG7MhU>|X4%g)C{p4k54=T|zN=f-a#0 z=j?}gL(PQLk!Na~DeiH+qj?(ehj@Vpd5h_1s+efH+O<)DD&L7GX3jV2?lM@az=DM> zo&4`rd`{aKpVzVwb__({`aU&pXJ$agi!}4Ntkp0}MIAEJwfK5=CX}um#fS{H1*9y$ z0~9R~PB$PU;Zu4JmT2?gFrY+4dqOdmC!cVC7x!g62+$%%S|;qB1jOyzLSQloWoIzF z-z2^41FB?3?b?@TgyR6r@tMc*{ip%QjNFaJo88IM2pOX((=_*$Xza|bSI$REUJw-} zC92m>6P}td=4PeM7ljf=W-O!>H0*RM+s~}#>Rfq5%fAn@|6?D3nRtH;fLUO_h=~VFs6CFfp zlp657Z^AnC7^0YM=<~JQB&+uqAZHDvo7e21s*x9yI@G|vxKQGiRUcH=NMN~5mt|`g?WDZFnc$Pq zFJHc-lOezI8>WDlh#=zwRS4dZ^xcX5GN^#1J=^(NG~KXihQ(shv)dg`>Z*F=$N!yO z08R3p5maSsY3Ec0`5QVkh=HrAxfMPp(8kNK1(VI6_-K0(jSaQ&bgIEzHl4hf)@lABkkfuB0`2L)DiMhbH!%F4@ueWZ;_pw}IaF6su$fe! z>e+T=0K4}HjwzX*Dn=j{oxP6MOoKLMEWY|WzNn3}s8z-2$3r16lDqpei(MXnrWR{b&T`H&T-Fzb{JS-;U^AmFSVk0A{k#>oFYTASm3VtiF z|6T3ZWAW%5-4-I$)cv7#TXRdd-p;t=6rWY+iJz>^uSXn;8|awAM}RgmIx?cK-8D5e zhvPl3$I?L2a0b*J93HpM^?>AL5-D9L+aZ7^VfNd)2k`BqVyD;DX#`-9GIa)GCKz-E z^m!wZG2qh6g%TTfvW-2=KZ%01rf1ofaNYrV#ehDhl=V+}_?qoJ(9i2{l$js)vsp@i z(qEDi?LjI8E8a#%m+q}T`9<9rcpWh(Bd|D}cVhHiN^2Y6L~?@Jzi9CPJ9ryE=!b8~ zw0w5ZwRXJH{syLVPCSX07kgLPd`ex6;&#s~jU!m$)_dL!#b@|8ub0pc^+nt1{tBXY zb0mGLj6|AY1f{f9+K>F}I?};Ys0)6zS%dOl@4OpOaQ9CyB_HGxe@m|djotd-FF%e= zqsPpz2RTJ4cW}HB2HPQYp}d4wLe?WZOEUP?6GGK`FY`3^+mq(I&s;)Aw+z+F%_5?d z8UqTA%+INQ7Uj0DZK8)N-7!)np}#X1P_Nn-xu|jJ|9!V*~INDlDcsC`D0;$q0~- zVHN3~29mkv-yS%%#sE!j&e=-ew{)p^M7X@s1F3x4Kx-V%4q&Wj0A+^Ipuoc?ZUDig zcF{8%crGT>2id}jkoA^`FRQ};oXJkg#KaU$6k_21|0Fko$VP>`mNg`IRh05+ZH?r) zG=U)wV+he4=fCRCi=WhI?uqclcMQGcuscWha_#ArT#3q6Tcr5vCTaAed52nQ(RFWp zh@N8{$;2e;I(kmI*@A&FdzSKAs>?&GhW~SIt+jH@x%6^Fh)bT0qSp*806Dgrv2FSm0`?J(xm zo11rwD4Q&A9bH4$q8ZX;islJFur-BZE#x4TddZ@Bi(^Ty{CG!ATQ%1C2=n>)JK`@W zvph`{xW8IG$3Fvlzl!w$%R*UKHIL~K%3KopYVlL$U=pkmN)XFztu-bx{vJ0zKJrtn zClo`WWPCh~hgi!MnfGCO7UAhI27yP^hs~FISachn_nV%eA-rQr^pfxiDh`0p!6}`K zyo#hrOU4ddIaU^`Y?{&bX=}HCy+Rw7qzF96`A-n>0-0!9&FML~DbS-vQ9C!y#zMgw zkGv}g&$%Q&v9yOcnvXhbR8_#ZcNtGy)O7Ck&&ldW4=}9Y*DvI3I7yu6qF}D z#g=ty2<>D;zg@Hcn*2R1OnRYv+-Je{!pt#EsO5UmCVG$z2itps-=#!Kc^q|5y@YvVmQ` zi#~T4Sa(|VK9>a3`AR@5r5wKW^dCm~9)0nL=RFMhtyFo`s#iM0T5T2DW58= z?OE|W|A!UY{cT?mV~%!rb`8>PD7oSh`ND0+t~(`>zK1PqEt>ql_ChRYT;xjUj8Ttw zgw7OMbW(P{eGRaIQ@7Oj%&_pkNG|eti&>jdlvAnX*NHFGvoR>j*G1fdyH_`5%xm70 z@Y-i72pjY8zUKN?LHq}>(cE{k-oHzBhKmLFUFRo9GvK< z!C1YZt~JX|AGcsZhFZDm_bfPMe+oi^p6Ljh6XKA1vgJwLl$gTr2>iKAIE|CYkX^=! zR2`*AWY{BpLy>VjXDfx`8LTf1+oUpF0ER^G=pNHvK_zw4Y`{sZ{d&{ z)!@Cib9~BOBxbFZz;aE7-rGe#80+yypMcDNVb22&T{?jOPL_fRCx2;bYm;~~Q%L%H z8dm(3RTs=`<{?gqtF~@ZZ=W^ixf<&XdcyTkT4pjVUJQ9)R^07XiqqOtm%K1<1gSy{ zLW;G+(SmU4cdz@0httN!wDPzFl}I81S;`OuR}3J}TqTYek<~IZoXgdawzZ1Um-aix zp@`f;j8m}-sg5nRz=q_*KPY`{Snk7sf0*9rtNLerC5`F2{O|}BxQUJKczTjzsLB7d za5xQtt1E^5d4%Ou%a50^hm>z3xyzebZ_mog>O&F)D?sBJWy#*%uF<2E21UVZ?Z^kH z$v2iCm52{*dq{UqlhhD3G5hTDeVbni2dsG@Ct>fD5^lREvQLy)9{lB&Fd7xF%L#mg zD*xdF0$ljNC$W|UlU}#BNO~qv`p4V<+J&1~*@ltmw=vJ>c<(N%`=?u#t*_SL+P@4! zMWfcLQ`0`^CfT#gO$<0L&`*)Lqy5YLn39eg^s8|q@!Cx)EOQQeSG^C zUkzBF96r{U_PKiFS-F;~Of!s3pPe*sAdrJzjr zlKd(-BsE^@y5XsbtOr7dykpS!62ADMr3GcerR8phj%`x1;o7EG{p6@0hD$J=s)U_Z zA#!Oy-_-R>s#Mmc4=VoePYL{!@CZj*vS)`1{)A0qk=6A@P9nO!IGY_Y`1GPgxzy7@ zHh2pX+E=8kJ92r(b@}*WMU|O{`m0=&@ux`UM4b2ak;;CeFeU{TOs#GLzmB)#RnnbbZU>mlUHsz6ij-rWeJ*!9GyNF8M9>$26^25)p&l|lr%9+Q}>T$_Ap4g ztgYt46|U@6V%}EzZI-dsxw-GDM7LE#LXg53P-_02-`KLn*-BDv9ieY+ijJWvC*Vb< zc8+3i+Yq6%f!$?MaSaN{>uIrIJRGnN$a|V(UEit@;k&Anc$;5b$p(-1@o!qDlcH6* zg-bc}-o9d+5Y}pGCx06#MS8wk0LQ!dU|PRPe3JJ z1GVFmKr33KII#oaACPAcw&C>^U~9SLX$Guc#R%kh(*T)L`x?*-`YZgA>=$5jd6(Fx z2P8(A+d=!ybrlm-(mh)72ICn|`Je$Jjh?Cd)&rf`ZYa!HIZ^&~zXCS&ch+p_$H#6F z9_pgBw+UNv0=+afHEFOA4r5!x2y7`iyq_fDOly!uGhB4M2+qpz)@XqR=yLaT=Jgra zaqNZK@z5E7CU`l3>cAx&Zw3-Ku21}h4*_qNP#p1GaM_Li&vTXz!(LBm7A0j6uBeaX zJS$ifJLIPGJ$fq5>WuEv@IfP|EP9ieZ{3PKZ9fX-Rx&l^n7jgG2J!UDtN4AmD0PGg z-tSqBm!kE2zbpi$@mvaWGk+*$2YOrL+uqi;El{;QGYzL9n}(gUAPAs54)mZ5dJ6)i zB8CK&9BXgC_ki>$^#DSn#Zab*Tej8FJIrS|UaPS}=Eo~tZqO{SoA37VNw_A9ouY&% zkF)z95P79=8bC2EVyFZjR}Ojw9gkZX%u>L?ek}(4C@z@Vxrc$*d9CNQeL*%Lt_lc; z^KXbB70x#hyveZ9j_{vv-kopk1DiS&(;FL9Qu}4~3wKXsa0=$X_nV%8B7c~ET{G@K zi4`%?>AWRs8IPEml`mdAm6{!_`;vn-iVy#YSGnJ~nf>kb-kq7m7KBa9U#1y0<7ROp z#at;Q(`MjrZFLcO@85fr6R~y)bA}lxYln8U`$$ffT>>M`BSW!>XN z&OHRZO(2|Gu7<9~C3%Di9W9>5GA2j{8_D`sE|zc*F6d4T$1jkI##BYvfrLP*jkb*b z@;pwSlym&5?dkYY*iU^64&Lt95ZVt!<=Tc)Rk1cS&_+Q&P^$a(eWuM=3Lcrt*sF*f zGU$F6xk)Krk^9I~>^sm=6Wp3GJ1*DR6gKVmyL3<*lhsAp=#_zqN9i0<|)8nfK>$btyLo&dZDP%ic`CV|T*q;i@v+yzab55Id1WyQ0lwFK` zoM{GLe0Ph0>()r1PL$mZ8aB#s_IqtF3wBl@h-a1=Iasu(o5K|~v2A~)Q<~ax8$e5k z1UCexiiai7w4Mw*E>xPzTKqvjdREU6j*S^%nUl_C8lHtaR6<8UwzC zhmZ>K7YD9a6i)x$IbJ`ZPQDmn#O!y9U=ty&u2DeFQo&g(v~pVN-+fN{6_7MLz*TLx z`J8P_Oy1d>u53Z*cjBgrH`7N;VNzevgZ)p_bzfbu2+oYlutc!rvz)&S%1v8svJ;%- z9h6LqC)4k0YV~$k%s+NfF7C-o)*$KFV5oUJm;|__cTVr2!`hZ+;qAXiKMc&2xAU?% z#>WvU{NHfG;%FdXKz|CNFwW?4&NvGB!g;Y8X~9gITz(Fh+(xmxV4Th1H1TOPRc)0x z4R@eLPwzpU@K--YjwpT%Xq0?S;v%?8V5)Dm{VHA@t&v_tOvdP;T1 zQTweXRs;^{%st2;pAVIGK#D^ea{NAp$e`;z+XBfclWl{! zO@>-NXd@Vu(Td6-9~xUT)kZKyK{l9XK~*8(*3N#pQeyCrdC^kC3FLW%Po~7c71F}|r(u4qEhYyZt-{E>T3ACqtv?9JoC z=fpcR!{%`|3rcRD7DaFxQxgky@=ITxR%ohDYkRHgPsxXv_%K zvwzL6CMvYQ$zE=XvqOjpk%QnmuEMpkErl7%&8m%$8|_rf}3to9qvwT-jFeoUdF{hgT0*fZDE?K@itpIPZdE~;1PO`+@ zP(++w?e zucE1{r$IVk!ybiy0dAvjX2=l3jPP*zoTDJc9P8hoxwgS_GTJ^mI-~HZ`7JLOh1ihb zp1TXHSu9WZllI*9nn4XSW0?R;h_!vD7NObVOxQeFp|s|ba+Uba^VGn1w2ugaQ(#yj zUbyg&B_B&f4u<)*;_U_wYh!Eh_tFUykLu!``rPg<``WI~_GX3{*=H|HK0sH+dVN|2 zml|-4mHoI_H8_~(|0!U+DetgF?T zFoL-=#$}tF9GG~p-D}xqQz1WA#k8u)(pS{ey1K>;Gu|f07q?k@n6=MR@H3D`eenME z^{LJNJ~cn{nXn&PuV!9AU&t9;-c6Z}{j<+wm~*QRzOhjodw+uOW%!5)3cpt^AWD~I zLE6~MCm1o5{lde@vV2wKmT7k0Vxv2t^N2)L_4rlzEG}g~>*>~CGh*xTG;L|Te2(HB zcEp*&-oV>X$-bS=K1cmiT(-SH)K1$j6#5$3+t48b_Fr2I-~RbZR>NBZVJ0+e+`F*lMlBYRYxY^ zxqjA(Y|cCFcM*DZ&2vdZbBl}Wo=y(yk2mbe;qV4iKR|d3uB26cecd?mbMR4e*DpO2 z8dX(QNlo&@g6!@NTp>?eBIbte46xbcSU@uw-n#)dp%MX16#Mv`nrfm;KFv>V?EP8se`MQ#Pd!plYAO2y(e`P_oVmZ`WvowNfT`Bo8|Psi#rusK<#H{knl z7(RxmGhbltHxgsd1em_kq~M7u1TPN_K!7<^S#!ih+!Lyb4 zwA-fep6H{c?XmAP=y{c=_PLz^9L9pjA3xG}MGM$wNRd?y*2C-Ax<3;70h1hj-9im+ zOzK$?wAisKvkr|j)B$4s&ss&MRMXRy=2l~_Gh_}Nu$n<5vC3GV$BTkO zWL2@dhMZN>)jmoWzr|nHvFUxlmaUS(!e1;V5s`?tS2+auKyGy5Ri`8Mn7YJ2r#A z5FPc3>6?=wYXveY4@km{pSyNf5LFZUScNjFjKqE1;SmxYk%TD~)O ze=0NB_AuTg%yzYD1;q|E6*8m4HJPe{54N`0I@;}^3Z=-ht^vjnnL7*Hq=ex^Z%$^1 z=1Fxo=((V@%XcfTHkwxU-Vz+a2iq;3Zt!p2@XS6ef4AZq`2(pJz@f$c9)Oe}ySD4{ z`OiYO8O>ax9GTZC+i=*`+8#_0;bNz3;%Gf2m<9tU!l;#-s~B1^-S@-ns69^E*M*(- zVUlz90~Jd>06_RP7tAW84;@t6rEJ^c#djUm5u&Ychmb3o!so7b-~c$eI}Y#82Jr&m zA(_}CxZ{LM9!BcLAGRG@}6I=JTmydyb|qioR~aquf7T zHL)kG5DDLAk(}#J9#@?DFS`bFiem7F59fYKyG@Js{#4um+$~@4wA(n|z$xRQOXz5K z2ek28`Pvf<-r23KP58!MvG0L^ANOf zKfOPTKM%1HIuLkfV$}H3-bh&Oz~I7R#?a`I7&0dr`NCjbBbB@FsLaTG1@?wgOP6A9 zRbY|@y@_p^AvN6KY}5>posaFJpmF7;-Rf-0X;puHtf1R!tdCk6mY{zQBIirT{)W_9 z=qBYs)x7w&t;>|}g0?UNenz9@h<%&gv>L7LPr>$iVTEQV$ush{`8K;b8x-{7>=SS? z4)uTL!tMNX?hW%Hp1D4q!{BSDjGk7=GKCvb+5K#A7!ZUhm_ePSCO_H%cNOE?j27Xa zD<0r0pQix01%+!i8fl~b#7w<_nq?Xo0m!Q4SG(FT-=eF1!85DfAa4KWi(v&*`1i5; z!5mr2X!XqbS`p|4`d1yq?;iZ>dS|cL_y7;>9{nyO!0#`i_WApRd2`jJgH?NPZHTFuDZeHO#ks-KXz5748^dVeHaDy;knG zL~&42n^7}ZpCP$zd%GKEds^XV3jZhz7KWfjw$l_61Q#>q8e#C*?-FvCc@IE1t) zFn0&tTTF4D@>F(F^K0FL?d?e$v$0-3k$S(c{c8WHs(f;QxVW1^N5eD0LR6-6Ua^(c zuyw(F3;^=#G|WwKuDBL*(KyA?L&J$iW@NOX@MoZE5cBmCK6B4uTM_FO`Wc(6hhO?A z7#xPnQz>iezpzBVn$e=YtnAw!rTy($B#dVDn>wZxx63D^l_H=n3E@P$KaBE-((;o- zJ6;n|&J@T!uIIv^d`SpW7(%S>Nx?=jAl&6wwDwLw;paWY5f6z*4+cHYsd>gFW>!fCB~P5uEdMaVv&P z?)N+})G^w0id_%L+m5Sq9lkRhu#_wQ=)2=QXITl~I<`hYV0TT{vrx#73g3116Chc6 zVc)p^0V_B~FtG6wq)^0_HZi7Ob^Pp2dn|R)tFiX=Tlv?szn*4o^-qQQ{u&A$PlF*= z-j*<Axn0z^m(_?8=6vAPBO7*J;STpl6T{YbAs4Seg$hF$D z=A87>Ot8D>V8@PapRFVN5aT29oY`EFW1k8Xwbw7aA6CPs7PpBt0;C4H4o5>wLfj&@%X2)#dZA6RnHXE zRTFDxYPV#1EvuVm8@IpFwUd81@@(8dtc<65^oNFxazNUGPMc$TWF=y}<6{Hr>O{D^ zo86ddJ0fSJ?;QtcBCY0l2eQ%k+6fVr-#(svnk5XGTeLrnYZmwSTjoy-m#|h>{L`S~ z;&stn#fx5D_Kh49o+58AKXNirY*z)pkLgqO{t8Vl6!b|ppZqDFeC}3=^3V;tkHF#V z&}~(ZqsXPj>x)Yb%~1ID?JFDlZ2PhtG5C@*os#Er$HM*xoy3V?e`R^jSC4p#-lY7I zuI0Vet+CAV*dnLw9GHWivG8EUw=eu-S;92aO#XiU>DNv}r>CLg=kTKN@wsD9w>q~^ zoxIs`nq!qe(&SLhC&G&r@#5fYV>4^Db(f}dH_dvnA<4{*DROm}i=@%TbyK<_#S1Qp zOxUrUd$X@84axT56#39*AKvbA8o9cSa z6z2`t6@7~x?NHh$&n?^UkqF)%!3i0<8Vy|+rr zHU4WC;dtRI(E%ne4aNiYyqLS-+K&|AGoO8jRMIRvRAv265hX+lt}4OH zDMiV&W6B`D#B0s*Oxp5SQYOOq^CYG#wk|$>YxVGRIQKY>$L6JV8|}@ET=Ak$3@QCZ zyE7eIc;JS9nY*rT?M7Z#`%{}I4X5)9>n?7M?K4cvzOkv>X^N89?iMI7L#l1tWq!RJ zv3QAf@s8Q-!)Tg^d&(~BfXlp~-zH~0vDs&4ja_%yZ1h!|+1S;XQTL@0*(edAnd7P76qhp5R~&LdUU(U{!N9`II!x5_@z3q@qUz0~ca+6)p}m(= zJqCP|AV=k^H<|W3HKv6)>4osCw*&iJDrR%9N>1!&R#R7$koOadyz7esXFldJCQq>G zJm8ftTbM4Jea`BV=ALFcFSVGqby*qRO}2_V+di<<5Qc2Hq+%vxhMca$b%R;{)zQJ9kL*5d`e3Z9A_- zvIy!cx&Qug{r-4ev{NGhrF}6P@Be^9r^%(m2MfDYSYJ$Cf2~_W$8&V92rlV{Goo9W z$-pz`wV4IDW)pIkOP|szCQKpFV(Gx|cI*q-S8a+}zCTU@>jryI&jh=zx>G{;{0eX{ zSaF0#=KMpzOYaJAdv5#?s?nL6pC{Bkb49w{V-@*M7#!rz>RAflS zq4Y7T@JF>pX%qj)xC6WpbKBtU!@V$pod_9I`0MiKYwSysm4q661-7ZDmYh@u)U0ciyW|?jjb)7En}L-^7&Pz;RpW+vA#Ve=-ah~ z5_KPCF`_bw`d(b5F&6)$t7z1O<`(`6<9d_3O=)`=eDJWMmeOym?#rS{=ROE6OP4{K zV|$}m{S*rcc2Aa4qj?Kzn1CieelsB zJ#VVDl`f?;I~;rR5-l)iA0vN&Jy#d+I#rC&D^HJ*A``jELK1=)$fvv=HFb3)zIrxw zBrY4^b|!bNzeW|!brr3dTl034rInX!vw>XgZg$sw- z9T*R`bA{QNaq#-zyyS%$&m6#$YO(UOT*et7xL6cySIe+5Xt|CmSJH-FoZj<>?N$sV z#?Fvcw2%EskOMmhDg9{GmTP6H{P|DSAfpANM>g&@Ns;}?=Yg*v^`0#Ib0pfOD2h(C zIW~vd72q2NSO8El$~~`N*q#)2juuF?i$vM*LV2)Fg;qfPf$`zs;#N!*ye{Kr_CSEz zVMg5iO!ofFq)tFlYa<;VI7XRjUqNDeseIQIuEfHbZC5Dpt2om3^pbtb<;eNW%oIKX zrf=!J-7)H$1LVBfE9@eb|L0+aDL{E@6DFNE4;}q{`1kvJ7o#oVYi;X)KG0CjG9>~H zO8fATOrz^sr1L1PNy7CV36R>pikh!AXc1(_Kek)-ij>^Wj_rU3xlCN|z!g9SZrNQH zd#u3{H(oxjrpu=OGgvSJwh)wQ&TjGqX_w#z{RxAA#v4fYeCs2-yC2kM$g(Yag1Kr9 z&YL3U3mG)+qNhwolf51p2gF)JR%4Dg;9<12Z2JndLS)w3wz>0_vHU`0y|S;g!Pd!_ z_{I=-CORKWA?sQLUT9)C{&7Wgq^-(?Nk%nDe+kfK%n*U;rtF5)fd7Kw%@1gCFW^Ek z--pKX&*J2@YnilEef-=$R*aCCV~&oxq@zL1P8iMFXFZeTnuVgW-8LxEH8BE12&9i3DbRcx77C zoM(YrqyM;liu|YDOR=rG3y$)WA=zYK1^G+s4skY9kug8m>*b_bSB@T&v@w4|45Y$7z zJ9%o`9s_x`Y<~SlbXUNhB*ADIVm%0OHplC?l4~J;Nv@D8~lJ!ppO^W4Md zny@up$co7?j$M!XPky#9S8R#PY$6+wc#XYwq9Mwx)Q^F@d(`O3+d^r6cV%X2Vcckq zmHdqJ=eIn*Pqp|M_tqSIS0N{RHN#lJ5{A1sRR~@$LFF?tfhO>zhbewSVp_~dU$sLU zOGvDZUqSeM(7~VS57Ok%3lEZ|&BznTlx~RVGIJdFPZP#RkCV%jNz{cI=rf;aqA(b? zfoAnf1_E8n+U`WCvL_ipofMzI;(4;9z&zi@q8%vWRPKAGF@3n&d1p9H&icC1-zTZt z;S8#Jy6X%TG15wW3+?g_kGFXI(>WUJx+8&Zw=#G7_zI%bW4yQE@k{6NfxaGFvpq)eFVwP7oR|oIT>GP8) zD8BGw?Hrz(we~j}{3WH?HaRIpZ2T6oRco5V;ivd+N`gyF#kg2^zvoWU%%NfLR)NDE zmp2U6a}7_q+x@QmSLildbV@GPna2tQ#s&nR+Zks--I_=BzL4P78+;wVI_W^xxxccR z5i~H8G!Z-V_j*?rb{s{Yjv}bmv)2=`93ej0CuZsUm_OWMBtV`#Sv@#U4t0lvV8u4t z?QuJP{+pG}XCY2Dh4Q}=o5164oSxQ(T}SrCd@Y!nJZgHguTb$hpiJ$~qe&LC29&-+ z*U#Z`D!b&*1D{2;!YV8$d_nZG^hw>=JiN)^bLlLb1u12d-ut&N!+cwwO9%i}b5WDT zAKg6R5r$qifI4$K14oHw zBy3Raw7=k9`@p37>F&Go>t$ae-kYK#7l1{Y0X2`RH5d)KMMl>4F;q2CIf#FmR>r9D ziM#47*{zQ+$c;Ts4Q2lNbW`c)R&W((EhEX9dCQw{Mfxd~yT9eSM! zb)MUCAp6wABYHJn?MRevbx*aKM76Dr+* zwo!~Ne9J-la%j~VMkL~B>m z+^N!w&m}JsVe$DZjz#kU2^Y%MJ!_chW|&p1iGg_2)gHY z)w^GzG12{P_(0YSukhE7vlE;H*?sla_S*zbL>=5fv5dYYB8lP?*gn_ILa4!pPz#-( z`aZaNuQMXYj$@Rrdjg*)y88FO#wldS*h!R`ocs2Zeg1GlDAp~1wf@!O6CggJyyL}) zZs$r0e6E=`=zl{a3s-zC?O)~nDI)av8SG=30O`qI)6426=Ney!3G(%5G>fw7hatL0 ze-o%)B;egekcHrH7ZG>C2*|&TDrOcCjvcC|s6Nl9KG8s=;?QzzaFTfGd98a^ zTg9=aF>&$aiC72-X_zo;Nz;2>b{4CQD6vu9E!sZaiy4ZP243TQOtMA)a!iH0_h#qB zW4TFWP~9pXu!V&53*+@XT>9$8dl{rT7*>)=gdVHDdaWtt%h5PikkjhAJ=OqPdL9xV zB&SdfYh!j>4t^p{BYOHu`vkRH(T$9$+RXNWA)^8bj@wj!6ex!uVD~}pM%i^ zSqv?T4`TMH|7Ltn58_nf^cCBqfmnr8dPyy+xQA4Jg`Q0cx%wDL&FE)|YTb@5 zPnTDNv|D?t#upFU&QLOd;xg<5&JYaikndE?{L78Sw22)x70Qbo<*j{#d9_4_hO#&8zACKh+;$ z-|c1oa=v2_SAHKG6VI(hs!-QF-juPMF2CYoigw%6R$b|0{V$8TE#C-G*n~;3A zIfH(PqtspXoQg*v#T%m(t_{PzNh%810+?TD4cc<&hB)vuhdlHJy6 zUITQWB(cL5?HfOyLi8A9#mKyX+6uxkMhBQJPUM4Gv`_~cO!~(usoT+q!tXc3J>|lL zOQ7c?K##S96w{;6Q(E!Lod%qql_WeMePbfxYw|dx70O{3TDVTP%qH%UG!7(pEcpun^b9EU3}8nvpQd3 zBEI)a)PaM`guOlUPXhB&J!gg$k z+&+2zyyjWyqN9t(!poEEV=u^p8xJu)=!<*Xa$wDk%AhR^4?Kw*Q$d{_a%0nazHYta z+97py_~*K!<)n`tABU*-l?G+~yn6;w(+_g8y?F7HoF+dI` z^)<)F*QD^0m~n=Pi8180- z44)W1;yJR!xdgOkNzq(QtoGN>k{|T~aT(RbE~%-M0d5c=Hj9=EVSNqmAsS|v`}(4B zx4apXSGFaAv76dO)sRuv-@i>YQ<$gRGUA5Ch>s(twjFbpnv|4;C3=tIi8L%0LS9en z8t9vnJU%it3aX)H))FjL0`3x)sI;?8xMyKf@m{s--v;RkraLSZE5k8a<-SPonL8Db{_4HX>h-LB;P7=$;<@0AgKVw{PU&Tacb?a`<0IN- zUfi=FkEpMt%MUJZoYff7trqPVE-Lz|cyyAX2ug?Y)kw)pUHh^x36_(sEQ>iV72?pH z*uqvr{%>0S=6~zf!ldzt0`(J9e?~cb$#a-1;C;1qn*2T<;=EL#{JKDtTYv|%1EVbS>*$!F*9wzl@pL?eg&pMlGlB2dP&7UfVicp>6LDUF(=Uz zeR>wv9?T_9y5mGJ| z22Ayp`*-qfW)SJ1+(d#2dPmPG5?fwgp4aPSO~FlgIfP^lP_-VQGP$SSZkXsEZKpIr zMvhpkZCDZl&>di%5*fvG6c@&%st+K%V@?kG3 z?elb%(OdhMtW!g+CLi?dQz{6uIs8r##y@`k4QzlGHbT1E7&2*p|K;ZjA%X>;Gs@%` z%cuoZ)0>dC6&@bU6^4Wl=1~Xp&Df?ALz0(!-gwPKkIvs^ClGP0)JWgEh0zhh?Ylgz zcfsLE!kbrGS~~jV{+ig%=YkOVOXyMH((cS?fJp!vdF$yqpcyA{`)#WPO~solk+SQS zCVVSzQYPaz=BRr?kKVpc>BJ$Y{O9pUZ}IW1X9QJM>`OQK1&pRJNSut@p9qJ z{NiLC86l>gdO9p+f&#@nt5KFUr$9Pbv>j zcd<+m{{?T)w5O$jf2k@ibHBrA0z<{)#5dovyG!Vm<$8N&L%YiTj)dA%OB0LQ_!(YG zS31h!{c-RZD1uz%J6&-WdEsChvn|9Nq;~w$s^j0t%75N@P63pdKF-Q46J&hhwfUziqm{(f&%Ucxl}zbbKn7DtANzT3#^ z`L#Z!h)FV9G<~S$6pMv(u0xmVUczC-d~(n|%0H5eodl0LRLW1aw{&yGWNi7h`|;8J zS3!5)kTrFhplhsJt&_*{sfarQ3{16PdzQWqy<$YSKw3cX!Mj?4Y-aPR2 zDbN-4()~H_&OHDIM3+ExD>no)M8svI=P=-pj~56MG2RTt(ct^tK>{-NvkHQ)uC9|` z75*>$uTOKPn66(3Qa*glo6l+i3C9+q4QJ0iaj9liPRgfe2!z`#Vds1OE~I{0ncpT4B;- zn{P{S7*tooTeSG|Sxx2~ymbrz2&Jg1&4cA<0&@ z98VB)?L?4?SHqZ0SYdImgTfQaliwKgANc}6$&Vdm4nB6#f&UX3Ntejxva*{HurH{f zVt2Xfx&5_hUtTn&=zJ^r`mj(}>gttAo&3Se-$@)5)AV{VlJW%GUl?roQbMf$M~)&U zlN;@?IHn>YEXSa2`^z9do_uHb7Bm07MSR0id}bbAMR{4v11DmE;RjBpRl&_fN(KOQ zvK-x&?g;{QkV}F*B6aFTjUVU-E&@U~6~~j3rgB$y!oxd5B)8jfbKZ9oiBl8(&ey9j z=5^hAPATr`Sh>Ej(bt#CZm~U9bPG3lk?4&frKxY6_=%FpZfOk_e#MWA1l}#WkorLV zD!`BW-rv=FwgB-=4rIN}@E-pS_V!jc)M_+8a8H`jRO4PsR&p|v(41rNa|OnDW+IX! z>SLgX=u@Qg(;24i>oOMi92u^(?nz+4a57u&2)*I);+Q81*i2$}f1V=mm^SpkSeN;n zDEFSgGw%Fy@eeH#qwkxD@nulbv}z7iI0Uo&4NG)MjfrFHX#UW@Uh|FWIZ(0u(^RTQ zO8cBBFAIGqKt9&2<4}l-P$qimqcOmA$5bOJG0XE4oHpHu7%#m#+Bfk_PJF4KG%jfl z38izaQhl)50$0+P#i9KhfvsHrTJKD=m1HvB?53Loh>F`u$Nxf|d-LAue`*0(s)c7tPh;oANW(!98qR6p;b}s$ z0#m-j-b>Lc&`VZ2#K_&s2Eq|SaU&okVPWWH#%q_ze*UPCK(L3(Gbh)+!$3MB(0pl! z&`0bz3U{chzZ1k8YzfkzlCII0*b8bnd_WS|9)AKSmY`S9CDZ~^lho8yC)|65W|uc8 zu!ojmWEl##CuvcVj*0ks+nYb^jwsP1^NG)zxVX$)HvhBcOB8Zjy^22D+%sBO{&x9! zf%$Q&XBCnrac9ttxptN?$5+!J?-%Q_S&cVc>C7YEohj54Va<4f)o%-99>18nllxk( zm6+2SNyvrWD=xgS~G>#~5WNByVn{Icndh@%-wtEDP69nw~;qJ|*> z2>Pj#pAc#nt0n?jiea`t%DNF?pmkt%%j@;2>qcMtvRwVtYdaxjcz}sFvV7;_vxVF5 z)9?E+d_y=gZa)oTEO~N5y`ko7m7N6184hhC^g0huaGs`f{FdEe<>a&*p`+K8)_tv_ z0NgFaQ|1QhA+|=D7}7gaqqF}d_XZ#G6`5jp?kXcL@eO`O&-EgGB}+4Q)-#!?7A*#8rWmdNF{dKcyL@SgHpeQwk2 z;fR>z_pJIHq!g4EIZt1Q+Ix=r&=Y3O=q0Ojc55^>P`GM`0O@$Fm#B>PeME0{ROVQG zpV{5(yCZ|rN*K*(W&DhC15Pp*{VU-U`Gj&)C1I8V>oGUi_5A@dh7qlb2j$ME>dOh0 ztqdb<#68b3OojpF+id9}Wr_)h5O?My?(!T?xDCYnSQYbmU3Pn=Z|ofOC^AsV>344D z!;Ibd|B1?g60}7q210tu|MWbr*!-JlsV_<(5e4rNU{=Q&Cd@p_q{T#l$*09eELAa z`THRQ6oR(;4;>i1yu5A&Eo0$#2Tg^4n9v9i*)B|81J)($c znlf~W9mo{nv)_s21PiE3Cy-4oa5kuNV zW4YnCI6eH5;-6Ytirb}3-a@_IvA>$gUERzEWs>uz{`S;TL)Yk%`DI>KHZSI@ozxDt zHw$dk_W=?X6~K^xdEu;I(OT$WOxWl*>gwhC3!%-@B4B zFt-=)bN}aY!Nj2->0#{_?9z71AR!@>AMlwO|9EMvp*0Go zF0Uf0`1%dwskw)@l?`X;E z+`qkUDe&M^0$-n!)b9thLfCL>+HD@kUsQYNWvO! zWVI*p0avoc8aZ5`eDK@k1(Bn2r#YwYJHqOq5E2$X)x;YbTEGP;bo*|AXD0$O4rJRS z)O#H9{|tR-?g#zeOJ!^h#{zmC|4%%RL~AdYQZ+^-P#0xxk7zO6Qxv#cWfrTK2J>am z@q*z>Pu2XV6IlghYo`SbWRqJ8P34QD@3pEI_FpUi3``ltnE7I!6xd>F!lNj|^TL?T z(Bi*VlPMuB{a=MNq-e!nggrofXik&l?td)!FtnGTwR~WqNr&u1nEDQ2`)5LNZ&Bi5b*rd1K?KRpH^J|NLS`F5sqkr@F$i0BV>LYsE*N7--hG_MZ#(+Q6K)FgA;{%8@Z6d(?_?=Y{<= zk}-5Oi5vPZveo=K@v3Ml4``3T2tg`68 z3L}Egh`ro&T@N38OV##1B-u&POfzqHdbbP8!o>R^#3Ex2@~3!e+k4h-Cox6HanBE_ zl4FW8r{`C}Y=++Wnpw;ouMq`eeh*tReNRN}iQ{A}OW!mi>4|3=?3!?QC2)MKBH;XJ znHN-l!a~YwIU;3+=?Mc$UVZLPR0T!WDMIj%t8yiANNtB)l)qlu`;0LBYIx=K_u>Lc zbau?y8oj%LUuQ~}d9MqiFG=#lbHBqo0`cVfHg`I%lX>#LANl7{PHF+VepV$n$forEx}!n#?=n_?6q9=gULe zID>s}i7@Hm@_BLw*^ZAg|1xHyru8hDzIv~e7)QgTBdi1J6S*p5@}^8r@s%hIQGceoyD3bDIMfU zhnE(8wQ)`HsO;%yPqkheDRe+@=$UkeCY9R$5gN%Oj#TmEG28!BEB*bTXFQ*BydMYW zu4l}&5eAQ`$K)X#pDg5fI%|y9bvo;}!TkRW*IkVL8TLC^r=e(3Wb8{{8CTvr7bjs+ zF%6mzO`hFa3;&!j;nDD53?pbn^D0yytr^|h^TPSNy}t`adI7=+pV7w^oMFtWd!-P` zzB7|Ah*)h+xWvaO?kA1W83}N{~thaouu!H7_OzT zG4f5YS?I{f$F{xsSkiKuv&dQfE~}@$y)?ev$iRLA3thbAkN&Xw8(V(TUX`n*JK>s< zg_eugU#A~gd4CLY%a7!Zj1_JND?KSG>C+zU4#AKA47zVBw1H7eaK@aRW2)Xq8yRD2 z8GG;CEj28~Lk>UYdAi84_B&dai}zVfjVgr%T3Ihx55IMTh+ZLDJ%k5Wo6-Q!c(l~OkG_$&d!7e-7`n)H=%4XIQR%J;s%gZKaFx(c8u zyRR>uA|Q=~bf<*mA{|P1H!3YD2rMYV(nz;}f^>IxDIp*&DIwibes|vz-|zj;?2OOs ztiyfoJ^4H5{*J}RBtC>-Gk_AS8B%x!mpxnkMD6|HOOYXxTBjcZ(n}RA$w2I=tOzkZ zbOZ@>+UcC;@6mf;DnHRf#ecj|rM$NNUmQW3|fECXcNl{RsJ>B_S!lh8N;Nbe2 z>LBQ?Lm3EORimYG7G&J)T6YY)qv?&okyJG5D-H-tKfU{Og$$8`49eChhQq=X*ALG& zFwc7&h#$qDRI_RQd?@^VQZpfzarIVW=7I!HRMF&*qmj*9*CFdEBt#Ea!FBYbM|-Bu zZ~4%FlAL_`!in4XM-9Qx5NKz-yN zJ$f{Y+Pdh6gcAv9s{20Vq~&qDls%~3RKC8pzs?1py5!p+MLX*&-naMXm<^23Z{i}q zWRF^-QG--CE@RGy&>D11do71dVH$eu5Mh0n=n1yHe8>c|pi_Jif>URJ!EqKm5Et*x zzR9Q#fqi1XlVbrj8pg`k8j&wFE3JPyME9MFaNX0}*#gsrL8NyI3^0n{Y^%R|kO}Dt zCUBEV@8zX7Cg_wS3b%#2W62S3JDkb9jkaB5E!>K2t9<q zY%&5bJPh9#Co(Itj?4R46?qq(%iVY1#oK@7bKdWFVJ12)wzfZCp8m^z4n4x{8J8^$ z7{&Xls~|@`Dl7lkrBf%mFc)99frn^+=^ZJJuZNVy3{zCF9)s5dKLVB<0tccPn4IY(|BP34dl>ZJ#kes*1jmiHVHpN=|jKfy<{38*FdKq!iuVhKi|Lw2Q~S+!Od% zO)Zld9M70oLc8n$^F~;p(H6hIaX^3Rvi>9C)859z74CyaQ4048*(9mAaMv;^8F4o6 z>vg%1Qp4+iw#9`}N=Gk4v@v^#Hh)b2hI${vAWrU42aiT%+33|~G9RJ6A(YJnIFzcW z65CLBKk?l7AopP&4ffm+3R!2Okj-%w!d1zZ9W%_oI;0h20W6rOsVSFb^M=n4KYZe?0PL0A5V{ zYe#==?0oEEK$T&(a)D~aD3NDQke0Nw^^fI{WoQ29{2^N?=40Kfnlwlpqg+H!kHS7a zzr?o6vVVC;l@qts$oJg$z^l8eOCBLiYmI*SCK0LktES%jD)I;l*ugA@$HRlZMrsjc zteM~BE3}Wx#YGN*<+p`h$_Zoy}IBU|$+?p@N7egqxSm-qE05fzqe- z`tFb^UeECTW_SB)lkX)m35(aH_A#D`t_y@JsyIE*0{sPB!%6Tr$%P(#Tvk1GoN49d z=D{$}9Gj2N3pNiQP}}tq0N#M+3y?|1S3W(W*I`9}37;+1D@|-j2l~l!?ts))Cf5cf zrBLo)yF+bwjwFCE_Gy5UqI_p>%7tOd|Vq@?EJ4jl4y<`b`A?$oJ{qXX`opOH@B~(EIT;!QhT;P{~l!)626rcSAjY zzwbOZ@=kH3kF_`kG%-n>0R&rvND-8D{vkg6Lqwo}ol_RD4o&6F0(%3i9HBImo~Nh5 zlyAWj#>eGKqA|ABe#a*wABgJrar?b~=^1C3nsSd8I+dgk?m=iN;KbXbby3LwnV947 zabK1RFPmCV(_?RfLJDRxRryI5loebZE7btoVg?TM{=0sQsSS6Fu5X@dby*KkS5Bgr z&bJx6k0!OxR*rIo2jLAVf9?VJXNU~l;``D;cB6FD&m*1nttgd+AcEJq0o?|!N{`LZ z=>i~taLVVT{%bGb1w&Gk65(=ocD4ZAE>MABc#96T#PZ6DyqjB9*VIC1yc}ScgmifT zR(k(PO282^njq4#RLF_T0(dZ3n=e*4SG1eYG*x6Sc{e%#B_1ufYlrAA8UV^!5DIa} zw02PQ65o^~P;+dTy%t5Glau~@melbGt0LHr1@GaCwKni;Oubl)a8E7u4ZaJW8Rm<*a{=&2zV zFDY55AB~QV!tu11B7hJi{(QS$84PlQqGn^FlVlqLqV|!Th`J}BRQoRp0`hcsXc(}T z2@55I-Er?bVKx|Q%aUF&q6y%*y?(-X^yuvZ?-SN!bm7beIsZtyx|8;BI&(&;@TOIp zApAmJcgSJNk9Li(+%)etk-g!k10v+SRrv*uc+r4aScF%P=n~1+7(tuL1o}^I$9YI1m#IHCm6!pT^Z4G+ zW?}Vf#p5?3Co|8SKiywN_k8&OHx3sacWn(|6}(CAn6IVIr*4PS>5Km~#gY;=p1*l_ z;)$8pWTm^Q+{RX{pKAF#vDUUI_B?@ZbmEIf^ZY=DVe47M7sBJ;38K=vneLkeQ7SH0 zJ_tNhfAvyTNU@qUuW)0E^kvn=sdALv4pZU-q$4+RgKF9sowC>aEHr^~>)3*cVL;Jv zNujQq`pfH;JG}$Zua1HUd=PM1teA!ur)p37VSuoO1@DVLM|a+LS4CqDd=_|?WM?FFqPM)<@y?2?n(y zQyrH0^;KO?W*@_tP#z7*N~KUd);h`pb4=yey$2K#t%*mG2dxO&?EnoDh#C zHI>+gU6@@hl{GjATzuKRZQ&ACQ+xWw8j=LBaEu7f%LOQBhoU_bAlT~w# zFhl_MIrhZ2^#e`TkyE~`Hs`Pp8RADNYH*p6RlCUcMrThH?Ft}ZvgMCz`P2PN!uf-D5t9JFG#FZpJFs)|~PAZ6~DsyFK z6aSh2x!sM7fA=<+m(N8_YC*k(U7^Xtc}qzb+_r8KI3u`Ux^op>yz;wL=%M2tBbl`? zq@RasaDTrYh0-rIcUfcE0ei5rz9Y&YGn!Bl(bHspgr`88v?ARs{e-=|aONI}OM3|R z<<*R4shTHcYRy?q|wnIqRc zZYLbVb6BWX)uefw-`J&>Q*8o|UPW-f6NjEwuuVElwrS$9;CZ9YCh=UjZ~p92gH{19 zb8_J_jQAc~U*$%+TiHJIW}%6&JwzRJlBgrg5FWn)+~oU@qATNea-&J<4_2lkcH#*M z$(LtZ0qbYckLE}CGQx1>`AZg}rKq*3ECV;x?3&G@n9*3`4SpPcKN{XLztmbHe9^cY zD72~n?$fz~0y!tie#hEfnx)a+1u?InJEhHmw}<6|XGf7_OrcRsWU`;s^kDF2(mb>Decp)C68mQ2*pxJmAsm=e_PcGx+eR4`reFG!v0NjZ$4}(c8ml z!M2~Z8OOY<-+nES%w;OpFsj`SIh=tiB&@xqWaK$gFiM4{)K62$? z2-gU1`x(Jr^v;VvsOZ4-TQ!voT2^VEr{e{vcSYfVe8x6`ruF|*h(L(!gABc3RN+H* zzqJPrLJC5+rAJB|N2VCkz27>FrPzK}PR@&~Zx-54!)2le?fX~SM`3S$d~ax&!i zKqx2ax?&E2rjTV=Q+<W2tsS}*@4{6oFCCavW*{v6&L ztGCygP-sW1iq>rsCu4Bn?QT8e)iM3qa}*;I=s!#C;(Ct9)=k1D;UdEPz$7E^$LZDD z=jHmWM{%tvXOFF;5oe!;M02GXoELfjTx#wS*J@;s6^?1Kyj~gxt-5~n<9Fzl=b@Q$ z%@N&Luke`N)XjA&UD2~=`^4uM;TGL>+{# zy@31F)B;vlWGVj3Wd0emKMI8eid~+F$b3b_mQ%*9qk5PA8e2hmdLS=6qUGDF6bq4y zx3D)>p1|h5+Y(j9S9mm?h}WYr*bsmTTWOX}V-ue~xHDNjy=&E~+LWbWWt+zN=`}upuZ*HIYJaXnKi!QS8vI`sF)Mpp?=&R)OcDk*M zPd?t1^xu2xA_WnTR}f$SQk;GP@QgUnY^VHzOx523cf-RimL`Cwi*gPq_H z-_v%gJ`fiEoOlCzOL}kl>>`1Q;Ctay{~u^t8%2lklk7gc$(I2Yt8Qdf)-At1L_8>TJ%Hz+}EhzpP?=yN9$w?Yn!4gapHlUSwFT5~<^n%5jn8wcuf z997>A$E3epgg<`$ICTy^J6{`?*=U~q+Lr#FbZq5GP{CP%+)5kC+y0gO!XeLGDGZ|g zdjzoeu?^Wvbs^7_NLfZ)%|dmCw@m2m=T#ZmQxk>Y!x*wD{=k>tPOJP_{}W%n@SMad z%gnq&Gkr)}7{ki^f#c2k)4ABO*kr^9oy2Dp)Iap9eyiug6^ay3PLT)Yrml(#ZX`3m z-4q=dXQ@r`HnXBaBh6zm*iQvv0dY}Uz07S(&l4CgI0^=0>*aRVPS69vywjLd#7nE7 zr4^UrI<9Mm92(>|`S{=At*rEo2PmduIsrXf+PqOoc)>^aL=Yy(kU(Q|+ zJe5wdDv<=XUxHe{cuW%0tKS`1gun6KN&R@bLLYcK<#pg)d%Sdx^q{LYAR@-7*6wQVG#=L&z<__WV(lT&Aa{GWN_O^hHnV|L`|y^)Su*ZjkMbbK7%=oJ z#X~-fGN7f@ZkoULY$KmuSa>TbL$#j0^;bObhi(G3Nf3DbX!gR&o0Ya?+cc`sfz>mk zE|yinX>UWz_<35!U6*^IvYi(?f*DVaOpq}0y9uJ2jI|>0HkfHxgQW*X+$#!DVA2m= zEbmuaDca_*RzCRtkt$Q@PWDTjn>(K$p44unb~R{8b&r3#hdf1s(B@3A>K0XwM#&Pe zAF}eZ+?{gQiSWzS&kw}thw`#2ZF#Ri`EUEEUk(+ks)X~mq`P^8l@Uy`mX^FM& zJEC6S0{KoBdh-N^x-7f#Bga3v6+Fr9ILhCV4!|lp?HGMU@iTuzmFrbo7e~i zBofAz6o+)1!vxLvtrA1)6O zGHB73{)}_s+%C>F#!lgUmAw?%87hST+qxzcK?gXOw4EJ089DjzaFkBPk;-|pkizx% z{^$8jK7)}}`l&eil;oH`e|-U2h=E@lxBbVF7w5%N3||QQHhhK0+w65&t6b0uH@zE# zCun>0oNBNN1Y6g4;%IuAtM#6PeIY?b-kXEP;U}6%`Xzp{&5WB@%T#I z-Kn9Pn}Zsh?ZcMOxUw7#9voGcqX+r@`egG!E3oK4^^vuZqXw)^HZ&mn>hc8D^oD09*Rug4?<=I)L9>amW&oDi{JXbr~)zNQgBJ-;M z&R%H0_i&nlaPat|lU}tOnmR$!x!L3*G_ixA@T@E0u3)OFS>?}165`+iu@swRd&zdptco^ZsG&% zw_pGHKar6~=viOYelAlFO_(0^!;F9FvW#dlehXUIj8gS=mO=;mNO)wvsk)|spgs)| zhJ&_mjk8@kT8AD4X+z%UedegLch7)#)mw>!soRd6vODhEM#7ebr3I?1RTv4?GjT%L zwFL%2>fq;#DZ~WOCy#f@PryW9T!WV76Q`2CfN3R=QoUs zUHflJN168@cYiQneS6Q^B1W`A_m^n`@-*@WqKB%Uos(}7`(JB#-)k7BP>K}rJSofm>3mC^7pva*zPVvl5VJjLq$ISI%B_`9cxG?z&S?SReQbZG zM@mcMg*O5$s=j{TEC!4=3AQLD>v7|+({r2_WiZqLy zQ0u2lG@?rO)wvbf;Z~X@>3xo&x7p{h0=+0q1IJ}rHTQnHhMdJ$`jc|QW%GTPgXDpp z$VG`fTEFj!_Hl9X< z`wHS?g<};?@_O$Fz2LJM?+RBpYGK;jwB-kexYCqmGuHo7wJ@;oQi11&{2|xn`_E@c z9=-|xD;!ic?A;N9_E%^~%t9N1a>;VKtl#Pj2#ISmP`hh~%d|w$?iD)s%s`d*K(YULPQ=XD|-at8P%(Dxcl4n@$Zkf?$0Q7sE>M zeuw2OI1$_VL-F`bJC)P01T{dw4J$jy&ySRK>S>)ZyM7&#h@04OYNdaFJOR67D`B4= z9yEnNxFr%l_wmz?xNlD?>fePhEXSI<*yHi=8tldaS-NK8)k1+}s|}c{Y5(^1pFcT% zf@mOPHi}`t{u+ehVt&fJq^@j{;x9-@j)1S9d5{yL|A^L?g==5MB*n5&XXCW_8zT8k z*_{D=Rc{M-&uuAU*(l=XtDE+^w^3zIp`=b@$K_hK&+KYUZlPM)nvY`=hw?18xR+_& zS&idKTteiqc@39zE(}}Ssc><7Pt+4_j;?8TJ`RyQtSo0tC$k?Cr>8M*fKSfr_kEiI zYdwU5i}=4(l0*j)^F4`9+LMR>@iI~-B^aSDiMRSbq3X?!+$!|OO=pM}M`H3V#xh8_ ze}N5)smwgQ7q8T28Diq6INsy#&xG%-GPNFeFWCA=WK+;#pI+${$_&@jSD#tYk)3o| zWolb6QC}?A%}09hS|7R^!~z*bMvfb^YYTh2-EPcEY^tp<85!%3G9Xv_-jvm7wvtGD zK#1HrG&Q0@DZW<*Sf#%;5IitLAgu(<^K>7We*5~bpUmU+q}~YqX>$^AF|`Usji-Mr z`l?*RBECim^BGh=9Z5miU76~csQK$9Sz@lJbso{(F=JDrV1z+3yia;^+>wkV>dca$gzt~9~+2&ACo{z=m>(i~zq2I}2`#7%)HsQI{ZeiT)~bF_Z5(E(jG*c6e)3ke+uiyLiO9{-GJqOGea8w~%g6c+ zhNL7lg!P4|OEZ12n(FuMZJqm}7psS#xw3{nzW6;*C|MQ%QYXXse zh*cu<&6^QMY09W0d#8R0LGK$lc?2 zrKm+Q3i66O0^hUL3=^sg)d{H%Hz0`{|77B?^MkQkrG>RCTGO^)zWIH-9O=MzEvyl) z)BWdmi6fxW`Eknk;mt=gEQz7I)XfLNjImWAox(9f$fNkRtfxDe*6z049n=53Uw^b3#e~ z<#OT1RN0SIhQSAuNeF*puLR59k(4$`%N0%M^!#R*HLAuahw~)&CoPcT>}n=^p+KWk z@R<5ITB_obYPReg5lA?8#7bIfEGYFu_709BOw82@ixNEfaX3@MuuqhKHws=!@VKJ_&BgnFZQCpcSIgacxT~H-VcJBB zNkMcOt%WCK0VGe*n4U_v7Ieg)P8<=aIOX@JEtFZg+`F+2-g9M&`w5~6GqaCdLR|F+056qiabW=F{f9V0RgF|Qt zCs;>H@#}ZvCn;y}Z~XXNSFRQMOqX>k4=Q6-=y4ak)nwMpJ`H0HzxCnU0PO(??BN%r zdJ^=ZWx|GoQct87Tf*t9O++LGXd9A&N+H&DBZ~Y z)indu7BX(P#S;_6pL;>{k8eOrJ+pQbNq4$lUZ~Af980hjx=JWxC`fwo8cmcUPU}4h zz$PYE62p0SpZ2z`bp3C^NJ|Tz3Rh=KsfOZjGIq_h2Rx)ssmvT=&sQxgaUX}(#Y4wg za>Dw_@Z@<83~jqQA(NyWEpMquC>yJt9!Ibc)2SXPEkiItJnJrj$TwRY_mN}5oUr5o zBi=Hrr(bUYk=4I|kVDYIp--ai$0@J{V$&iA_)@+x6J9omW3px@s@=q)P0|1A3zBx`{EvQ zWOeTte2WSoR9Y~Ve;3g?i6Z#!!X$K%6@y1(M*j!?#x$*kW3Z{lYkd$N>u)bvf2V4d zAy#qfEGRF{u!tjn=M?^##4ca%w?*T_BQ+_T$HxCln-&x^w8vpDz|3raMSqu?P&{4Q znSJu@_-${?T3bBQ#J%bE*OyyGsTTC$K$&AI&6fSQS0E$YPf_AeCKeDu0GjpLoCpau zh3idsk0hZAUg~HG2XjwfXM-xQ<5mh57k%@cYKP}{2tRVJeh0jrMPAT%!V~a2S#PDZc+6 zw+TM|QgcHR;@3+P@>v^}c@PJ_#~+Wyu|Z;uq+O z-}xB|oL>AP`gb%7`8aYj$ySwx{*ZlpS;BujDg1$&6nGZ7z@&}eoZhu%WfMWE{b+ir zG0X4y!mwPJ%9~M-MYYCZ{`c*5qi-QuTDzg?VQ)sEHS<}$n>f-qToG*}<3b85Q-Ap( zd**8*DJg)sLa`XBBIHrB_Llfgme#ivhd=oxB4@uVzv(b$*X6D?7smcj*m3euox9RR z36cF@8z&bI=|fi6(9kdeP@VlF)`TRmNd)A0h4Jkk5K1ZH#_17y%xe5;j6}1q5z3{f|_g zqs!Du-Vpe3e&Xn0UO_YWHo^c2GWB+$H^$M{Lk!)~;jwi@=DfY~qX_DDl*iuAXQT;{ z#z`vVQ@^Ln`1FxHtpwmY)J;k-8&Bfa`}s}}EiEDvjneP?iY=Y}k$C*3D70GYal zMzv?k_&0g~byn0j(JdknyNoye$;NN+*-yfdeNEHvK|c}sArQujBkeOFnR7bk$1XF@ z&O~Y{-D7>l+`S2qh#N2*b;v7j`Gphz0)qi^KBO<7YHz$b=yy7Q->o{?zvI8hrh)7_?y&43l#WC_zpTLZYgoz3E>jrDe>DTE`lTYuDv-^`>Y3v8NDdb*;cggbs)h56mO7SQ*{A1MZpp6yrLxtv>7$bT4Ub8XL#B z$AP407zfjcv?y0gup8)V-6Z(<-8N)SJq7Z9l`LmML<{G zW*Kit#D>N*)UD?Azr?;h1|n00m6m|M9O{(Fg5%V0Z-88}o#+JD+Rg|_#l z&o{G4wAE)Tx)Pp^{Q7|8FI$PLvm^NSNe>TI)I6_#C+JRensxp1Hai=c>TKwBWa9lE zV=-FhOuPTJYOioe;Q5}ioBRo@1CL70Efr^&qU#1CWs<-R*APRKS6D^!UQc5`e@5Xx z)Gkvn#O?^{&@;Uu9fq}=TX#FxcWnL3n!f}IIu8|-*mz?&$>{*uTt^T%rjKTv5fpC9-=X zfx?W-5>(+QDjwekbB}}0&dw5EPu01y7B!tcfwPzhf-7`U3nQcQzc%Ii20@UIWe~TU zRIJ`&DL8W0(2MWq)UH4bZnOxBKkdYtmALuvvPX}5e}21aNqS}-k&(q0#rE>%P(@eg zvzq3_y|=?C{-cf9w&!p9OH{uhN*udO5O%wuX%lRtSqz8!$oZD5O}q`*B)C;i9s7n* z$y8}%O_Y%rix;zd0jqp2;PESS$3HbkT?xxNBEj!RmQ^MlV{1lcLSdfDwR40ZKfeus z?eb4TSfKK2;DCkdp{TDny^DBrmA z^5kp8j6wXO>hH1e_0z7mEKFGRCp>mVK)|Xm*Qx+XIhKV1RoDb^z^B` zpRd?J=aKpK`hj=hHjjkc4EdBy;jx25H@GX}2y6s=R%NHM&;D)TkT!`lT5p6{r+K0( ziyjex$>+H%Vu2$PLUI3{lVl@9(REo#3b>9RWZ22NXGn(i>#2VCXC=$BC}eU}3{v_* zqw<_AGKxHXj9uTruYx9@FT1yr(^?GmjatTuhhMR+gM>QvcI+9MEt{P?kEB~IUQ zM4pj3!Ax0Dp_|~k#ro$NszHOR4B}*Mzj1}?nZR==)nWf_YS={FoYmi40C)!m--0qv z+3gJG8Y|GsRp@9M0ZMrzBCUY%jo~3FHRWDsDQzHp8SOX@ zJAxGaxl|Wz_)?E|CP{Tk;$2E49%;F_U3twm1qPzB=~bXxr@F?KsnfM+)c;lB|~`vX`^u8*e&0-{ULksLTZK8auXycshlHPiT1t&jG7@gc^c&Xg9E2AP3^ZeH8t9m*6A z*B~F@Q32q<3cF|h!3A!ltTp#~rvuzYKtOd;+$tQX_lOlSIXTbCy))#rHP6ebJ?VVc zW(;4Wdi-5%*meDrGTB9E;+4j?Wqgzp1eZooeM!l4k2wBEB1(-Y z`G^|$4d*f}XC1_Q#Z><7KZQfSXHY0jGNazK6XKg08us@x!0mM47YoHG4(q2FZ}LosSy#_5AYBaM3RreBv$IA z$*H z$5&Vdxn7g(D2s8(5{Ivcyk>CJK|zav;{A$PXz*OX4HzgUPt0wcxlxV0;s8RtkOrcn zOwZR?xq@gp;fb$jlxBH$kWyj4j>4q)ZU$>Rona%O_A^p^9upgTq<2Q!`%Uvd0q;M~ z3l-|uuhH59GdO7zBo5-5wJZ=EWk+z10^TE4NS8Gx)eQGcWqp0R zh|J^cw>h${Jr@I9m_ZdRX*JM#9Mdv~ppHDCSY8YgO0$Ux8B~ z5)>4NW_ZZVIq#(X@#=yuNv7|Rc-8M136TSguJg_GS0%Y>w=e1Ze0JT+UqnO0wl86c z)}~jvi5Qh{Q-2)hfAYibfU9ak2=1xbPSM=-?}H8C-Jj;X(?PlbeX}W7st)gZWdl?f04@i z|6zS0EV$^Fg=@L)lPpy`o}G!QX6MGx#jH9cF&>xtXM@6)gHKcvVqar1QbZ`7?0j>* zwOCm95rb9Z%iK$VC3Q}-*OyGPpYOeu@6M#NmTKF|^}qIqAWv=&Rfh;(Ry!@pzz4U3 z&bTYTs;VlZN-zfeUQB#EYeFV*;xhj|0ReMB)zs?DGJx8qEh&ivhOvf#TbjoW3JMCS zVV<(GXmiiMv)fKpU`$upVHq7A9Wk-7Ax9`0ej7}uTI0bbl@}5gradmSK)15Cre$Si zP0YjlUZ7i!3NGhjkqi+FyKO=wBoKhCa9ItIC?(y)IQaHa(#XiD<810bOD>Tz$ayMu zG6U)IHgPBhEgegMCASl_-CZGgMh^M~0`E%%rlSj{d2QbZQK#Q?RkWsDBqT8F_-Cs?4<3d#fv}iBi_>u*ka(!b%fpSrpF9Zhj_YnrIS=sSvleN#R=OfN{ znyKJJz;Or6?yTKPm$bL%0R6S0ZB*i%-y)I{|Gl%W@Kh4sG^ABzF!|Io3@SB0vrJT29^kac^dp8hRtL7O)SHEvps$i%%J^EiKS;5a8R`hH2-)Q$yu&)kB?7! z>*xFSz?2@uv}lzHgX&Rw@b|7`Gx-;Hv$&F5rmcM`lvkYqb9 z1>a>6*%Tn@v8046BTCEGD-jac&BK=b3KpTlF?tH5hz9#hC936)vng2I_kHjA)USUq zSr3=OUVA{Cr~lm%1X#H?b5M9yOC8vnM^=3^ddeLJzxC?Op*ueQEn6VYU4%?B~_a&n|F<{-%$Wi8M{y zWwq@j{^3nj2?MXK%9?q9Ec`y)RtV{FF&x)Ie{aeFlY05$6;uFR(qsg^-J$u#O=MIT z^Jq)s&`D*I3N95W!RRbvfZ5Tk9KZ9=Wcxad=F?8jlIKSoFE3hKZd=_p-R%TaCxz64 z%d+BUswD(++2)UvuNkO+d^rRY-$V=6wGb0aGY~032)dX)P}sg%>sPE}h9G34`wOEg5fXP>37R2vf{qcR?Uqx#BouyB2f<1FOc6;NR@AGZ?T9 zJ)Q){diPEG1u|o*i`on+I;!4l7n_~ZZb~FxUMYOke8)u0Cg2NH0L>AyQh{D2%SM0? zM}M11;Ma?90zoGTV!UdOkE3)h^BWpOdc@i+P0TDKO~^-~5)^TL9ReU(O&Keg0N9tbdf^*$6y;*l_5Ume5gY&%~gT9n#RNf_&xF?@k`S|!6^#lRKWWYNilH9fx z^_~<71Z*=CR2aDCivXuE1*PI$9-@nL(2d=ut}OZrXrgG53E~DWPB!qT9lF-3ui%5@ z%dH1-{O{*Vs;jHxLL32rGY=?&!bzlBs&d=G<%HW4QOU{E{aqgXaAre^zz~bGD=?*A zB7AS$64L(#1Vk-WT~nG5z$z z%1a=47tNnT4s9zCVI$$g`tlJDQp+w?C#N|};ML>vlw%oA%;|-IjuHl)jiqNC8D?fa zx)1DZtglCu3(9cK>w;FM%=hI+4iZqJF!MwFjcAuRm=b@FD}p z{p$+>v0dmb>PZt!RA)HlnbV|6ccnWeZ`9Hpz|TQUCGZ?YvZQg)`x|e~B8-*Gbz?Nh z?oo;$9^5ru9f<$D&DnHnR?HvAX&eqD1s6U^1u5=*)_=PawIE2I)w`gVHTh#GnhjeZ z1%SSf1vT%7CL^meJk-xT;~@7ID|!MBzrb?0ipRO>B@1dm7d{rF~CerFrCLz zAu`oZg2LxU3xv|k!S?&8x^m}YXNVJcSrjOm!Gp}=mHP>Wix~kpZG2x00ssv+I<^6N zf0XK3@nYMIjQ)KcHOq$VC1GeM_;k5YO0F5OFl+l(Y6|z=VRvpKrer-3h zz85!(>3lK=(PKS|XjChw&mLC8&Wjy&E@>(M|BNKtQy@YX@Ez^9oUl;otP)28{eY0p z9Ow*2)bVK5J-SGc06E#$MnpWikM{;k1^|teEeFDL4`j8iAB-1)mhb(#k2Vxv0%rz% ze>$?gm8rO{BrPR$aPST2_g#1yXqIvWhe*}x?mUuh)4`WZz*&u%K|(hHJc!{gZgWG! zopVMT?AbGd|iN+MG`KB0cgv{_z!ADfVN=k4!QgV0Z+29c-vQE95UGaRN&9c>C zT38~l^)cHDo?WxtbYki9gn7hG9*v5sI&h7ei?$sQ$_ALcZ2iQsK*7Hd5g~d^l8{Qn z1~{O}5-MqpW)n+SfUmgauin;5U~vHA@P!tnTS~BJIs%vf+4jICg*?K?DotVxT8}&_ zhE{k|tt?(C9=RvoW*X>g_XqJAyk^Yod++M&`E$dzPcSihI;Tth9f0(0yip<+aT-Yoa9poY=jykt_^tSq4R0IBPFFr53xNmEEB*0V zS?z_Eq|v}c${0SUt$5n}bEeEvvBM9CUj(q{n^Gv1x_%!Is-pr_gmM-i2&fh}C(CJ3 z)hjA0GV<~;!Scz+mAv&2f3H&i84MlkA$sX+!OGl`q+f4UZpSS&Vh~uZER;m+o*rLO zb(L})bchoE>>#h)?tWmnm7ps~v_n~aV<*{>4u>hp-=JD5=z41^^(Fcm3+JVGowiQJ zv(-oNR0^IFTRH$dUJTF%Gc-s^7Y8m*w1g52iX321O;3Am8S3d_HU%E=P+{AzZEkM9 zJ8$qjph1;7oZ@Z^?0v(Sm61VRGCeraI%uF~0eITAxulWpr~a!kuN?-rK|KS{Fc|lt zkK%PR$}Qao5?^h9;UY#@62n{$ooy^AZm!dV23F5}=gY{#=}DbO+%rKO+-krPW%`N<~02vKB6Uh&Zn&1$}IyVowV0G;L}~_vU=acb7YTycW<)nJ%!(c4 zI)iVcp$5b%3vpgdqLU~#2J>+^_lN8hL#B&g&^%hD;F)oz1Qn@P*3_+--zvS07}ZN|mto|Ok7$8z+R~J9vHQL*s81UG6r2*|~vp-+1F$fTfO<;9(b(H$iE1A## z)3pUC`ROu~#o_Er1eSRc3rcwP4I(iZe6uIxubY3(LEV43#!_E#E*hnTkDWbn*xYjL zWk8Km{=TkCNw2!bFH941BsnVq&`TGIJFjb`2z!6dcO{Mg3)X8H!k3#gfqgOZy7~2T z+dW_t8BPXB1k+hd_~@6&3J4IwKwOCabC2pLo`}m}pBh<}&P-sLEx0u8vDZoL<=uP3 ze`Di`<2g|EfKb{CC1V~%NgX(GIvl=B5cP5!(IsrN>pDxWyWETLm3o@5xK0uc$DL}H z!W9K;S{lJ958u#duW^w4&ffmzrsjZkX3*P8^N8&G!^ z%@uMklHBK`>=bu(#-7fvMos<@ zY_OpEKfc~Opvh)wAC@j%dM^r!AkqmSU8E>T7im%qRR~3TO8`ZrgM}hpstVErNCzoO z7o`P=6aghPLl1#(bKckIdEWCo=ld_3aPRKiyEE6!&Ro+R(8-W)CBu@zK~gU>z&ddf zX2muiQ7&GPU%iRJ}@Xyp?E`d9%M;Gavf!6yaw9s_4)ueq2TT>5&rc7q(%R-_0C`!r-hO|H%(Bd z8_*xcM2h@&7MyzeZoHwB%u$ql+J9&CN&l0M@Yp>|Hq$DO$=yQgVtFd|#njWw3UiKK zmp2MpW5;6JUuVDb>i-bEb>rLG2Cn|dQKH`|+)?rKJcexPIAA6Nix0y!gIP#4?r ze=Jei6&AIqCS6}&zZo&#wFo*oEPy`jep~#96siYAFY+%4zaX*v38H62HSsrs8~E1M zn1u8{rnT-|%nI3P1aM+H`EdK?U7HR-M$YT~hCxgS`^f+%Ub}?10vL_5Up#e$p2`wY4{_MFg5MR z@zf-NPnE}+)6n0gxbX~54Ip-8>D9sL9b-jY2yjyA*QVf?YJ)y%qr@OGbe_%BTPj)l z+IzEFlV6PH7Pb+#?t#qvW+zO$>!&CA43D_q-mC0d$bMH<7bFCMz`!j?PUI)DA2+#h z6Q9$(#-=GM3!UzryJ1f&>sK3D(R9V;hMTiutNfZZnJGJW%imdoYBa=E2qbU8LXOD& zy~vWBV3D6{RJNWf&8>h>zzdKg2pIblA#B5VLy13;_Da-rUag;r)D>$aRXy2GGP2!l zO{c4tup*a!Wol-oMFY3v?*_psu6<(xU?hOMAstzy&>%xzbDa=S2f-yiR#EeFqHGWQ z&PS7?8a!={@7|3D4c6##@fhbSXm8@vYt^*mwp%R14H5m(JKE_t1&y0%xMOOMwGoL$ zAO54#B)QQpCEO6*>?%yd98)W!eW6FHi|pW*DZA1L^s5(~e~xDUd?2f)K&R63Jrr&}3AU)A`P zgl_<=F3E?)-aV?T6DzVIwO8vV>{C(ehI7D%GVF~M=Uka8zdhs2MZVLqbc>z)PxJUo%Ny$d^Vv;H^25Sr2p)%As zRL;7T1%Yk?wRtfv9b9;Y)L(zQ4*x)(H0L797}Vxl#jHBn>*F=Qosqp3|LRlrH?9d`<)7{!kYIKn~4DDS~BkkHT)JQLQoL$88R+_QG2TN(t=8%sQ?|158!ZzZ}S? zQY~j1e*~Gzthck&4E22aK>;!uu9(&3NKqFCese6eTaGcmPsB2#%^`9>#W>?{4bY%_ zY8tuKgvN_KFeK%>Z|mL7@?HEuJD#0ENze&NsS>_SGDGN{rM^sjVyr6q?rsHLs#XJt ztuGE;I_IH**v~zaW)-wEs!ft>;dcA>ZFTaqP7&YTfWuDkLKkuZRF2U|P(%qouqPxT zfwmqb`YMM@{Fn2cONb8Ii*(@NlInGFaq(UL>i}%F;$}C=IRqI8Tif-Rt*Zrdf@zpv zsUlS7_FMPKEG*Mg9zmjO-c_Q}zGJsL;Gh%2&u@?#>l@Va_7YkM!Lqozm(QP%>C#^r z`!_@VKay|fy_7uf!NSTz#;o)rr-Rwrrl6fHZbzGn{*2auU%#KyrrFVISdvJ7v7(i= zSu9m=u;R$pCBt1dpg>Zo-yVdI`4qc}{CGws2o_o0Av(v4>B`28LmlbD_P(# zA?v<=H<1qb-W;P{Am1d>jPgJTG3wZ}uo&74?))POqKa@^LdKVO3gV)xyY1=AVaJPn zy@b{cdfC@lMx}`La+Ej-vDsvz?;t9RT346nI|jX3RB5HCKGwuvcP|vVo!U+a6M`N& zJHKi9Fxc)Q0rro8-f2HPLe>fd|6#VgX+)&`saLxQK~};w64NC;_R8pe&_IVGEyJEQ z-mCJ=BgT^z#0dq>FMG2X2f-XQDrEm2C|`fXMglJG(j$_>Fi>@goAP6%e#_7J0A-&| zW&G0$wxqPQG`20ui8!QQw5{s+ipwrFH8sTmUsa;&%x88Cwu2rnu|@Q#Wng0I<9GJo z&U_2Uj*c{f_f?@B(l5MzvRpwSPVtff8`cu?j>`iX1b`QEj05MmPU!n8h&55A#?8ZN zX=&9f8Bs+9qIO_kEJp}w6Fd%n^9T77CI+CrK^~KI8=*H}2fM>m<4O(}Y1uZG%d?rm z;j#S)=MUx0Ao}!|kAH&zzBK!l+H6Q}@UJ&{r@{lTK&KIwNjZOvIe~{#*=HYgSeU4> zrpG~GP}QOX$J$)(0VD#v4rPBI?k|u;7IF(oXu{MW{}tZn%@ZJ^GO49%2x#Q8>@s-Z zaO|MmqXBWJOxryWfgnSU2Gk}rALs`y#0W(~zXT`^N%nG&LFHBi#kw@|VKlMT7ySrS zemQpP(>;#xK$X|%zW!8+YoG(81n7gri?RuvkK%0#O5~FBuug(ifGkCWOC^NJ80dG@ zQI#fkk8{#V-2~22Gv_rYf$EFXr8gqnP*zrqASIzaq{xg}z(Hy!q3WahOB;m=#iU94 zFvAKAT)Bccm~u$^qTtZeJlIV1LomPl#|PUHu&+tT41<4R*A92)q0@m$sLF0Xa9_C( zvXE8cUm(yFirmjQ!M0ZIz)$)1y2s7W@h z1WuOKZvJ+_oY@XZbenck!4ovBC`C7qD;M5r@vHcv`C=UY-<+r=?he zG$(t4o*=z#q;sX@pC1_phUuWn+KwDCNwoY^GFkW=i-p}j#*uJf=9!oaA|OV_5gJa)J${00Cy6-u5J#G2Gm?ld*0 zHL5qN6MTqQIH(?(D$Kcy9ywOD>{;4z^%@K-mTLq!5SLxLczP)XS zaK*u=KxCHpMJ7y1HIwjMoG`5BO7A}e_97hTGtQEaj#74pGtQv(9LwTXC zbY@;>(85g_{}LKo27X?f08N1}TDzPq2W5wiyDw$|k*Mx(%VTW86g}kWE)Ue|pfJJh z;)}A>xU#99R=bnE;V?`bnADXO!$eK0Hj@#^S_PZ~wivi*UI->QZtE(&!U=j=K1W(0 zepG?=8dM`jAerECleWTH6t0DS18eYS6)eiPtSTRKE=EHW9z$`O>J_D(a7y)eN^9Zq7OxX(WT!hsG^@u~!^I7&tZ#@fJCq&_<3zwgO?pg(gLbL?7bJ0%{ zY@077%rJH0u+Qs(9EYZy=x?UibF8wJ?P$Dn^9t<*k z;5d`J;xbgztYX(z)ZU5M=W`5WB*$=Sa13@u+=>{wwUc)vpm>3}MN+GyqG*jb*vh*=j=Y7u z4!7qU6CC$=B6cxHFT-B0a8reS3igL@^#{W95}mmE-9>+MzH;Ois!h;y&zYBB+NY!H zW!$Y-0E(R5fumOtR&yA$EARhCbwzku3lGbgKa4vXgCt%|J)DrvlD^FSsCMwZ#+#;> z-Zl#d%jU&scldqfA?dGZ_kvl-uov%qmij!m4jx9g+b@>ei zyIxFx8G}>0n*rMq?j?$XrmT2^1MZrc&37yXHldr`v=*P?WOUGwBx= z1gpW4_izZkk95MmQx1dgPf6W0pE-g&Ct3t?Su);8EtNT$YAK;UhIe2?0})_?=Y zER9vJz1!1TxzD7dd@jQTxNL^MKvGTmVp{WIUlWi*s}zdfcIiI)xX|l!=eb(>*5-z~+fZrm(Dlf2cV7oU0!N!-qZaxr~zw1NMXs zD4(CqL(a!JH|Gx{kW)azxe5O-1{~&rL!C5S&T^~x%iGPS2V7f*@ zhIoTm&TuAYia0%!@tj=oywDHxb@Py5zChwEI|bK|j4G=Oq+#<>Y~;G;1giE9&2-yn z_z%j+46)Wz{3ZocjBU<@2He;BSiQV%g`UfG4UR&jN%6CCFF|L8OAcjG%ZbCcS zM`^Q4Na!;*zOt?Ja^i10J3lEu+gkX>$Ct7fQ8Fw~y z`|-{BPcx6%nwsTT$YjL_Zquh?KMqLEkuGb7+xEnTwKgOOS+>QqnfVJuVUaI0VE&6q zY;k5z0Q32K-&USv1xlxbYvz(u=I%r#tjw8h`J`c`n+djfQVaG!896M^W2f$CAM|%* zWN+bCKZv=&oaDr92IXpF;L=S&9gdDWT>S$cHZv9+;>n@8U$ignWFEeN7bNM0q5>Iy zp}-VuZunRUqA+nh;+RmBc`s(U``u3+piBI**9U%qGjKJE4P!R!E}eUXG@<}|^$Bb- z>U@6#LJ(!Hg_5TWYnr;dPE9PnS{}a`b(A^VOecvSg#5ZSuUY%k!1hSxM|U%r6hyyZ zsz=TFspJ||g)SF~I#5UAkoi?XI0hETR3ji<*L(Vw-(jGP7fq-8KK$jd}aBs~=n>(re zV7qh$%C{HB=?XS8Evlzgqb-HZ)A+z2huoHLh1K@A=2hn6klsyGgK!UU)>;h?yZb(` zGEF-zzOXIpLXOtI*y6s`GzEcSaqm=z1@CjMa3F8SIAl%@LT)3fi(tzpa0UoaIsNWg zzvJG#jKaMOQ(vwsZ+j>j4Fg7IE<9#g?$=7%l(_@WeJu3zVXXfs1vAnWnSt($>J)D> zbHc{Y1}-EpGt~f8HM?WiIHd(?7Q^=57X@ZI|2D?Q9u@fLQRmw8N-)&iLFLJ>_j5~lswF&WIZHEB!OT7Y$ z5Ey%dF%PWpaF|(-%1toV@1Bgq!DU0PIRCL2m;ziAV?Hw z@|u%dAybIgQ$1@gW1t5E>KOZB%E=!$p}xZfTZ~&6&UebZM}H&J*(GyRZmnXer)nOh zl{*cvVA7@u+Ov6Frl|`VHN19WzEl^PAcxIN&>YGi7lP$f`9#m26C{})RMA(wFs0SD z>&WHVi36CJ6Jg_ag!CRT=ioEWFi;piQ2BA#(UUpl1eH{Z{*nt}RTxfBH~0y3A2dB3 zJt-u=L9b+&7{}jmX7z!_Y%wl*_5&5!)NI6%nb6BQt7)v^H}k}Av?UGRKO&u_fJudk zR_8vP!2x_b8rqdT=s8moNq=#|(H_@V;Ejn79T2$}Q}&){VeCh1u6NK&|NVQfgJiV= zPRJHHFWL7a6-r%mV|xOK8A_Q}^!G^iT!&o!7jqne0hJ9JnZ*eNH=Hvl3URfhwYzT ztZIGuRyfeet$h_V*gx~fx0--eHJ@T6 z)sOzZi3tmxwQcwZ*;)0REP59!1hFutfu=O@y^n0Hze==s-J-X{Vb=HK8^ErWr!Y-&J@pU{&6RGe@;rhsHV*e(KyBjyrq2}W z@^LwsrSe&sDpdm^_lo@M}mHGO|D$H=$G5a zc0T@-kW(Bumj1rQyj&ad+@%3H9J`S6p)9>J_j6r`w$imqr-|+;5@2&zluHZwP-1 zl<@|NHOCnof1k_4hoi>;E8NG%PxUAaKlUH!vM-&aakif9L7hna04ujX4ky6_*DBphX1za^4{wbueh7d3-h;q-v z(H(*~*sL>u)cSB@Hxt@#;$Af1ruVJio8;g)|B;I{WUx)vj0R)rSG6L<&$^% z>u%exMi)u^&tb)l27$iG_Gsd=v@$Q_?~GE%-|Px0=WECGsin*eE0jkA0_}SSnCsE- zkaIT}d4*_1t3E*n+9SCz7ur87cu!OIATRzNVsa`x%JSMLEx6&!R~9xXzBiYL zmTi&!&48~%hHW(L!0{Nx);8#+d}Z+jZqcCJ7Vr0L6rI?;zqJhjrTL7wSw@9(ZE#iM zx4Rtuw?mcPGh3qjL+^$1zz`uxcb4ma*7treOUlJdwbAv5R$ZHkUYLlx(}OQKRJ0bK z-adwU^MQwF)P2GqOSS12N~L01Slz^pEt+9R!Ifc(X0?!VrB`C3NUM;O?am{5-wZVG z?(d{Doea+!+oW~PHB~dAXR}~kJa1|cN^Lo9*|@3!U&^#Y*pvRULGxa!w8QnN{xap( z=>DU(Y4IoUOnX$BsFCu(6P;bXULD7(UltZJJQg{67S+KtS}m0)PFTaq9_T@9{^sp6 zKCj$XOrn{%dnVfHf@6=Mh4Rtcm9>SnzTmEIWMyJ2y3=v{cdXek+JmNS(Bbn@7h2V3 zQf|IFF#W*qNhi_;Um|{KKDZS&U+vPGUk-eSH%Z4oH-s0Rx0XMIRR--s`-V&XBUl|f z5^S0p2XG)Mt*j)LU2a^N+mAlruq9WnA&AejKXoIo@ze7XQaOB3*N6Okl>@RXeAb2s zTMx#|rqshJ`24Tho|qZfO=T(I$bK~E)(Mc@^u;b9!PFgEn}5m`SnKU#9OCLJpbG|M=EF zZPz)J{1%GW+W?*8AMm?rmzsHP7_p&#ZQ9z9-rxT83vIf2CG$JC<$}xgxU_QjY2WODV-I^TEu^zC>KM14HVr&H?-?u)N0^lS+%8_4t7e zhtFlSttO1~n|$Kd!~3@zL@mJ-{Ieg;IJvD_^#b!NY@e8 zbL^t^_}vy4yb!PQ{h#SB89z5qE1$tWeo-~c@YXj?GWX9+{DkB{UbSf()wc!9*=3Ip zPH~q`omX*fwGV0#XRdW z>e_ZD$jvoaIWKkj7GJe5bi2^$k_T=yS~|MC5#Qm2(7!n1u>X77mzdg;uzhYKEoCW* zC%W}sYSBMH=A?pHI*t-}#D2h=W4Gvv;NL%7 z)mDuqWKt`)U9LoOTDuAxlF}`gnaC?!?UF>G0TqSBceR z|F@RT2Wk_=Y(TD{euM8(P`YMRN-^Ay{!v6cL&3?yRRF!1Vk3m(U6#1}hT{z#UzFGV z-0aOXj$f{m`gOlUh6Zl`vF@d$)C=`%%*b9H*cwhrd&^qgen;d{f_cx`JLJq$^4|wV zwUnyk<;DVQ1~E|5Lb6Mek?EtQW<8hnwQP-DxKNH9Flcg80@fV4J)@T6a6QwtX{x8s zP;1(Fp)Mii<=1X^sEm9VFl^*kpv*!AYQj~(0v%m_28%ygl6<3zzs@zV0shwMeAq4E z`#Sj>1f=Z8cNT3G7Y#Zq(fL(La`Z#ADnL+bNN5M3^UH`iiJ}7l^1pWPIQvQ_-2}K$ z(lW!SKjl~pwJMid#aBrPT_F-2xrW)|i;K{GIbmORk{mMuhC&*#WvVXLCA6{I<;q+- zF^_lT5_tCMxqmdC6`2q=9QwJc@8lLGZm>Q7KMh86{Q)Gp0IVX=@XLUl~ls48qsuG~1ulMj(eL*q3H3~2AFMDf!Y$qX^&Yeh2t~iGdm7l};4qCZA z)d_GwTGF;F%j!x|B#t@`dJ^{KcsUmf&{N^dL;TAV2ZgX(tV%gk%Y;>(D5$z;B5dMi zhSOn7F3=QIpwemZlipf|7jS|%2*MGxDeeU8zPODE?x|0pnGzZVe!wqnuClf#u!8kv zlSIu#lUvouL#U*CrYb9R3VYF-pn}qD$toaw%P@1U8o%FlBHsY_Snp}gnwU~IXfhVjttQ&j? zdV+tcQgi^7#K`?p&wbcD>e&iA0Rg1nFeu`Oe9?|0aB{LVpi^4P0G_v1=S=m$U7;!X zm;NTe8HNqQohK%NsUbYYAA8(>vOX*g0zhZG`Qq#eo|C(kEp*g9PKI?5f)ITI6VOf_ z^Q=wi1x{Poy1zr7@|G~FCg|C&do#!uQpCkR@;TEcmmIy@WYk??i1|Dz#Kpx~_0H*T zl4q$Rjs)ir7WN2Q_pVotX6~}s#)-$r#SxWEA?>sTt&}STU&p_`E=J;lLoe)@7{S2^0eo(3NVfgTNMY{U-7D}mASI@ zAsZGGU3$2gy|gtOzfp-%Z&EKc+PmB6Tl|hv(H^RDO=gUo9dlIY5T8V z?A=ZD#B$YZ*CaT?5sodb?pU0gDC)xQ-MxxdcWOkv9l}AmCP6Q7V^K*P|AszFrRZe2 z-US&2E;3&1UIyn^E9~-)@NT8Ti{MG6t|}L#Hy28}ZL~ymO+^(0A6k+B5qdq}z@kDN z)rqA6u8hXNrbc(4BPuLBIGJnM?W-y;xJ|PV|DvSP^hOm1hI~2!*}MBor)?C{*7l`D zDQOhBWgb5PeB^6iJm-PWQY~tPS~aopH11120*HOQ=)^tkdhRs-qYko)cR0)*d^uh) zQt}mGdzDZA!nFyl^WIQ^{rg%SS168NfWN_1d@We9>^*!j@!~}wtia=I*D_cR2!o!O z7a9cJzPa6dVOX7T{fBxzn*t)TUvuHQ<6u(LgNwh}vz+^)u7jzrjBF__qJX2)3L>Ms zD=Jm))Jd9XFikjNqr|pKwjE+={8sk4!I4i<4%29hf)&gj=V(x(z_cDxh226YyH0|i zgZbE_T;z7arGju+SJ>s+OmvH|gE~4{xK{?3dYIsEf;dX(bBlXmzp$BT3hlX1dZb*s;7WYMF zZ*pr8+ExVXADQ*s+bf z*&SRm%iR9e2MJYPEMJ+3DeAR*(fzK#T^AEv{jQ5lvc9qXc~6lT<3@$pwH2bgqL4ASU;LVlLC@gw|LvB*b_E~mHly{KW>fm}qd7Zx+i7;l8rc^!zLmXj}EUSvrxj7%(i6`%9z z>&-oLje7>jl!J|DRC>nh+QzrFhRyw?s%NIZT9`yw@ArRA!CHUlrnaWa!QHd#Zc)RM z2Ye)ISeg74DgEo@r*T6wb%u59#n_Kuq%AFK*OhL(O{1m2YyV(gi1&^r?>Hw{5ps6l z^Im*$;s#BU(afZqPm|S&qb@el21W5u<6a08@8n)JHi-OvmY;`#S`-iTvIX6bDi^dN zujl0?S%CQ9&V`#lMv*2-rsBGOc<7-TGG*u=b9MM77*dx1KFtH!eXS$~c1;IR)R{kE za!hwh5u=;dc$1=?$+cZ5hhI@L+^VwmQ})1qchLFS`+^6q0{MCb0*CcBRJ z@pdnTtLM=J&(hBsD$}nc@K7n3dF`io*KvV+J7N~qf&{ z!~V&c{8xtPxdQ9dCUakXBQj;A_1$|d+`_nQdZle$4?+35;6dp?*dyI{hKIFLcBvT@9L4^&|v6U;X zb+(k<IM}u|DvdFZ4%*@gg_Y- z=_t|}!E7z^$gw2r;Vom`Xqrp2j{T{cG~wSlO-9)VGUdb+{#b@W{eU@Dvesb%t@zjcQn;>mL_+7NP+#}m~hiJ(^B^J6$= z>R`4aTM9cKvA02@^!~RV*Qv5J=kA5#EvOgvip;9+U?)A*X`t# zbjjk&zY|kKfpD(l5^T zncF|svR*S-8OKhp`!@sQGxC|YBOcHYx=&VicxEPHhgEa!W9=jw#mO$K5m6b26Eo+X z`SWpJ-0m6L)>67?w^z8m5*2Y1LDHi_Bba+0LB@Ptab(r{uA0EH;}Z;vxt`O~O~+U( zt)UK*=br6T9MA3Pw&}@nOrt!dfevV{NmHxIT$AmYzn*P3LiN}${r7eG=JkFPpa_sN>=DHZL@gLmJh0J(t} z%I#x!_dF;z+{HBplUkK)c3lRP3@UI11%-4_lbDvDNQ94=clc}Af2__fk4%r1U*z6( z7L$l9tMC{DlEsrVg+t_`L?@&ArmwhFd7g4ej=Wn54HM0)OC2kVF;Djq;mryac+U=@ z_D)?@$tl_|f#$v5f1*V4m%OgFOK1in5cVxcpaPT)ae~don?;=6>7=5jPPoMglA_`C zqyF3xrV>GG<@H-*xhG#;VDmgWBkd7p?+D3|DKB0yn-)>G#r;~8lLI_+(R^_BgoFeY z=ftF>UQjo>A}2aO7X;E+;8(OTb1hsT-Nrrbs_9H`6CWtak0iM4F0QWLZGJo3Ab(xT z@(HQQ#iiAb(Ch#HW(g9xprr=q;kvjUy(mO9HF5Lis4B@KAH^5(RKqAwtA&EJa+rpc z_;bZAwp*HUlLemGn}O7V=J&m{rUQ@ff2nJL?r8SKZY(>0m%k@M!qQ8bGiLn1;+42e zdVTY`PT@0mg>Bd_3n54J=w6e} zZ$hkhW@g3%A;uqxF#D@5RDyjRO-t@Am_un<=0vt{yd*|qvGRlcd zZRox>)7SEP)v?}G;^=E2)p>Qkf}|{#q0f3oNHD_1hxw8qO&5L7y(h;FddH2cVHgil z%AeMFzhp(j{FOFm%zZrr+TSacZLB@mKf+dvfU}-mlZZl|2ZU`FIydN|yH<)TkTL{P z5RDJ^9+1ogGwK?r!C!klemZdp?T>z~ttFg$tnwi5x@YGpHuqGU2YT3)_epT&zF zlX&z5*8GV5&Ye4i8gWAlix^Ol#xYSap%Sv^E^ln?!rJ@(OOt7fES#1?T;y%~+%1U$eZMtntp#i(8H; z?o)j8q>L**_-|?-;%E3KN|C?X$1etuJXaz9rAjQFxefaU{GMxS289- z1egMy`g-Y$NV4@;MzkoS$tuRKsztCHf)Tf{QydGnlzMUaRaW%hoH?)m|${@wm1z4UM} zPLB)2LZbm7;gMngGCuB9du?=W)G(S{Qzl$8c*kXFX-Tb%j`Kd?pLt>yZb(u7I)7L; z{xy8A>p>kSO!tz0)+Dq+yJ9`n$|J%Cl(AVUTC6tu-L}+R`dO0u1-$7ZfC@g`4GptbW-}ij%iG4F)nnza0vcqsXO# zsnl1wPp+TY@NxB0ub-o#RpC|%WuNOH-`o@6Tpclt@!&KCJfP1RE{xhe-gx&-NG34f z>h3pr-)zf^nqBmuhO69&K_I!#O>F_>RrlPMn{{|>szkzhWKAoBsS3mSFDj1i?=%5D z{qrFxq{-0grfTunbfa~+Jrn&OxA9FPT0`?^Apt+@_;lTpSZvg(hD|>6t;oM}K#Awa z8t1`zk^>o&gA|fm4T*Uga}=>bs?^PJhpW8PSP{qs%j=e|dSaNW0pHi39HnPt;}lK) zS52Q=CbnlPej4}OVUM4$*`E7=jhTfdN;8g?gN5rjibF;;UvABh+G!w5fr(yu=bXO6 zj~C${-`%XJhrg>y_>g_5Am=+C%(o{gmp8h5cLm!>e#I9y2a^kaW%AB^262ifkOU{E zq>Mt-KZdE$+7aq|4t|IuVor~TPi5Xd4y>@4V0N+7>EdWR`c@H-yvq6Hzvx(Yexh=h z(F2x|58{=Sik9I>jW1?})`>XA%V`f-IpPG(t0wOV3sly4Rh%R16xNw5O zo9s@{xz>Yc;1m7>ZPad1>O61WV)t1dpgic=+Wv3>_Nkqrp?w&>C%w4bV)kq#^RR{E z&6_t3pa5nIP&;+I)V==3P0RsWLE=w*itKOP{1E?OuX2ew7I*xwrc}8A^t^` z?EBNW;C5`ALX&h%OpK&ufs5`lK-VFgClT9*y$AS`wcb7R3|q4rp%Uc&=PCKyvXERJ z8O1#KF*?dRQ}_X4C25GG^xC@Ho_Mi6AARO($PXo+j_kM)3c)Q)_B(}Jt^Bm6%@!Yc z+tB;ukZ-KPh=GZ}9?O4$w6j>M8?=v(-y;T@xDlhvc9lQZ61G7R@!nDKfnC%46YC^1 zaYBdE%E0aWU8X&F^`VO#HcV`r}BuM1X(;x+;7z%)z z$+dQV>;1>?IVJT;mKQaw5(6o;WH4TUK5{-@dZ?XHDHD45aPbK6Q03j>59SO$o~(ir z*dWv^paA9(NLGnypB*T+J<;7+3EWv7B`{)a0isp=*$;loCvqh$kRjF6Q0s@EE`sVs z2%sVfuA@V^Er$HHz<)rwaAKmf>4mpSEv`g8m_6gV!hrEYHd!Jj--a(|tNn0Oo7Pkt zzoT|6r~sQhzNIjEg>M8etFxUc;krJ`5)UkE?kR3k(>VXW``xDBVShp3bE(AkSaDmJ zMP50e1~Ip*y|G%sh0ce^O)o$Xw&vki&OHtu%J;Gk4!-6)b}rmZ#>K^@Jw-sf5)?jz zx+_lD#kcR?5omK^yU(6IBW{_m=%A!EE-WfiM>(!4GffK~?z6{x-U#HPvPs0IS`uRvk` z#C!6vZ~7WnOkL`dXJ)JgFy7zWi3kjTj0Dd5;ytRue?Sspt- z{AAPU|48tUTp#n>B@*2)TEAXvItmk~ohLyVO})N|0eu)j@WqR%+v&NjL^-} z$ntv{-3gERqj1x+5wXEk&XZd6>^EU0qHJUJJMT;<-NMK5YJ)hn&yDX5HNVij ziDX!5l*`@cudJDuun|7w&RnA!owMJx-`qMdCt=|;3r)yMH(ly3w!gkmxn(YY_vT+f zJNVpcu40w4-sdFYk?e4C(%Pd=Lmtardx@wgJGhZp{{Nx@>@S=XT9^Or@$%e_i-xCB zqM+{tRg1fGG^xk~$9E*tbhpeGHTZ*4YfqDJu?Ra8vz{K%uY#?V|1~NRm27tD7cgztZT=yQfB#5N1l!HOs!+zEc8CQ>hcW!} z_GG@C!Nqj@inMa|Aq$$XVImi!3`ib&_}(e2Y`8;*+;$x|lU~GgtinSoHr#uo}AUf>E(`w=@?B{(E=~ zf{ft550f4h-j5^|kWKNZ^$m0 z`Y|jsiAT{tueg}}(sN3)cPyZ&j1j;nk_8VpHw}CH^RF^9=Y2n`ZfUSz^Mu1ys%vTz zWFLD`@%~5G^IyQ(?)x7P{EZssGCz#haG%5QZ}s(Bs_T zXkx$AIFzQVqFvA;i>U}qCl%h{^^ttf0jGOCXdlvl9@9qg_r?wrKj(j1?Jds@I49uY z!0Bvvs^Pf6>E5vX%54kq3(+|F>~}+C!o5N9Hitcx^4(I6mH3#Lj(=6SZ8Xud#vLQn z`{@u_#_*KJg`nwICyw@*xGNQEah;@=nmPS2z zm-Ol8VMD-7ecrIG=!s|<2@7Z8fgGjraepaw3P(2c3$lQ}k@KT_{FqK=0OrVoBx?@Lb-23{en9WVYL?r#jMjIOhYlhpAMBirHo56Wcyv#z8|N>J1HTgcqVUza$!Ct|Ah zz_i)CSwxhCWrM%FoUyRaF8P8eg0<1*&+hxcw%Qu6vENH~Py$#~0}tk-^OJHkP@$mu zTQJX`3l!11czW(DHQyb+A|kT&k;x!W?v7Y+-5FlJzf|PE%QvrrRFv||QNfwM26lF= zgv7Qhf54l^q7OrIIs{?qCeFIJ&G-G5=abGD#^Uz0t|!dm3d z!8=d=_>N<2noTezZhtd+>?g*zgFways-##A)4`rC7^@1~zHXI>nQdYNjYOziXu~9h zhSmT3ywIcr-i&YAh0n*jQ)*`sJJ?c~wosaW9{1NNUO!f}OoxUK^hac^5xJQq_di2V zAzz-k+C-#XV~Xrc6X7tP?|jC-6x8V!Fsv5!UddX-w9t~Nu)J5P@`7d{zS+C(&!!?3 zKL@d=qE%NqIapL-;Wsuh*#^9;=OiV6C+#lE06zxs!%6`*Ga}ZwAM)jqe}!BApHt7g z3MHyB)f@48^hAWQ_?F#*h%3H|xD;;NNgv`MB@EA!u$W6rW%-$=a|T-G`~K`gKw&v9 zqIzX1bn~WS3e_hU`K1@Xo8}HEjd>QO6jnkr6f2U%A8cibag(ql?3uZj&c?0NMthkZ z38ojpDF4=XPj5t2QkoFrQh>L0>&>kyfGY()+DYBCZ9Au}uTKY19PwL`(XU@01G2V* zvPD2%)j1o09+c30iYB5j_}d)(-vdWp6^`5*F?=Lz(#a&GQxtnqO*_u5W18~@x?Yfi zt!)rBv0vP|1XV%ZsFI6NqeOu%Y_1+nLVv(zP?vd%EbQxDheO3I9O*C8WoxX$ZMUuB7 z^S;--3H?I=>p}#Q*Ex?ypgW_c5R)p^m5ub-&(}8-tcTWlBoSA8@KNlu0L_kTbQ0-;g@{i zRX@C%tg0gF`L0Vf?(Smi`tZWw7eAM^O3l9dj{ZN(wkxH6tm!`CRFhw8`lZ(f`uT-$ zZxPkUfeh&sKtoAFLFY>q=;BCKZr${%DCq(r2L|LTH32>=y$!du8)u97}T zB@zA?cD^ZHh|{)aqj)lm%88)5w;R{}Zp4MHLS5~ePugeZ&(|I<=|DY(Z!y=^{Z0z_8#(<41!lv)eS;rlZzOpINc8Kc2Eb1(7&9N z@uQbcUl9PO!`#PbU#{;S%%$r}2>4l_bN>GRucHdO4m{ROf8A^yJRg)$T6%fu$B&>E zMKAHX!RSv8zhvyg!dlQH+9lZsk$)}j-;Z~@AzS4#F^92VzIU8^=8+nB>4{o-j^ZOW z7tSZhsx8RyW2yM@*V|vsQuxpu3zJ_nloW-~2C#^J%y4De-tWr&{!+lr(AkadS7)~I z&4Qlsr*es98pX04Q<87kInp@3Dl|y{bw=4~i0v7QB{Bz9%s3q?Ez4Cl>A!MuE^qPj z@U+}C49QKX`0ua&MrpXIirO@p@r&0ymrqDWDs4Vk93X?~e*WTlh(#L-f^d?;rdHl@ z5T%EXUvzw2MEY^EevlG9XQ^5gx$p^Wp!*=ri0#5f5#9o(>V)+-Bz&)Rru|73IWbqw zjkZDK^z@Gsnw5bwxqqO)`uXpfXW5zie>Fdir}>$?B8%}?tYv)MHr(vLo|Xne$SQX( z8yg#kzP+>4zoaDm*CPL%$Ui=6gcn<-U=uOj^hUu^Sl$Ak+8BiL&g9YZ=WCYWa_W5h zCH3&0itx{O!?Q9ShI9+@+7HkJl4{OBxl1MHyBF@b)b{W0j&9KyJ7@`UIP>u2CMaqT zYpYw+oj9L1ncuC^=B(BsOXlxsEjGruUL%H`+NU5d{_UahXOVVZ&`ZhAUS~4)x|S{f zaOv!qv9U0fwGC=^MSoFn$1yU45xLFE!;^6H`6V(xI%R~nch#^=MuzB}iLxVmL3Zlh2fHf8EJfN~~Xz=g^xY(ET(du*6;970&|4cbD}_ zj(mEnXcAWHE@q-?Z@EA4jXXxp{IRf1VP3fkH=VW+Qr2ypkX&$9p!J zzmw#sfB*hX&@EYQW1pIW>}#ef0Ru|zXXX$3FxAfgKP^Z^<dSBRR`X+`f8A-R z)jHK3nX;FuJhzE*N~349zJOTBxy$%>119_|B4X?F;T`+lwiF^Cs6c6L(0x*I@G;Cv7VK4&8b`GMPVH!`idU$qWkw(x5`nm-XLU+ z(mFUg+ONmFF*zavoGJuRu#9KJ@X;_J!Ax;qdp95wi22yH>`n+ELqN^R$q_O{EzbC( zAJ0UVUWK)8%EYHNl7#&Tfjh>@&3AjstX>oshU1)>GP0F~nekjJbfol-@^^kIDkITW&MRMI!b~b^q}zI5;;Io!JKver<)ky62-)s{cfNrWIoQHK z4c%ZLHBe5s*s=fdIOC7~9>#Pce1=!6qs)X;n_|@l0eAxAV7P@^KfBAl1Ey533hWjg zVZZ!-2>;i@47$;zkM*r@v3c)wH;@sX&Nm0%!hI@1EFx|k--toQFO~p#cF`$BK;CR0 zT~+7N6&amm2V!NM!7IF7Tx~GT?Z{p9c(*ssI1_R{Ic&I-yA+7X$=)r1VwR)ekp3$A zm-nP9f^TJbR&LM&o1P)+?fuy2_HsTeOKhke?m>k>C%7F5ci!mB4nT8(tITKY_x8KR z|Gm`ThaoW0kN%04LqzObGD0|GAGBv)B;C5q^skRRT*=9;{eqcW-2zGSk?Exud)^qy zHK%;TJy<~DUC@{86O*if*Kd$~MNgn{_YvAW5S4SF_xs1oZB?RTo$|T|)q?|bSRiSX znv(8wVWH#L$CCv3F8tt$p#)t(Tkx#njPHCUKGRxA^rO?@#;ZR#eHa7*w4`M^RW2D( zJbsZSCXtg$ks*^I!2RgOF49QFxLUikb-=3Zo2Z42$2UDNcbKg83xl*Si^E_NsMT6G=DM-iIR3 zJrJ4WvX=I}4)X3<7au>mR#RqM(wEc?c_utccSSMKm#oBq7Ton>VQ6MJJE6=j_KO+NxW&c=X7qfC=kDE$EAr%(GImIW#ym5RdA*J?hLWWvuy z@x%Sz$ z_e53CkEDzA>8az^vgZ9IVDSgZjTDcnh;m?RWp!KPvpmV>8LKcK2^CL8<=yoO;n+IK znjFOZ+!Kgr2@7qN<d?#lRLw+G-&=hYDGFpBVt-@cFNZ26?baH{8eQJPmVX@r&y@CNpnVu8 zJO8b5YFE_wOZ=T2k*_ux7rGyn?Y{&vm&7)A_Ot}?M5UIy_7~8zDxJR%d>nth1PA05H4AI zoZq=UrwFVeVeSAbmX@=q7$y{~nqkc+2%0kDfTauQx|CUtvtRAl`icRW7to-2QE}Vd z*C!z(6Q)!t+D7E;?A+WjX|`*43926eisI9kncy z{)$MyZRJ01E-KltXEaP~+WyB2^RHN0G!hB7pZUmfKE?EJ^WYTRd!yKa3c6xc+M@Vc zC~ahr+nO&v8spE;bBnT)=PkChrZHs-=>gx&Eyn+m8zG87+j=kK-oJlYaXHW&pq?=R6LdO&ic6Aj z_nH}Sds@Ta0|x^OA0HuHA}qPbo+N)jZaVP6g9k*(6w|{1!;-0#K*Oyf(`EmE9rr(4 zCL$&%eDAa6x?gBWf5>BrM@5s&5N$)ZmcY@Bu@gIdrjZkdhr+IT!4IR@glIl7FwC4& z7JRi^?~+p(COLDKcDe_7JT|)BvRRNS1P06&+K;Bnix;UV<}OK2coP>-1__OfmhAd< z&r*IxqaWcSn!!w}qAbqSSnC*q&ECOMJbkB{p9HewLY+H^ z)=!4U#R5o2_grV^+B}7 zGfGLehh?1_3;G=if5eMS1T&2okK`+z0dBb0fN*#jpwYS(+g@LW_Bd-<-#r8n88Yb5 z6X@=MMq|^gqnc+Yy}EvaNlKIb4 z{)_@4to~(~D(f1t2?;@8+3V547`h9vU_}75$e8)gV4}W?jt&{1-m+57PU3gW9ek0^ z(cka*zsG%l8B{YBZdooI*LhrCNTPwb<9hh8G5ICEs=c_Dy%l_~KFocB9+%LqtIYJt zQF*$g0=(T?#3#;Se4p_x#^~Cge;8asZn%*8oP|NUg?iAuo2W#m#{4$weK?2{yDa}` zF0FI>m)%v#7Z(+U1*2p`)qczhXvc_wP?X~#_Lcocx%W;9{9q zB=!CU)qWMV;HKnzxfC||Rk2^Hp`LCc0gL;wF7D;IqB9{tcDB`WS7}OpOHa2s8smhZ zsAMkmKEL|34=b@fg@chYoKV`M-xKH(cpCO+i|(0Pax{-0&rS%=yYi7q=C?BSsLgg6 zm5YcG{Vw$XD|Ubus64FFMu`hqD5GqBbmdUmGChh~5$v{estekA&@j6{>PKb6Qbets zi=ebed+HXq_6Qky`|N?N*tgnK747)1Dk&<(uWG!6Pnu3-JNS;+%fiz1ut2RQk+?gnZPK5%c+_oofRS%v z`{gAU0blVx&?Q+pgNUs1@>i5jqh=h2SNsHgXpi&1K*woK5&<+^Z@ zKJ7akK=R9Z>Vz@Z2bnxar{3>B>Cm_rYtUhx1z9XGG<(wD_q$4dh0lrP33HnFkFfb) zzeTsW<4A_}h(x*`i|887U`XG8(N(tF=uO#=C$biKas~QUE9k_0tbMoi%D-4Fly zP6KnaviltaH#hFbe|S<@1%CYMuz0jEmQkv)d`eReI@D^+bBQnUOJM;ZsE9l>?YWkZ zYPb66`Pr8e5L7OyKFVi)4ZZ)IlUWF@I;svUYuRyM_;S7jGFm@CZ7ukU*aan&%)F#I zUgE3Lh-#EC`DYljT)DU^8gDEYlo!-9iT`o6{$=<8FJRRq!2Ubr|F`o+4D#bA3Hctc zD3M#pCbdSBu?Cm1WUAqeVm*ufBSwEdxxpt$|CWECjC!5>*v+qAKw|S;WTu9~b#IUS zner?xtpG~m$~Ul=aCzW1c)vlZjzaEaEF;&YHMI8xu|chhVs*#)>}Eo?oXS&xm4RRf z6E*H9fGs%RZ@j5JI3JcH`47?I-hlRX}aIh_U$5u5*lf8reeRSh^Vn3o1Ff~(p$&RIn3Y6}sr?JfVlWuDZQul0%U3|&* zjk5wd)iriRlvT+-eTa{AMD*fx&HnjXyHPoP_)VHT^!Wa@op}fKN4Q@_0cU|KT^j6) zH&W7>Z*$Epr8GYwXVbvvg zjwn7{8v-eD_ZhOCD_th`pRPXi(yAoiAjt{(2ed` zGh!z&XftDRqe`b@jQB1Vs46jLB1i@7Emc;&R%{LKczjXM9OQ{FRj48zBgSHh z9%o3<1pqKQJYEEc%lDyX)^>QvF$jbM3?xAdzMdppX-qvF+kPnSA32v3EkMch@?C}e z@vV8@iHB!aHjxEr^ol)cep2%Z7}ZAVC!x{)C-+6f@X8TzKGe+MXNRP-?mZ1cBfr*7 zXypm7ptkS!Q189?PO55%dU^=@6!vE+ZKis*?}v4ixx z(p-NE@FHn}XZ(M7N{Sf@@N}w%Pn{6(KfJEja-ZnE<5|qYhn;Xo93mru>ONu@6y;wa zv-lnZyfA5gOGQLxBeub$I6<7#sCsmSgUK_;L5HlVK+p5Xj{%G%gY^IJ*Owx&9^e$k zj8T@;>f%#VJpr^bAEMK;d?E|Of*_vP=Q@QdBi?kQoGhkOXvA0<^| znnMzJe`)LCYi7f8r#CIJOo}RUQU9!&E;Am)>Tmt;q87_H+`z=U!Nmk)Gbd6? zWBJ>U(4LdnQT`Po4`3l{@5sRE@==!X{;sY_hn z7;qm*+iSGIro_?wvr2=-0^SaWZuj5uDj^@tH72i;aP*jictZA*Id*j>jJkuRB}jGv6+?4OMFB&FR)1oQ8SRLu6IV(EAnDvL3A z@pr6nwRGPl{*&N}B%yIW!(P*;N>upo_S3ImiOpcwP^kQ)eZwlzK!V<&^bY2@tZA4g ziYhDrEm;os4A7KQWKU@E5YzfSt0`67BnbH+!R!L}gTRiuht zIM6M{$?JL8_!_PiV*L6u+-vQEveFG?D~D9tHpB%hN-2UhuWbe;cmI8Jf6B z(h?xMZUbT%U|ZjfJT%rF%Jtjhj94M=Xs$i*|P;nK*Hepzb zuqlL4kO*gu1QW079YT&l_bg!t%tsrpUJ27rd_H-3+vgl~w&!iTyz>b|Dge(z^qRZR zTP|l}%no^;*!fNg$wRb{V}W{o9RWX27tstXHev1=Xd5djE5p7P8!Drq6&6lcV-gfR zd-Dg!jQCEZMlHwg=v`6VL*zpjv9A;h-MAvFq<+Qdb``z+be{~O5@94hSUvUQ(QU;y z)?Ew}$Iy6o=YwNF`q#$q6cjAeTL&+DNE#%wn(KdZ0qE5c0QjD~=c84%tVaCgm#3Kx z#h4O(tCIOf&%EUGu75S*{kyS|5A}HiZdH@ z*Rg+9=n$k{8bVH+{uCzbZs)i&(!Ry0OFC5$fbp}$(#T-<4Ls$K>H!+k8F#&dy->5&{)XD{v1n~Ot8K<^Rpq~|AZaO-Y|^II6FIW z+>Vb7EI|>M)NL{+^|jcI$B z_kav8N#MFUhRI&qX>1j#-GiEk#t9w?ZT6wQ6HH&az<;~!Y%jz!xd*C~f_8=ypa~Qp{ zV&YbP3E13`IKk+31p@gzE0uH|<52tWmrkQal~SOriR0fe?KhL0Ln2XPwSkk3yrdpb zg)mq=AFN&)lM!rFg*whEpnt8Eap;VqlESpr)P`TM{}RDLR9PsOF0#3#b16d|65~QA zrDeHqbnucau8PtX|65l>kwwTuq(z*Oh?#dkYXN_(ked4#w2~3cKx$-3#owqaiX5ur zq@<~doTqZb)$zN?`tPD2k8cikQ9a>97DAbZ>~w@1l@_xgJZ`q4rEE&YB0$we6#2)G zkI|fHWmGD{;@iS>+_EjA&c9{G#d&RPxciYPF@|txY7?|s^BvH9J}o0$&HLl$zf24x z{uMI=i=hvbl>lwG@l?+|2sQp`ue&#Q#b}olrFUSCY~m82kvGU_#c2Cu=g|jtQ8hs{ zp`th#QDjr&wK+pIeO!N>^^1_M(?d=vTE)*~`92D;1jniJ1eR4s_PZNra}%yw7CSvmU5l;EzPz)$d1cGqXH8Y}SKR&>6K)!?L@VawWzT zYT(aysQ*4rNO!O@Ex=AjSH9}vBxbu=7tB0B+CW9uzy?faKmY$Q z?%zIK7d6ll^eGT(3sua&MgdcPOJ{M+B^#9rv*ImPAWjDVzN)9Hqq33$M&P2nu40g( zVQYSsQPap?Ym?7J;n|ZXUR6q_G+Ex1Hqn#OwMzKXpsIc#VDK76?)$w5-Re6Loi|Z# zR?c*!i(%F{CHKl*4ZL^s-t3ihLEGE+9WW)^P3!Q_!S=*ociBuu0DO1{7??o!YN%rf zD1glOJ*JI%AJcl5oz_8Tg=$_n4c+2;@P6L+>Ate}S)2?)gaGH%9AQpc zM6Yj{+epNOlf6$yQZz6~-4dpfQki7N#@mX2teo>9o0eeuQCwN$WBhb-!B=5#jb^<~ovNkWyw*zOV;%H3+VFhX$LXp$SbIwP&NP{o!8XCr8X1~q1?8Rh zu0AS_OP20mqzbe~F8SYeX|HKgIhI?^$2oR+dJXicphUJmltsgl(&c@0ek-l*pPlUF zs8(v1amTtZhqKxjL-tr02E(O&P1ZDuN#qqgi&Ho`{bU&5E#pf4&nJ$a1a-Usd4o+! z86AxHv=DQjNZ3d4nPht9owTIkKNy#Y8?v~J8ftZwdS3perj}C*n}3-7uIuHZQlW-) zvk0$c)z+0f3KdrA6Ac@JN0X^o_CuDw4Z?L#s&|{o2V!Ts}Dj@}U zQXH-7Ol*?9E2dq8)uP@;gPZs&p;?emvt84Z{6`#31mXncb1?nE*pYC73?rX*iB}iLSr!4*=oxW z9v`qJ?85z-R{kHnqyZH|1+#=PylReJGVv&r&|A)q^J}tPJB9TF^SJq*m!?Rw6?PRW zt(c*Cup5NlxMeXiI1erQGucF0Lx<#zYqoinTTzKi?1H*J)_K1in!h|9-@D0Kl9Vd6 z93BY9#E^ebgup!i=2&JltcXSTPRzQ_IOIzImkEnQO_=0G5>Qu~nigA+A479U<)x<1 zBs5#dB*}p86bfDcP=V4-Am6R1sv?=s@ks|u>d5Hr9Ua7mu-@N*a|Nj15U_Zf$uV7I zt|>Bp2wemOibFv9Nw5wxxew8rF>4V8>70K3KB`jz+KuH^VWn6nch)*%+3e3%cgxj}z0^TBdpPZZ@LCi<3^kAc)3@oBqw$+!!c^fjmCsS;$^T}qRjatz(|jVs>pUv3%ZDR(*20=cx@8S#W#S zC2R*|my7^tMsgu5S*-5L{CIP;^GfSoRzt%~emC~|6-VO_93WAHY3zfM94O#~0d{_4 zl*q*k8_d;WM8?Y8k6u89duy&wrXzXGzmos%9Q_}2Tp;z&WfM92-n~4KeA`!_-O>5Q zzf^v(I2WF=!XwD0k$8-?*3jpD1&TZ6K=KA0e}%-;X~T>qdW&nWLA4wsDhNcU3m%M2 z!)~dpt%VZ87>AT4#RRk@vTZ7_bnx!9?Y-SIKPn{Kw6BF=fRz!;xoVY_732_stg z=4_A${>a;nL=ecDN{z?7WuQO#R|oEIt0mtpHz7?%a^IXKtewSimQx{}!!Y)-NDr=Z zY=(zlsmjensYEL?#+EMIGuEeYg2H*+q7PR4;nZxOCd70aQ<1n>a3q}0$MiBDB1O5+ zgNK%cnGSWa$ey5M)Oy2$zK3=OuoRZ6_XlL~9;*qh@5)qq1gcjKP__No80NB>smai` z7QFs3?6wjsWw*cZ#5|wsP3E{AKv+N}?V!`l>(hBkyCBrlDt`7FnO6O63g8@>+f`Z*B$vkW{opuu4j;izW#R4J zgRfYXnsgKy9v6|a^Cg>LAxSN46pvuZiF_Jk2%;}M*TbIoO>sQc(uFZ(wTr?%mCw0N zo>Nx{ZH#sVF17%4`XQkJ5|bc@7#x1W?VDa!1auX*x_xNJ)}Ir)+xV@i*-rlkXv!<< z>+kVOXR48djT25levqA=y#U6u1IbsHCp%k*lD8$g^${W+>9<#A@Q!f4qXlYE=80j` z7@CI<3CvRL5y7nAFs1s#2Urr1v(3WN3~QN&*TG^Hz3nSK@lb`@Q%xo@h%eZAigdg{ zbAW%;^xorp>5ifY$<&O^DTy6a1_G)&&^*}}&-(#8l#O$p%1@EIms zX`9BMuw6_IIyvq6xPREmPi?uP&e+y&k}R+gWHJonp!=r6(IuPIMMmo%Ax#_`~Wqdg%F~iq51g*h7X{GIB(o2rS{{U z_rjHZ%i4lKsAE7j99dGC@j77$UvDTtF=kDcXJgf0f|6~&OmYsygiUAURBPcaY7)$Z^QD%UvPC~rspSbA za$ScU45$%df>g-{`_!q6`A+Iy;Y&6fz215ZkL$CJsnAL$X^?X{f9xUb3XyqJ z7^xx*0kr2m?e9Y4t|1j?b{p8DsJzF-#KlYjqN?aL^|$vtEDKfWhWpo;7xY@iV_B9d z0?y1|fDj@HK2`8t$|#V4H1W=NMGyx7QUZLyGnkA`vtRNdqs8xdYuxx`d-6^Ylb-u3 zJ^))yG9qW7)q{9?(75N_pC7YWS{I<+H&8ia-$f1*n1Fu%2P+w)yd^+a?(C5s#O-)g zqugScA>H`+GZ5FCP0}x&)Hg*+_3exx?i2u8cMwNR4EF|rQ>{6fvaC)7J~r&r3dxYAvln^q!T$eWZS5j@Bs<}yaQ@ig!0@oQPS8Y+CMZD#<_eK2k->byfD z&SNX)A%*dQ`Z5ThB74sjVhzNM45X?PfyZ^l%^nz*&Ox)j%uJR$88?iRAtgZuZwQg~ z!wSiAXU!{olCqFQW`e21b`$#@%8lDXHLxAONfWUIS*n~xDpWc1U(|*k?p758=^!Rd za)Cf-?L454Me<<)?10~!nwpA89=I4knQC1Cs)J%KE-s1l`8Pa178V}|r>K~iP{3N5 zkL`u4JFJhLstDX&Am!I?nyCAtqK$~xh71Q6xBhtKgp!16;3cLOTjs}}YNx4_o#|_J zO+JAGUWFg^BkFh;>woEp1LBP?WaXs3xQk@NAn%F{qXP6vsRfbw{%QIcR|ujFrOE%+oy97L)p|~K>&noN<`8d$JlqC z+|QI7X?peO=g)U-3pA|mykD(t%{#TOS&u#(x{H!Or)YceYl-`81$TrDfQm8%b9p@)kdH-aA8$De9tJASn57pgYYI z1L;5}09M=w8n2|j-oAig0pMFncw-v1an=dz00mW%W_jxwi-#|7^s(fznuf0PkK9T` zPJm=GsR$i_khP#(T|tDUz$y{8^q@MPf0h5h-r9$7_Ew9$)L^wj^>bAdU=&Sz`M}l=Pip>u}a3=-8;gEyRtLL@B5}SnO3Bz zZGoj9jaDn%*blpgFdv=IPhkECdN^8Y=rJfOr6?% zpcI`BHXAiH#;AD>&4#MRF)GGX;3aYu=!bbcPiR)0!OlI4-z09pi|4Y7>Emt30D(Mz8OuTj_ho{ zU^rD_0UeEaw_*ha1>I50)%@aBJ70iDsAK1^WKT0ddJEvkEGke1>O&M2^VQdtmg7cC z?V&=WOm)fnrEJX1Ww+waKGsupc7xkK7uYa)c6Q{6#lY96UdM1~LtwtFfYaZ`CkMZguJ>LG2sL z_DirREDxl4kS%~a3mJnubfjKHD7=bjS9p`r%IBWuPom9@n%t|%7(L0wLa3Nrg_zXmt4xdQ3)`tz*|jB1rvxGe4uQ^(VmkY9NY202v}fE% zX@4;^;B z>Gn@eV{dp|y}gG-+i04Q#xQD2W>a=>ip*mn4q|h3hWL(T%+`@^M+;JJIVKpGRjSQ% ziy{$|fIXqjPWOgCDUqj-R~4JB_*>R$%9KoQ)9YX)vg49sxdKD;%E&4)k((x2&p6o& z&yySeCZ&WWx!T;$f$z4ed1rXisVx3sPcu^kr2evsW_!YzTUqjV%Q=a9ty$4RVPdZ_ z$uS=P7)=0Nq3wCPt)RHsc7$szU0ZgqBjEEoE1TbQ1%Ote`PkFvE_-u3rw}nXZtxgg zn$@UhAeCChU=73j2L;gYJw+jO;=O%tmWn@g1sF#S^O}P_$#2%i`$0AUS6s9-i_FACNpE(Q~)Lp2jgJ)`%!K4BQIexeJ}v8 z!bh$0w#Ekf1re+$aYGJ;q;lrvl))kxnt58GuHEPa7Tr0s_c?rl#pv zw|FX!yFt0&DLA*qxx5POZJQT9v)H&H0G`Ce+%jI-Tu&^3O2GG?n!LQg23^w;CFu0r zlvLL9tP3C-Vdy3H|7qw%1&e7heBg7Q=ytIn19rNz8r$Z2aykatTf*AT(y#ZHAoY6f zom1XjLe(!|-z7dpi{(E|+nBh7J1)vngT>c}!5F%sosqOHRIVu<*G;9-furBuT7a%_ z`%|;pkldfPz1n`R2{f(g98_t9NFuLYg*eZ&Xj6*N16+?EB)y+Ti(dQpuQIC$Sm)>{@#x zA|RHzEq1@FD`sk%gDrk&w$do9|1TXaDAJ-A7AZTYtDs;9C;MK2%1wIHAT?XRthVJr ze_Vf#fCT+6(PPRZ$6Q+VDLLQ$HGCq?qu!jsqRf5$zl2zakOx8T90Yc{nu z3}3L$=B>qSZVm+$aEoGHXxye*BmY?YT*YIDM0=Gwe%S~JwU$6RwBf|9H%+7i2&+71z#fmAQzzSGh$!oGW)kD!I?6o2bC^E$hg$eq9ixR!MyJMtSK9x&cih zPxXshE}NLDTe6?V3lwL54PQk1XF>UUH1SseFY^ng1sFubL{$98kpkM>LLXTr>(%~P#fac0w z15l(3WfG?z29w$}11>So2E%!^7%CQ)!Y8$skf9>sE zu;UY88}{_MR%DTID^;1_LxU^!SZoX~VK!V(`87TKf4didJwUr>86AcJRfot<6)qLV zme)@NKb>M^v2|N#vA3^ed!dj;ycOxNLs3s*7-gap$)rZrPAJ?I8&*eQTW3(CvNFZ- zS-#M$pr@DXTvvMkj5vj_7gn6z0iZao@JAy#H+R;o@KC{IB7B2iQqKv94X@|1Pk_ z3ay*G39<(qA&{@aA`QWFWTzSy&6d1h(3LVkGmzuU84a|RxPDqx+W1;suVy*w5$sE) z!O_zkf6~2-h*QDY#_!$ToUKH2)Ck4ui|0p!YDphB)=sN^Qs+J8t}78;AK~tS1eM3h ztmhZ&<^OA4e_?mj{8cRlm9ubP)p@;!$HA;tU9?3KZuMV7oq5hl`I$S9rkBoIIKr-t z_X%8MPx=EmY5jFnO>^zY6R{FSC@{cJ!V-I65NG5n)kQu=20fI~)uV8luUZm-?64CHO-yEUzWk`jTJI=saaSSsWl;19Y8blTiuzLrsULY4vyWBFp?+`^b{Xf8limVe{f#euu@G!25lB}@t0Wur|5_8NasDBw!*4~P{9!3N_B|_( zh_sXSp!?w$M0~ol7>6`~UTJ*7toBCsQOxYTYDtWr#1XrO1lnwM9yVJ7=MaapTHCsX z{wZW?EK6R?>kLD=#`Vx+L>sY0?O_E^2qNoJXPwZI z0RBZC2*y`M@{4c(jy`3$VB8oqmvKUIqvhbXhr4b0`T5P=Pvan4Cd)*-0v+g1kbOO> z3?3*0!;|pxjYv1&MI?+$R-GCwC~9ig3JvGt9fih; zIJU2igjU8@Va6VNTDU8V|8l!=++&>GY^~_|qXODH$NMTp zY!5Gb-@V#Njt}c8FC_-6Fr3eSFvHSN{rk_pkbhjt6F##Q9o9mfaI>$o56Pb9){RLv zs8>=5YpO&>R@U#odunFnu-HvhX@?fs&>hPy=zu|v9~KqLr(tJ_CBXK;>Y~~)C|pMg z64lA}{k$cbV0V)#1tsDODv|T^_UE*c;i>Y&iy8KoE9-A!w@Itjq?5y6&bD`tJ)#NX zPN9_^J&Ntdk1%+0y{?EYUdqRMsMSPq&$oL+E8Z#~RJU{;FVucW4SEj){m9v=+!Atf z<3TongpsN1yEMuo8~O)+&FqH72POLlU6fK4-82WP6x=V+OPX#xbO0+PAm0=C^eKhc z8a7lOp_~jQEId3*K#We&+U{vXH`dxWtkUZ_0hM-#HDsxv4D^0T5WR{rZa}% zdLO4UT-|r#EW<1HmJ~D`LDn0Nex%fwZE4OU_!Cn+a) znNcsl@ShBDg}A?6XMF&`W-$=xKm&xZfD;oSHghw|CHbO1EfTP-`&E?|7h}-WaMGX+ zD@ll_z5*j~PhTIT?@{tM2zXGp?( ztBLx-*00-(ZJ~TrBCb_^{O`2Cm6Z8boHhoj^Y9Z4+At4>~vUI-Jp%TyA7pGVomP$ z>{csHo%r;SO$C$l2b+;t3&5-I5B{)IWi|PUsu%MJTHS#u&iw)#NQxt7O%OIN`9OYh zU!~6+lxTikGFh4T@IC{SgFl1xlHU2zT9WZAOHIg9N4S#i&PktB==R6t9XF~h_ci|uA*=$pe^jUc>doh!Tuq(3Z4ucSnmkh5* z`?bG#xr5taxg@=O#pMnF4*|#Vb%Pu6b?@XTJ-4|yTXAtAaGR3#+~@9wv)x~l>>?Z} zKG>|TuKL@I^+!M2<+FRlZqw3n?g#!uKi@JsIw=9lanFtP^gA1$xiEZ|X7_FGkgi%UwuylYGZVd}H~PK)y<9^Tk6`;WQxN@Y*J2{97*B zG&m?2PSc-EWiyf^hlk}Ku@TX(NY9!BVP+qS%Y$GHQUUPUoSu$zA8d4lyF=?HiC#Ql zKcQvVbXm`Q?J_aazkFgg66yV_uAC#O(ZX`G(>*vPKRMDc%6e{i$Yx{*$~s1rm$LWG z{#{hjNZ%N~aCB9!O^VsX4Ty>JhPF}GHd`<1?7vst^qxmKlH!_Xq>SlbHw0h`Ag3ri z<2^w*5oS2d2q@X;*v55&2@ER*$C*v!^tD7?2x;ow8!itVc3`!bzL zddc5K5Z`n%_;#f4f&~H}{3t-7H_}JGpD; zRPWby&wW=@n%#pzm+si#<{`ngpa6pkko1c}IdS}4-E^YFTOu{4Un{h)ml|3(hzPDy za4N`USu@)Pe4g#xXGPad$yDgA`|f1fRQMljd`C$!OS<<6f=qc;Stdp@Y zuczbA@w61kjOci`g({nwGtK9WMLwn}fNs=Y5y zM8G>C<0V6SMy8Hd`owf1cE={#{C~HcNJf`~AG@?kOBp8700de!D<@fFFM=6#Q?9&TL z_dP$emE6@CXW|{Fg?_D$Yf?UGSJbhFaP*-PcqmmZKJt$^4+J4f!;xFD#~LMfxBGL! zKZuk#VVgtaQWDxUFdpnj+v@bOxlY)EyX1B@_RRt}Ia%$-(JuZ-g;!hQT5!&CNa(K{ zFfH*G*No2;hvqSwn9^jB0hOK+}FQ6)fKRuV*I}Dx&GQrd%1aC zYz`24W4j-oo18B7WhC+leW%msJAZ1=c%(6~(wVP9^0RLJt&SByCU9GOd+XVX?5tJV z!O>M^be%oAwmt((l*Di(tM#twypg`y2Q~}dWV0*56YuZDBaz1MuV*gqU(y~gUjW}Y z)Jd}ieajW}&OjOMYEu85CLshJT+-3F&}OHPnfE)#d(Mz+BGW8jG(G7LO_zwWSs(VF zxvz-NPUL+g?Rs-;Iu&FbRj2fD^M!Hj7MydQ4OzfQU%FX7FYexR;Px_80$BU?FY`$+ zQ;$t=9Vx*JD=(M6S!orYy%*lc4Gto&^Rf>3v^_q_r0%rqQD8;o<=saO8r-wplWW9> zd2`RU=idykDGEnBB3!bJJ8w!(+u0Z|xz802+N7WXqm($zlY3{*vH9W%eHB9V0(DDr z+Un|*?|5A3JHkj`C(TYzK;59;-xsB#$=hq|elyi|DX=!lw@TLA=49OTxm=p~BQI_j z@zFD2dM>%MH9`Y6+uAEV;=$jR>*QyXx`aB#&+|!5m-w=5ZUox|8K&O30QJf%wrKQs zUCyb;ijq-q44=#>oR_D*3ThMfBzbTv@d6W6?3GUDw)ax@DY@G~X_gkLa^k&KZnG(Q z4iq5W2c3+yzZox`Wk)=Gec`@+3BKyPN0J%Pn~ZXQ6S~9QpKg}aC0_f^%<-OSgm@%QfQOX2IUS|N7X70=J*5AGm!@LU0S<#&XcVanB|}`nkUuf0+3O zF7;uScaphm@000I6q{DdZ@m57$-eeEN9OA_Vi?bV>|(Oc+J9zP17ND;khHGAx>?Lu4G46S0tU;k2>#F;d%p^d|Pc{WC?MWU~p%Nsf1XZIqX=Bh`3 zWmu>q<7ITQ_qL-BQj*)_b4OOkFRMV2oy$ILF{SG~(h{qG`WogEfBX(Zi7vR65vXl` ze_HXbkGp~!!c&r}6W}(trg-Ar+wUA|NqA(1xvIHB($~%tT{k%ef!Jf_*felt*qF55 zbhNt%TPAFD){d?zMoE+mK5Kv&5dVGre5A-fk{(yt_a5}{bU7LOR`S0&LO)mGopUT} zdT;Z_|1|hn1z}g@hU7`Zp3xGS%yg1X#mBxUDbY;A&dZGg&fp1qxhwRGPv$2V-}Om@ zI@C?;BXo%3rsTs4(s451v`lMYKUp?aLUz}ykGXKig~rUb>e9RT-_*ro2rDSMoZvDz zEH!3s0L^p9d*fbnxWIx=o@!HG34YJ4Acf!oKQ=+u?zrtb5}7WRpX@6vHogCu+}Sw2 z;@JO)xJkiqX+~kzO4m$(4MN6{X57R*Yi|3=WJxpI`Wf%0=_&Vi=@ms%=n>HGMr@ld-$_X2Aq<(efdJOkh%oG{sqGJ*^)*yp#Q*c4N z(nt>ABlwu?&5&o~A}khsh2Cp2{~5t{=tt9c1&v{mr#@U_Z3kaDWv}k9m(=e{1`>rERn0-v3tS=T)z;<)J94W+-cScgSsfU;x4Tn!zv2~t(S+RdtvGD3 z|8(;FVH$eFlPGnmqK9pe9x5&O^d~jX1ezGpgzgzGU73VlPebrnqFu5YSr6I}`VYjY zY&osI?F-t*)Y#oWcrkeBmem~ecAV3`==pSmk^u#wF@sNNpI}u>ve4S|CZVmO&#x@c zC~aesx^7x;R{QH4LKiU52z}@B&)s#*-Qi3xF5Mf>KXZh-1sJ-&N#@1Y8F_b>6SW}; z2Dr5u$u{64(>APmMT**-xEs&yrf_UoLEOQ0&Z2l*HynAP^pJu<`0L?XzfjCkTjQ!d z$VyJ=(QK#We5N7~kN!W(-U2Ghwp|;RP!y4nmK2a~lul{sP(Zo_M27ALrMr;^De3O+ z8dAEuMoK#TukqR6+WY(V`##V6uQiLc7?^wR`-(G;>pYJmHjv98PEvlb!XKkCzlwjc zk|W%n;|QVn1u%zV($Oej#11-FowbUIZE*$=P8*w|c|OX5m*$l5u#EzgGJ zaP7UkoS{iHIoo_v-KXGw+dPP&4{oJd?lNNhspTg+p=)z>E)UGC1#UcNU)X@c0`23| zOkxjG`wEutJVMtFlo;bl_U}oriS{ZmjvL!Jo8-7E^4;^&(TzkFK6$KuwG0G~JDYf- zBMP{)l9-MfI(tK&ehHo%{xH$7x6~f#te0k7yWK8{7YMV*gOCs7eLs=l+qkEOPN?w< z?89xWZQhGXal#qhhVh}Pr1J5_O0|~@`$$X&#wb)*9N;)A@`e0o`8(?Ki7brz$bxTd+NXwqCUQ5%0w|u0ci&!nW^x+~kEDhYFP@M8 z;#??XIT`p|3Vi)##*e8`&Z@epW&*w2##CTYGx-+Wn%ozrJ>8nX9Sojq5r#d{1@_bw`;1H|{5JMB zIZ!v@qJA{Bk_5YD;?VxYqMzm7Ao%AY5iPPo$bK-0{|ekAd#~iU;;L+_D>?j>)C$7w$-1Xc+XvPzB zH9IS^;FbhN;xcq?k)@{&I%)5rVW2yv^x;hH8qx3E?d;1#5ahf}I!^6sZsl0`lxzdz zNQ!D$(&cIHaHzQaVKR94X2Dc*_k-@NqQrP8OquJNBFuT841`Sr2Nq0Uz)~oe<%%<0 z6$maNIxV;EuM0k5!G>*~Pnp{0g^KHoO&b5@2L$p`zFTvPh1S~Hm z2ol4bn}O}t{mL;4X@(f>>}{T_RrgqT8P(6+^q&`2IWj3Hbk$CX@K(r3}m3WY&K}iQX1;V0&o$kw}V<#r#QvPE1xE}k3sn9*& z4eQ2h!^rb$&c)0jj+pR1yDX4*Y%*=m5WnG^7#hx!t7}%$v3bd(9%i3-Q&|uTg4C+v zekHD!78`d~=mgN_PBv+;k9-_0aIvz)IUMooI$)?_5Qt8{2N9TLAsH)6VNx1==*!gW zkNEJ$;abJ$Pxd6@WRp!8hxb8*)zkc$V38HZ@`F_yK=) ze!GLMqpr)iz&(`+DeNH&CMM%_1gpm1HfG#z&8=NbgAt@C?#VUzL{sQ8mGPi9h|A(* z{Sj&VR1)W_hO*yDig-xF&+Ovw zpZ)7$=d-hmenn4ko$^-RHtN(oIB~$}z#^D4OCHN9v&)i`<0=ozCYowiH;lB+E0V0# zWF0P?^JC({9ub7O5ew+wFMqZzwqA`cox3icn`iM`uT-$qlg(PN#t69Cy?vCGyMAXs zhvnqKSF=yA8DQOa?bq8@p5QJ+igLB~Zd~!sl=h;v$l6ar7Epj#bC`I8Wz97q*rR2p zf#xVZNju$ThJhyx&Iyn^;`P05o*7-WX?>TW#2Wxy9R@|{3W;Ebf%A1aC+Uzz$ts-5P+PwjvoUM&8+{#9q2@Wj7p1{+ZQt;jpvtq} zD2KLam10CEyS1D*9o*+qy}`w3Vca!aWm)pLStE1gM=Nzvr}3=X6gsTrZ=#m);>y2U z#VW#~5m?l72Nk1Tpbp9(E|Z(mJZMZfo09qo6fY7%>Net*g9}XUFN3|(h99+Gg?S2& zw(yvVF$_yjD!9)yFNNI>oprdUk!5CPFS0ND;4*z76l%J{gyWU!vvc9Ct7!S+~zW7aZGT-tJ6o!d`!AQI?z*)pufiG;q14Q3ELM zHnxtws&6=@fRC~y@`EoP=cYEWjH@y_ePPbU(Bl#nxwKw+2K%wgaS7ws?QkxeJsI{N zIHd}=zu2Jl?|aHLJjJ9{T;uHF?w+lwV7$*1?Nt9|%f&pnyqg|>i1QuudmV*eIa+}+ zGVeU1IZ`1WDS`c?_%4#sqwD9!Msv-{EBp+GQ%A9ZTetizO;)M8xv?4U3GEwh4PEqG z@%khlDJ%TCHCCyyd-CWl$+2vg?u571^#vU7cv^}|As&RAm#{8+6L5k2+~aGDGSZeN zC;KbszTRQ;qQa%P5>fTA(hv{VcWN&iUPNyVwA;L!v<$YnEdNDS0-P|ls9YV1MdaT&G|{}`+MPvnEvZWG|~2wSElV>Z{Dbe<=HM(n5^{)$FUF+sGHVjY}n6&AJ;K_GH38-0kmi} z^4>N&f#sVBnQXbKzG(!LsyTQvz&5Nd&VbJ{ydLl_ccW{3D86I2)MkZ${5d0KNd@~m z6y3zt4GnijJWc5G|KS1{Shq#rx-7o{AY+0_M71yN#1}_bZpr*>_YkW>I3FKo%64t6-~PTZ^$vI|ni!j5L+piKMBH zAcu~B}TDIFEtOQUWI*v5|&VED^POwPBh;+?sd{}b2xBJr)Le#3bcD5(bkhEx1UI{ z=sR;jSBqMH zNaEVrkSdYbl|0aN(RokW#JywH!S7-{HaB{_y(3kkLG3a#rt-sXEun_!zF{kvRxp(Q zB}6F!d5-E_E}rkxF!m&%XChzszVHw$3G#X;-u%kr^rwf4@H2*!e*Z-(_l~PrD2J;l zcxOlYvZLPmHU|WU9L%SfR|Ed5nX@V zkqiH5izy=kfSO-t_E|cW+AkN>{dCSh05@mzZ6N{R8HMu{w21*saF5dBDPlg&UbsH$y14P!-cvl`| z^1E`)`?~N;16;L&-;>b>-MASzdQ+(Hy3_~w`<|(f<^XPHiVuy2|C(wdc*5;4lPWY^ zsxuzS$(nR!Ysy}4%{bdsTtc+!<#*-n)+gg!~3DSq?3}gw>tRaB*-` z;8MW<8%Ca?4Rhoq2@O+$M`oDnG6k0ylaQSN$XcqQ>*yvS7>~i6W(cvuMBAs`l1qMt z1%N*@Dq~QCK$TcymiWJ}5BtD*YQILTaGkI)t!t)24W1+FmI`a(#+f=5Qb~w09twgb z%;*v#i$1}fy$`mu2O4f5A54^N07!`5Ej(FT69I`4Y;!n+aiEN#I;n){(gw=fV9jU~ zVg&fIZSL~ymjBq2O7lzS9gNV7v=xW5(39@(ArP{3rNA5_?@o&D;|4lZwFohO)P z)kCtuG%omG8AbxkZZPKv05{okiQJO2{Mgl+{0r?TXcm|u`u%&w(q}DEy zX^PW9INV_>L_KBR@_)tpKflMEUHtn$(VX6QbcyU<==W;vQu4Uk7pJb=UY zbl$b`LpdrR4Rno#!T_*MxC?cS0|~ljWst+3D+@OpYKy`M9 z)`vMNHNS(^`fU+lk@ePEtlIx3r8ww5B?2X$Ss%sQa#;pW1UM_YGg~N=Tjy$SF{Fg(0Bag=F9*VC zc+PmoFItxfMl*H0n|SIA%mh^N*1rNKJe1X+fsF)0i$)r6Mv1ndNG)P`OG78;ls zQ?Oo76BoGE(1?_REJ9;zEl(jVwlaKcSlFK2JsDSKIqjZTGqiZjTz9`yGL5~i9=gVj+-e+Mdt7p<4|cd8=Z3%w zY>PLSLy$ml74f+d$jYm<@{@{t;EQHM>p4bqVwU#1!Aj^J1M_)24)zML#~BkzX|@S& z0NKwcvNtjC%)S}jmq;4pTmTs7n}(xUhv4i#!&|;I3cns__RU{^DRWcj+LgP^*K~s4 z+001=7j}!n3LXsJsft7dT8&~aE{8oy*H5>8!?*gLU7juRf!%ORaWJ**dtMc*^b>E+ zbDm5rrXx`f6dX#TLlL%)=0lPD9i~a6&M>Z)OF1pa1^YIX$CKh)k04BK{^>55Anv}>U%*kD(Sp!Icn|_P`CCzL8JL<#d|uT;@dRZvEc!F;sF0Ed$^HF?leMXqw`Y=)`{Z zl0}Kfh2FE#W-Qe1WqgG968;2@^fwM{kDMc+sf)&^Lni~J9xYn*$2V73ukW1fbHEQ- zbgG4m7qsE57|jaysk*wgO{(i(V4G7jQ_dcmV@$`l#+kBLvz$j)Hks^a6FFm{>)^^F zneO`Or+p4JPb8ezboi@XUwAZGW2F|TKY^@8e(D!~K#dc#`kT~_tvJ<=^O(Jy@2Brm z<0x9g{>`aG^*TQ#o_+_-LE_ zx5?X3ntp9(dl0H$S3&FG9y37uLZ12Y?UD98iey-fBlD$=Ab_dvNE%%IM3YP=6d`d%uSRcXAq!F&fAy`kSVCIovCz2Po0C>-uCn$|I;5IV<5q z_Nb2v>-*A)snt~_1JYbi58(ft+D~v-J~-9bvVMxs(@XuM{9Aon2Ft~y7^23=D3);mugr<ll(rj|+5q(|GR9(+9Hy3Y_-2iceV%@ELJIz$x%B~mepV8gj zXR-MfB;7bXJ1O+w${d)I5n8ko&vCg(7;ig9(BGqAJ$p39U7Xns*f}WLwU>I{^7?!gr zYrY=U&-oiF&MC?2=0M%!+j-7&%C;K7HFUbjfk8ODFy%Z!ols#EZWTE;6mj>4L;;jWeA(z2@KT?j z&DW5_S2q!EdLz&!GiXy?Eu6%@Z zg2VXfEolYW&$!(@CpRvZ6AUBL5~HnDE}3UVMc&oBg%51wUNYNsJxteo#yZXO&ghAQ zrl;NFm4H6CyS08rwDFv!*ZCb$p6(JpQ=a@^#cDd3QggjH-Jjim1;k)Z9qxVswmkNCRFfxKOJg{(UBGVqpq2<)UXF#_3c~nDl=(m zX)P1f&8f*r2l|0tbl}We5U)2kHeN7ZfP(%bAQvtkx@|RUmTPbQf&15pXxmu_)~mu> zpjS#Mw6w7OB4PRtbSx29+?s}=!FAY;9-d^OJ;rB7&XUH#!J(o>&|?=14zup3%k531 z(2uHD{I?aPV6a@|)43ZkY2rzJlrBZt%Jh(b&K#pTaJ_ZZTv>0&O5ilLtC@N-{rICA zqHFvq*%4t%rpJ@g(=FjH1AOr{RlN&;FOdrGkV?rIp z=6I8VrFS|R;%c)%dsp=S%Z~!JEWir@l*`(XPJv1Q3dZLhDmJIXWxeYFjfxK|5u)gA zjm{^nu&3Q&B*7V?{@udg$FIM(0wMNH3Bz>aO0~+OmkC^^BkAe7fZ3xd7^%JKd@&ea zP}aw-!ix9?$ZpZ}pjCG;No{kBm;lk5>ku(42SK>5iqBcJbxtkl%7!;JX1hatU*`r| zUB`48O@qoPe8Riq_?BfLZu?0YiUZ;ze9*9(3B0e3;IXUMpQ6pbib((WPw!^Rhyx1Q zLAtL2L>To1(T^op&*Z}4Mu&}vv7fm$5Q<>9h>73zoJ6I{Hk0-@&B*)lmP&I=>rwXk zGs>Y2;f0S|sz(nM-S}BoJA_A-BDbI2${0vf!Z#ZVnm1B=qR-^|JB;}=Ulh-yVJQSq zPcNeCm6MaREMlXrO#)PKd{Iu^0)|jp+!AzDRX>B`?^bV$*^+CFgvBTWaYDM!njez^ zDVKMLNFj`S6=dvd67vpo7Hl<_+@PjzO|W%~lgX~z)XbWTLB|DX$_V=h4ZCe}JQ7z) zH-rKmA*{Dy7(jZ2fZa%H;vr#()oXNp6I9;I(%XXKdiv-7po**P*3a*OLU3=|r!=Tg z*+r`Tqz0RDx(bT1RA+vNQC>;O0R>W4U1xNL3_=R#{~p2r@y_-u@4^t-5EgH;3>WK!O*d2lI&EiWSdlbnSn^sdkuH_xT|H@#SH(B^`0uQUMMy4^|5r`RCR~3q5AHCY&4gNeMSnn>z>`PGh(cmr+<4rdfR6R)x98oK z=i$$W0|&FTEeyVWR$|9_Yip9%(|3Rs(B}yer`?JktjE@`7S#40MW@{$gBHUB)l_*2 z>JE4vT@l*S_2Riff2m%ZPpeWsQt92_59KrsGP@Q-hfS~*G_Q{Nb=O1wa&sP1`yRh~ z?evPS!ptLX%XR)_zOfCAXMt$vEHGuy&^K65>>6AbN6ULi-U@d-*t&O2%z9x}bKB!q z^Q1RX7_w!eIr@Es=P!c@XdY$dUhOD7rc@dUd>w}4ZaLiKdj3EjGl|op9f&sh`d@~m zA6AvPGX+F}UM?b)hZ2|>NZp_b-w%{6m&&N3FkF0LaYF#Ke!+y1-cz7%_5lbld$J_b z(tW!?OAfwRK){P(P!B31=?%PueITUm3efB*4<@it=5Rb9ahdk0go#bx;kR6LrMp8! zv6;$l8H#HWL5sJPD!S3L68A}ILO}prh{t-LWuTqU+bZ@@&6iL@8;*MvPc^a)LxHyf@EoVA~~YcUjGTbDM6| z0a9!hBc|&{MyGOX*A0_*q_GtAWamhV5NYKW>T-cTzk_?`f++j-Qz<23?_bl1|0(QO zmRa@+k&S%+`Fjx!GC^BL)vKoxA)Xxl@D}#NvpLJP6@N1HWMTphA1FG1Z4>HA&8Hbe z!DZbVh<2%Xzz?jr6;KQOB$>&^#-?2(Wzlx;F=XQiUIBg3cp{(Mix#3<2H1Suw)mFX z0I*BL%8O*IpA@4HWOuzqA5!vuuG!I}1ZBeyA+;+H(4OJ&Q9YZ>r9_4@6QIN2b38<1r0_|7WZ13p9`ZPL8?|I zwbD<70qu^}h?2La%5vN;5L)}6^QhS_)@WW5D!1rkNgm6bT~MjIo?pw4uP;wf5VbPOp$RSibL)T&b0QqnDm22roM6bxIm) z<&FQ+{lInEJQL&4c>&(+ zES9c^>?h!QW@kgKcO5fI45^RykAxp6;w3xGnr$<)KiD(4Hc552+e*nP|x4@isB7nY0zoyK%|(Msa~5Z;aX3TN47IyJk! z`nh=gaxri5^VKA^k;w;rw>v8>{!LRY{wvdvL839C7&-qu9Q`Pm1@NzW!{ehN=Z2J5YtCbpPs0yqY=`@XC{ibY_tj6`;E z56(0TLWh#M03^C{pq6kNqhTi)B{K5z`Ni&_@9f>Zq6MiC{i@K7(=* z5(Q^FLXqdN>t3G36NvOjM}vbmZ59&1X*XauP^Q5=kE7GjW`CFbzADjkja1i6u)_&D zMj_!Yymguj7NdJ6hI-jaBRKlJ1KuT2hAUIKXPCkVuooo4FimJSq01L8zb!hw^(gcBe!lr;JPdRNnU$KcDmeTA5h276(AwP z^E6OuRH?1yx8C(unx|kb?BO;3^-mBBqVnE!%6$609<6{ro67+xdpMqkNnsVovq#Vv z9}-egbV$>r;KXE$q7YK;jXaGLKlsZU|GT{63g0`PergrtK)_qAU^1hws4Ch@&VtFQ z1j2RKxIx&c)f$}5q57&xAh$yB$!=wW@!^v72)Z9S1F)9a zEM_b93Z6j9M5;k|i-@x`PwmG2;U7~|D3RE;w{NVitq)7n!f-q~gK(HmAnZx3ljRu1&2Ih?Z6D#M`2B_{ zyU;iK$Q40e`%hhS)&7b#1j!?+p*Zkts~OM$8GRm+ccFAzOI8j2E$ zu&y|2+i&-Jxvf(QlP1~fHD;u@=ZW4oOu^P%N+b*k!)3gu?rq6o_W%zf8oGo!H&}{D z8U!ic<*aE+_)bx8X<&;!`r{y)`*r` zJ1~TZ`Q6a9GiwCMTbbBv7sNcJV!mJzoT<$&!Bh_J$UE*@e3xmIeYs|O()A2IP#Ky>F5QY{&U z$+r!|_Ea_{I`}LFye4Nd=>r5-B=G2CFaRgyQ)>}%tw0ZOAtawvT8o}sj7(P}<%7nk zYKP@_r0~5B*c3#z0<8=tf~Ry`nF8dk$K|-P`Ckjy3j9Ol0FTYQ-R070dv0l8nJ6j` zRX3oV8O!}}a_V82o>cTMph*c02ChqFM!*hH>f5PZ*qg{i6f~au1iy{-4(G*88$IQ0 zc@$5n6z?96l#cQ!bLWQK_V8Z4k=hqJQj7Vqv5755ClIfYPdg_E1KX>l^h=p(Bh)v`%XrjSPx$$)K0uyou zuo_=j+;?Q){9|l@GKrN}yisf`$j8TLnLxnhzT`f9FU3`+dE1tOP+*wBjTiQf5+Hv}1PLD7=;-9=%VNd7Zx@t_Vw7wCirl0+jWNW{4R6HbMo0u+Wp^u7~PF->c6+d#d4H|~Se~?=( zG1cwL{H9B#HEz!9RoZ<{w>cj5##JM!4EGz((;9e?fOZe@sDlIT-u-q8&{*}#4Hc*= zpi(G@5OEdD=#yY7XEPG9(h*=%K~QMnXZ=rI^?f?EBSp4&>FIFQcob~qMG zy>hFLUMAo zoFW^bervrj7fFjIjr;5#{`m7uj}+S=E9jHHoHObzt#TC80-0i}xlhdDpKi-eAbJb& zUR6_d5Ai)w-qS}F$f&{b+}3;45e|`bLBS0!%wc3p6<_#MwSf~34GDo}#C-htaTQl7 z_3xs*zW`x0C&U>-jRZwj;R`OdzG7p2GZoqW zBtL{ZB+^~zShp3^f4xp$|5S4-bwJrp!xV)IzlByoD!9GGrl}XmdY#`m?>wB%{p#gQ zyL{{3i09hSozMUL4Bv>n(Tvhx);!z-GMHtMf$$~Bdmof)CUJWi8zs!y(Xiv3CMTmU zbGV%!mgjv;_RN(yr~)u?PrlzHy=ds&fH4Ke6H2K)2%~6-icf&zT>h-nSftuQJAxc< z@V%*JI_RtQU>d2N5x?h*JADecPi^x+IMHV3XuL&6?uhe)48EdSy&i#f|E@xfih8jS zr=u?X(TR!AK0Z`GEgO%q^&9eflTkhJZy-iu}NMW34x1oRz-@4iYZI ze3yW3;*GYXxLwm)$pgHBaDX`gpxB<+D}|gaj@XTFr?cMteX1`*&1$Nmj#zBghIVI5=PtIbI3h z|G{JDGuevYin zt$C)Cp!&lK@PeX@(y`CCTbO~g-~z5@Ju!6-CHe`P;rZZn%b9g`GvCp5SXypuWE0uN z=iKZvGr9iT9D`N-uU;rmy;t`UlNEU%FQr~8X>o1vhd_yDDNh-a%uAi7Z1~lhdCQJ@ zAPga6kG)6L?up8We7cNO@4It;`z|9`f(?b>{6+4#iC1A}>Oi6fX5c*A*-2~2oHyN) zBRU?Ghmz9SBtGGFC0|cqoB(7m{B7$`S8q8kgpJ=J&UNg6A{%l{se#a7YPqkUH6eBP z;o4FJu|9z%@L-A6W?gFD?PQ3S*6Oij)DB<|>x5S-d|IflQc(>8o%PG+y4TMLQeI2{ zvjs;tLcC1m;r?cd2uX0k%E1ZiwB!`rt=^xGc^L(QbgjD3i^FNd$dpLj7XF&6UR%xg zAv((-7P|M0^WN#+TKrB)T^;i?abP)w*&gu%UhQQuUc2nWf~GH zo^hSmPASa(oA*KVAFV+B=Hvr6v zL2n{i<+T4C#r@0K{jWD8pvdLy>}<{HIB5i)?9@1DJtbVs-G&WnnRP=Jk0bRynp(7{ zZoZ#rn4-Wx%ACXDMhmf#NBT*d@RLII7xR1P8rbQN`-wk$8bYW?@dM@Q?DBf8hkK86 zc_e5Wn0R%70U|{{r&W+Euy}$+6H2d^n@p$Np;`r=ci$G#Y)4ik2mo*wyJ{^# zaE1?1hE9SGN7-rt%_f{*IN4=4{}GQc2rgIPZE}Fwf{#bJG{qM~kN_axJ>cY_t>#fS zAk5YR9nS=>KB~Tk(WvG#!wuTszq~yp(y2^Xp~TkQ-Rl?~ojzFbJ?pFKL>0vz;XOaN zzbv(WB|n9X{wRocF;F^}E0Niz6VnlgFE^-9_{bU(9LD7p^yQ~I@=M5$oqhP?OPJlL z$RvVYVejC95-vRzd|O>d3(xYXRMyn2!6~%>9THNHKODlh_R=#70_Ok(ERBb+U+>q6 z_X4);`iYKqIC+Of%|e`_fP<2RgajtZ8qjV=Az}CjybHcz$h9BgeArkCc&>6-wG*#r z1L!y)wmI9?4%(Q{Bd})Vzb%v3yy$Vl7hgqc4UqBff5H5| zt3!C0k;Nlhth6q!hodNR(S}(7pLKq1AmLOU_D2|Mxa=~*C+GR8VsgCtDqt>e(*+GJR(tQS)CZe5B zFA36m2r{Y(LI)J#yRMx)t|!tNbFf&Flo$o?hY>nTN*Jjmb!JmB7VwEkh-O@_#vkeh zQXdHS4-JvrQ+^}%PvZqX#^jy3k4UV^j%|4S#%jNm5TvpLP8BX3U$xeK1MgE>bq91< z9c^b>s~;Jy8`q;;zq$7J3a0i+UinGz07n+ZFBNs7aW|R%4l7W7^eK&vYh18I+nx+` zTBy9>E&S`H5WFjGbHF~rIX*d2($q{sj$JOf%gtzbWhYXVVtT=ZqPmKf&oN6c^RJaxpE7O+C+Gey0NuGZ;2tR49`M=J-acnApGYHjVL@wcz8o>@<2ufO7AwoAR7_Uc%`rcil`g=->DZ^?Emt$EKJpEA>_A-h8lJU*wP)FebQR46$%Sxyh%c1 zO+T88c)VjKovV7v@~+X>oH{Ky>kazu!N*_9g6EVgj9c@qw7AaL$+jK*dh5oKOu`?R zkZ0!|nD~V{c{Fjzw(dv|sxPE|X{a|8^jJJEKgAdRQ6X%r@l6oIqkP&J?01BzX!nwJ zH7bBZ@|_Zky^=M2zP3~07RD+mJeaxup`4uDf_Y0?v7T5^n=c9jdzZ&*$%ns(cEEFv z1q&x#ds{fGysG9@B_9{?Cydt(8k?WsxAH9Ce{wTik8-4S`LVLH#=)z=!t7r7bq$la zyE%3`D4kt;J|{9TkQ}E#$O~r z|6s{~Q6D-C;mtQ}@bGKi#m#y6Vytqowp(D^)Xxd7kCpZ4!)@OKVacH1Iw$wy-WKny zORcD>!>Va7r=V&xpE@%POzS1{4l7O8AM(EZ)t#TwG$Wp^zDrCuU;Vt9^2-$3GKCr_ zoeSl4d1blVo@bUZ+|;{vl^v|lC}s1G+_ei zX0DxtzL89R$;fEG)8|mvAL7$daV5^$6~WDl-E(r2AZ97M*Z*eo{m&hl-h!<+5%{7( z=U`Q8Wk7p;%q#w^u&X$S{?qrR(EHd5J)MYPl_pPMOQIIYqvJ|Y1gh~07;Vxhk=xPL zJTjYIA!c`Iun>NS6dR5x-ou?6B;&QZ=2a+?f#|{jpT0n>2o7O04c!dQEVY(LTpF;tN0b94VR_zl}k~!^;Y^UE}S7fvI7_8pE zLITXkIEt)4#G`r*h&fBQ1o#r&?ptZ%RODfV6p-R}Emqa$(C9p}|&4*RC_zAYA-K}AnCF6O^gSl?|s_YS*x zG6bk{D-#T(`=i#_cE#uRWwh6dxf`!Pl!&6`Ma}bgzWbst+d!g1u73YgWv9~fL zsdTQ`d_-q@S#xJ=$44}VMvIEy#v%b!NKEh0{H!rn^ovs9+1H)wH7h8NVX*@`rtADW z5=-%hJd~|u8X5DVVC6DA(|NQBZq1lmTv{G%+NNIdj)axn!EKQydI~Uh>6l>byba8D z=>B2V`>M+W5thiXowGoCx9R}ZrTqQFv;0K%SqFz|>h`7P?Wg|QypZ0U~p3cA^ znh5~tJ%QjO7|IzDMOf?F&3O$tXjFkgb5@j)&7HpM$B6$Q7@v3%l}bNhke}Sr2gI6oR3F85?hF606`omI;3O$Qu#l5h#oHQ-105i) zy7qG($)sDajRUX^*_v|Hi?VZ-opm*4D{$ zBC>#m@QwbCBBqb3l$Hpy%>z8ZXeg-Y4(J#rh(B1wlj*<5*9+siMi;WW)$P%M@=_+D zcLRwOArkPT0CE#ld&GaX*nl@sh8&5IAd(CDM3U@F*=5J!oLu;728<=Ex++6=SIj@? z3!gUCXEbD`S7Faw6kB2{bRTUbe~4JCUhAc^md6d7iipquBv(KjG8VwE z89I%gY+l;U-a`ET4FGs|6u?;DitE7O9FG6=`W7Or*yI&d9x2#h_golns1R&-4cVpxu@NVo+EJ zw;t83grtS$;XwSZsX5eJe9e}=@+j#LtFjFm=CQ7F=$t?6?)~uYB50pM ztZl7RXO*Lm?e|(_0{-Eu=y+L%`gZ{BO9ReJ+{aJvA~yt$tBxL+qkr6Tzcdk%MkCwx z9K`ahXx0_=Rb8%kQxA;s5S@Q+%YB^13w%>{z5&jIJW@iGM=Kwjf#x6{`COsVjG(Ylo-hE zs-fetUF=l;^S$kxBO=X2wyU$f7BAiK=X>stnl*-@L&S;jirGd=Q}n#OvZkI%n122g zLKJaj4+)Ok0_KR)Yb@9+YJ35Yin5_ZR1FNkz9S-NFoA0#@q=T;JOEA;lfvP`%abii zj`1(QcBq+jn~C8^s%>h#Zzm=ufHc($+H0UMlLa7QQ9rac8o{GSZlE+3XRi{Rv_vZ|Vf3@_corUk#srJS~vFOS%AS^XU9M@gea`Q%pE( zHlPCS+yG3K!>ipymYqbFjoyBK#i<}wHC}G31lkIPx-Fz|Z7-nclue6k-AAwT&nDo? zuhp+U#Yt~YnP08!*=doS`*^QlaV$D+_<;w>3m#wA>U10w4APqL7mBti4~^FE5jv;H zzc|e)f{N#>W4wd_*D&B+-hvrJipi@35)vo?mPBS|+Ca78EX*#w&_wJ+cNCw2a&&m^&_1fk&$t?+kC>+GJ_!g<4qaZ{eUIEYtVWXNG>*-jg= zYP=Q)BEmrX=^Y-FcJI3V)*Ut9Mv#c_$#CsK@$o7+l8=H5CG>PHl;7p!`n*}{F!Q12{maabNaSr+?q zz*ld-$IHWm**Rm9Ml#jr9rdOe~0wLxMEXh!!L8aNikfF{Bhr!3s_ns_;OG`%B1!-9-l|E|E8z zS}rGrM9{aluP6ZGU;k5st+gr?PupO!P{TTf4v$$Y0D$c!9c=BGZtIj}03B&N0m5k9 zyLnlMaDL+zCZS9o8+C0L+`q?R{`_^D2+=MFobP>DQf($PCy7)GiGG98meCb`mWA`N zo&y0tLvT(UmC((pGv8phs5L|vfl_FNlqzi3&CGI%Z5Onq>Gfy}Uy3#r$!&l|6!qtz z`1JHt8xvkqmcwyBO9>!&p29LRGPyQDP^R|oYLCrsdqjTg(oY^IUfV$f-vm`iSv>yr zf3#*sXpn24bpMDR?tU8$?Ofi!5i~Q@ReK{Dq@ch}@_1e;BDSF6K&S}L2*$Z#1F)Mdfe-7Sx4HnMgAFy00tKP-!?Ynml zfxPi1WK^5t&C9 z$Ca10ZZ~vDiy7_2bjAN4WA7c*RM)+MDk`Wbh$1Z%r3#2h3%yB`-Yg&;lpd<|CL$nR zIv9$8ASzWz=tYpwLlH?xDAGF!q1U_fe&6rT+?hMC-;95#NzU14@3Yrl>sf0(Pqy!E z6m8PljWGLEt=ib|tp?3i&G=#&hCyctd^}gz zhiXBcWF)|F|D@3GU~AEY@z#?fgJ1)rfTI-~Sp|S8((0C0PhFmwo%IlR=K5AqQ8$yC zoNS0R{d*WDcYf#gS&2tIbW${C8NTxUOCUZ~1_(N*#VZbRy({-a_NT0CZK8Z`jC!(I zWw5m|e%SK=u;lY$WnHe<0hsV054WJInuR02U!BPVzrdl{z)CECutu-cvJ5*15+K4N z;&H_~K%esD4UwrC2D>K}n@SFx^YR;0*CB5TM@PAx0q3_#uI0;GIcFjm`nNv^Nw3y*zK4;jy}2x*cQ?&NqVZ#~ z^g(6N%Fiy7N@@^7lcrX~q#Kcc-E^7uj+r3xH+xy4InGK3^ za?XO{e$f2QsuUre)~IDf ze~Edwn20YvqZG~YSkBb(TWVT!e|fu!v%0;D+n zWn^ttW;84-Bb|yYy4=jg=uO5Vx^6e30O|W-?zF;-)8)zIr;VnMZi>js3s4gZKggXC z(E5E5eVL)R2z5JRjNV^4(H4%0@KJsCGos)ZJ1XrZys|<$hO^+;`RFO?oAVKG@32;A zv}v3bsV8JEJs!!Bs9G96|2Xw@&a0*hE#tQr}!=kr`%TjXy6k!^2M+B%kZ&+39OR*`_8O~uGFSl?yBC2D#gvy4|&>kZ{^V9`pqyP z4CV=Bsj#4FX|Q?nc8!Qi$3Bq6sUUW6ZxZs}NydBxmT&+}`aY=#OW@w5ri6vCUh%iT zzVF}*xOZ|YUWI$%Y;D|bA8i%tyduABMzYR_Q4P@0gs^c1N9fK(==VSy&5@J)wF_7F zrI#}JTmtW84oS_EAt}F$TeS7+J`WGI{sp;vpia0Wp=>vk@khtRFTiF<+?JXG*H8^b zM;z?qGnu$sn5jNn_MSWKwtJA4*T>qwcHV6;J-50Vd#`Tgn>TM9v515|Pv_0c-7zn- zIv}tFk5>CWe48kd?Kq8!v2exvtvA4$j(7B*M`ji-ko`Tv#5SCl_@WRB-rn`a&@IFk$bpWKEalUw2vLwK7}r{ z4bzJ`6-BZ>*pm5Pw7%6*ZuJPsS2^b6xL&?la)+etTaU-}oYxCCm$Rc8wQ>VJQx%k~ z4Z7?cNP5$JU}G;2hr``}fF1??x>Y281@ujY!p7^x5#Q_U>%}75h)TnNX4X70o+B$@ z#}F>!@Fb*=TCrtefNk@d{@>H?AZ4Xg*Vy-{dGrLu9whtFyZ2=iqQgq?RAPAB1t0KE73Hd-^sL@sS4aKw5+aAiZ7?~7x) z4XRZ6A)sEsp91fG&G5CLWl6A@A>}@!RHm?EUeKJh@kC zS5{-x9ktpdp(XA2dAqttR6OhYTkLr_%eEVAzrGV6Xn$W2JmeUcE2Btp6aO>~7FcmF zS82o|UcYV8TAD(zo7br}HYH2`(d7)8FT*dMp2G*+kx=q1diexS)d9$8`aj4+tx#85 zEl9X7BInJ&#tse+iX|u-8m0pkB|e7_pco?KxVz~ns@SA%7|3!L0oi%bXh;VUcYB_w z%lFMmk?Vi4T$SR%u`@d5F5NtJ9vdrn1eIzuSzOHF4v$0qSc5w>$>z^9Qoc{L|H>L3 zS=bZ%%i3s8X@Hgat9!v6+1{f0c-_kAtlrOjb?y~0YLf_ViO|IU!+Y%S2x#iEyLaza zo*W;xmkxhp60(jq0WH!<&?AENA?~PyomKebM^VGb;=eQs{3k{)X8TQX(+uyYY&@{4 zo>iv#IJx+1<%RsOx#6w+rDo<;cLPUBX?M$yyLas6`9KQbcChWa^m_x-6ZcGdU1V&X zzQp7jJ}Qnuo)q54A2?B8nxd~5RJ9J!5?Bs!-0Js`b9c~?ZK~1buBTD@g>=xl z9-MORPBiPv?x7>K?$o&oks$jKPZqn?VZ~S(JPjOXW;*|{e9ofcTWfEZb{vvKy!meF zo#IEWR(#-H6Z!AEcI!h2b={e7@Bcjy^`B1{(#}5!j~u(1lUs{KjgOXfIGG$(OE>Lg z#$HluSYkY1s~DtiR@*f4r@J@Iga)=>u06C4eTn{D9LdNd6Aj8w(2o0>)`TW&ES+1Q7)bvck$yFQ1~o=PR( zyK=jjS3+r-{!3WV#T8vNwNaH50`$>L5XF^2NfI=$q^PKJX^CcKKC#*8(WB=;=oGmP zEPi|*%m4EJNl2V!Q<>%pYw-|Bo%VKF&O_sBLMp8t5q_eX{G*VAiC$=HahPwi(U?55}Z z;3r^3-6VzFI_@mw&TAP4|5RN(@A74VK}nqZj_5KJRfHLc2izVW@jSz_zdX@bMUvwy zlq0-HL`svmyeJ%NQ+rv0hYmU60uGqK81@B(R)l)?+ zih*GW{%NHtDL&9KomSjd(I}`tyh2;goo8)q z*2(K4CQ1cD_71tL3Q+iCXEm?@BS>&U1pISCICGJR1HL1c(+w8SKIvU-t;fi!{4W}R za&mHfF2ny+6;cMj^oHW*7Le9+i+&`5Ja6Ip;RrCC zE3L3)N8QR*6{wy5<9z9Fn=c?^0q+6=hCV-erjwy5048eWMhEZbC_P=_yO9RvO@vD136zAAT%E0a4AXtLt3ijJ14 zGjW&oR=Z9Ysi)e;>)49~FD==_WrG6iMY@SP&$RKfYHDglpatQHsj1TqF0IPj3SpJ+ z#dS4sLT;+^^1)#Hh<3h_0fAJW=0O4suIafHqz!`L96r-}G2}V?{O^yCjEx-uCje3= z-~ihkd=7TBx4{{n>lm>l^{?hK7%kV##B<{F;}W#6Fm4R7#qDQjGG?~s)y@Cyl5{w} zolFy{eMLg}SA2^|ipMHVrf3_DN-TBLvprh80peE$Lx33q79!nva25VcW;}M~FkZRu zalysPG&$2PvT3nL)D(itz<=)R1n${H&y&;JxXUy7cW{a?JRf`Ul}35X&yZ`2y?E5K znT zeNA0OU`#!CMr`n|?MxU}h^gnuiyeThGoT@>$qVb4#vKt!AYB>VXSbLW&iqYsz5eHu z5@S0TTiDV-Uik40mu$Iio-)E)qr|LfoH^*o6}ayy4FEwyTC|4w8vTCtI^^PXV`1T) zEQQu^%DDOFt;L_P?0}uluHcUdiN~gYF?%@p8H$^EwUm{FFcz3fs&+IJ>z87buh*(m zLoVh|Lf~-KeQ)oK9EFgmL+pH*CZa9bVI?cS&)}*Nt8l!1@i2|!e*a0MD3X{Xi zNgpUq^vpi*pD+6bdYA2qO}8t6*#mi#_X*tqrMLOSqp2fMe%_`fwV_z|r-j^#EZvdm znat52g}UXEI>*JqeAxA?tomm3M#qP{RiNoBUqb)G=_lD^yA{Q69uA&ah3UA>X)&@) zAT$>iat=+=t0{&scJCG0A-22^$U~h*vFvP&_dqJm3WSl_#{}8aicD7&eR-miJAU|| z`o;ghJk)=!VE@3y-#WUcbV}%0)5GMLx5kXQ^Svj{V%_LDr9N_0G6jMV#surm<&(`a z783oM;J91fXz%`HeukTue7Pp8#RMGNN$^Vn`e-k~EA#{Nf!^;Z^dw=^f=s)mrpJ$0(t7qhdZ&-pLr~N z-wl~&Ieduih_{TUkG=WPV z@@JW_FU}JQ+VKD=u>`IbdcpCXrVS4d&r}D+@^EoQ96;ouzFP~NRaLhHRUOz8p8pg@ zgO*Em%2vBwQJ$~BAg*A@T1I|xMybzN zO&NakYAGIV)&8sk_oZVbmp#%_ms$MrpLT?-r+>~A*uz`%8Qk7?vNgaf zPz4fhu5KS6zFs^ddkT0+90%ibwXK|k z*!JB9=xWf9Vj}ydWB{l%9NWVjm$fA0ilsTVGHgc_7yfJljliOREF2M%OeXVS_Wm6V z1&IMHbB{=_S+i6x{duxfkVzc?io#Z(vIA>x($M(o`~Exk$hBbU_j0GXf|BkFRLGBR zh_S}KOL)^8(n(sX0ktVO-GFxd*#_nOnWc9ZS4c^G1_)U#@*brcz3WSb)Z=kXym^K6 z+V8j1sg!=wt*dO`BjMvDo)C&T4+~TiISo}+XKv;XO$DL^iNKKW34$_PS&QqyL}phN*2iGi0)R!405s zFr07K+6#ZPHAOD%E}Kn;8LeYgq>^vT$k%BB}{M5c27T~1*aGSMDOc*;RywF z+-83{3p{Cq?+v#pd$2q=qxVUGeJ%M$mLh9I3^s={8$+d6DikQH-1GS4yJ|frxV2^9 z%7t^5ea+Joi_Xl|??`VcUuc*;?*`h7JKlv^#8$S+b(1~xOJ#p{)(G}nC-_DiAbd_2 zi#$7U(aoV;}b_YvmTul0{J1U*ucY)f!P}{167|H-yC+5%s0(zk!q9PQ$QG1 zae%vkS0Yqsz%T03KbChgk@DRGEW`!KqOecziGd*q2s^jhr>dET;fI|1hTP-3m1o4H1Ts8ePeD-2(fE zOt0$p?Jm^9Kwd@c^~spsrC+?UT?3FS4LH$JX(!=@*(A3a(Tg!iQjamB8@8=WH|yOyEoLb6y$Y&WYE9rw60kC7RQSHIa_s`!h=oskHxzq6)TY73#v)n&vw zBr)kAt76tKw(}s%ETn)A1Bc=KW7ny!vmcL>kvOwim&x>%b*Lhb)yl+Q?*ICw&rZ%MS(a`ghA zCSsxC0@3b}kP_WRXV7gZDcwKIKkW>_aIps$bjg$4LgY?Qj)f$6uHCkHDkd-rJaMG` zuP>y!++h?<_MftRzkq|q(*R49%3a!lxUem$fFRNM*0VU-6K`G~o=t`Ab^gXZ%P&8b zk1rkki(~iye$+31>17g_%D4q;xGB`=u#9D(?xHYUP75%LKHUHuN(De!!ABCdtE;PP zK@^2s-R$PC(ga#Rkd(_WrAX}X`riD9+sl|WG_{!S(VAD2dQA17^ge&i*mvJ}86}L} z-6tjhHP6?gB1auZY?%erZKfkySC)bLBE>a6c0R$jmQZqi@e4}Z|Gs1YgNl5ppjxoi z<<7{?)fc{ZS$U3^(tNbQsgXf1Xx1wLA5eJ2u};a*T!Qi3E# z6(|ME3?3}%)$V0PUt2WNJ9drNEaK}L4Av*H6W5SMLzsD8{|!5?js4Pw34xz0yV zo>+s(*Gb4G{rT}x{flmz!}ZgX^`Q<5uFRJSG0f7nt#KDv9YE=t@VlzhlfzHSskSbb zU1xKjB_$>OSZS?kpXX3d!KMjVNl2wq8%q3bUowR?7kp8JH_U0)`E~x>K^NpdF|25< z_3W(5;h6PYY7SZ5k`GtZx+yKG5%epbk+WYH7$3JdtpOV#y2Xl|HqQ7l#Bylf%#f+x>JQ8yuj08T$~B zYeD4uELV`vyD1zW@v|>iDQfD#)%$nb4!z>&!bpV;Tr9H4v_axmdaj7B^lusOKjv2V zIGIcYm0D~`LWz~&{|>&Lq@IbT-sKM(4n+PABBo?u>f1 zR%%!xY{{R;h03V_@YwR^KY`;vd;c{|8mndQ^%3cb#xgNT=))?f&h+NymYVByPbAtAkI}^?iJN7z0=rHNGEdM7 zc{JeA;x_yv;llf~&A|TJ076;2Yd*pHvZwof5PWnciaywP+dS{g#bcH5v6w_YVt#eWE4eTA3 zVYj(#le=4V@gG-dP+d(;Q2B00q#C(414#TWotvR~^2svh+TM0)5R-FxJk9KHzy=0o zW&0@I&gr)|H3e)-JE+q$xOsSa8|wZRU!0|~Ka{ZT=xpH=`uXTvqTxKO9dSIymKwQ4Jx&J^vLQP)y zO#!oMRU^l*KcI2A-N+GC59Xh}!Yb^){nZSy6MbFKd0YxE?rv@WC>k*AwYn_Wp~V)) z8|rS-(zd^Nb^{U2r!t4mbl`nbR0e9o`T{{|4GzHHf;*weC#9yDwX3A@+|O>zUI;G` zCKc1KRJJ-7vi!Gl zvB1OC6r{9rscFMXk5Hc@l1)WdH=fD8N5B&t#V85}MGy14$tfueu{1N&cgn4M8I0;Y zi(wPv)m7Z{fQg%}JOo9AFIvB|_m&5XzgAFt?|u$_typzSK)=B*z)sVM=WpfyewTxp zFK`Th{opt3CaQ>kedOB42pKLOJ?S&$GU|KnWSIIZg7sazoK2M4$Y^?C1d`R+eqM=zIfAyLb~g6?M!}VffegJ>0mTXa!c|*c{;xo zVkrfy`l>{6B9%9QG*FgU&LEM;bp&KM=$#!Z00Ay(000dVi68*} z#32jRVzB49u5+Jab{>j_3Fnte;~r=J#ZP=kem-)u7B|$$Qa*j4`Ry=O+5uts_Dclv zIMC*&AV`usLi7ePvE12dO5B;OB=i?w4i{42QvoIaZ^kQbfli3Kw-%Gew9k-*0Z#5w zP=SDHwtE#$07_O7z)9nao#{7ic=0uc$ORlr5$`xnM27)9fUx(Acg(!v@|sS}#r&w{ ztQB~Tk>vNPo54mLYwny`t(t&l=n#WfQheO+hu>*fE8)>J@pkaok82vTH|W{;sLCz1 zH5B#s2U8oVCGo#qrjcPnx+)JD*>Yp&zxT7f`Tgegn6xv%cLf+--kJ+q{7;}RuG%a#(+cAD&Mop z4sZg*9N69k-^{IHqBm1ialL9W4j$MMP`E|pb-0`W%bV#uN$4=?xk_ok6}ep-p(g}j9B-N2RS-H9VtS30Ak!=` z=f-{OhP4}7VzD79fl&VAiICKWH- zqX02}dlI5aA-PiK%L(#U8B~uuS5ZeUV*pr;WupGf0>k#g80IX5OiNXEY$op}wJ;VR}2Kr*`S-GW>6z$>G zqLnRy4`Z;tKzS+rLFK;GRYDm(u8ezhQtAAi>qzSu4_J|d(@zBoarR*pLnIQokzdCP zioBxPu7e4R!`!Dd;y11?Glf`vU+t|$`0sD}!g>N&=Ed{`RUU?rQN|+ny{{5LOn+0- zz7`4SJ{!l!|HwhyskFdl_2+gz$cIdcyaecJ`I!Gz%Lc14PQVNAR}N(J5EkuT@`8QMu)`)({syj$B|@MD5xS4cQ2FOFYf-AI zFbigk$I23}TBfdno~@|Kn5B%?0f|o%Ih)0f`|cz|+bV@(#HB^qT4fv>%w=7utA!3b zvXo9Dz^$9xc?n@YaxM3;z4Ml7sY58S-3=;zl-gbYZxW9Ic-5;GN$xK z*rXr(JxtkAV5ru@E+!wZqDVY%S!fUI;_@ddfey>^Ip}I8PB>6`J=dMW! zU(YnIS)>IaK$9lRUJ`&EMGR!cJw?%A{I7c|8&x;@nij^m#(~{tyjy)z1H} zx3mk^dbT~lRb$BAfO~o@xM~|!`w&?uhX6mY0XY_?dJy-n_D$mP z=Y6lhj`&GV%=RcI{XV5uQFzH!{GNCIy6yCV+=KzYKk@eiD8@GxX0(&qhSxLxc@SDt zmNJNYq^siPrd@#oIxZR7^j(+R<&FKcW;QKSC{dh2R2c-hQO;<3n8puQ<8AT4D(?5n z@|B|jO-uiu+8CNS4#YqZOZOl1;_pu2f%c5w$P$v?H2ml4_S20Nu%ZU`VR>P5(Mk(Q zc2rSLeScU(KTV0y0_S%USYw!=vs9dCe={P^kEL>eGh+E1KSud9;NGCh%S7TUyAnNC zE%O09iPY87fTBq-gomg7G0@>_m7&X5YE`2xHjN?2yHY5!S`#o%pGcE_&FpHKoZflX z<6Ch*7#?JSX=2{JOPmDhnSH4jOk8ox61astGa*CSfw>8)2e3*d@$0ySCNq{6sX38Z zV~CH8cDiq3CvKKPY!gB59gmH=(U*V zz{YQElO}0vbuXtEqjS*yUfwc59!?zmFvmfkL|Z+uGD>q&$6heTU5~Jna%u8UxqJV!Bx-Y z#t4E%wW*Gc?++V0!qLtNgiWq{Du_-;{ivUN)+UnbaLtn-l2p@id?R96aC)?q66|0y z#}MVp9Q?f9UIS%a4*VPYFuh|4bj`2~?vO`0Y80PBGRH)6Syib#Ho>($ZSIf_L+YqP{KX1t`%>NhcChE( z7+Hi!(l#2Lx2iDgKLfYwZmJTbHGxcrtYg>%&88g;{BMz+CJHH0Fo zF2%iCT%9v8I3>lvJCTCMZvKS?YU=%yEC{35#g0c%+PGE{l{1y@7OtdNu9+n6ID!w| z;;eUnhf*@+UYZ_d_AzQSNF3G6LaC$5IBgjTQysPS#rFs}og96?Ol!Dl+t=i1p?{t7 zleBB_jPlQ>m;GGY#+7z)aOeRQ8saonjU5y{pqg`K`)$@yW49%RnQM}pn&bc6>*20T zi3qLTe^Geq2ClK+DplgGpvhQHIpzFT{%uw#GZ$ps9z4GpEq-<_TlIY`izRH zIwk2r)M)x#Tj)dx(DsKpY5ThpHr`i4+~dVnn&@Ru@{_+Y?m|q4ubo;h;fzHw?{y%A zp{AA1wibj%Reyp1r4O>~m^tWGmXf?)FoFkTIZ(0vRJtWah!rJltIv6>Qvn{7Gpnvu z7$bN>P8Y~Mg)?9opb0Gh!!L%7l49xhAMk)N=AFuD`xwkc0Hv57rD5They^o{dXy^n zY4tbLqsm^wPA<-(KtmHOZIZE}jC2x1=m_X=? zf;E7%eHP@4mwbq@;~S>Rx~PvmrpNWnGbi5^azt0M#m4NYR|pm8m32aL@e`SE?$oo zTWh*M69{EY%+V~5asbv054%ihreFdumERg@|LTw@g==x8EfFfhQ)D zPXjGpLl52!DQB{mD1e<9{sWghL`r*o`Uj#0cz2geDI3EM4j5utFsNrgq!n!;s8^*q zC+gp;Cl_S1ql_{1k}{t90{z2IqeHNUv*G#aA=FQu*2WI4*YuzY8i54diI zDtA<-vf2>eDNSTdYj!vgz&nX~39kiHHBPf#2c2Wb9X(St^$w6T!k+3tGFl|)OG{$* z7nbWC+~IB}UN9^lW2rHVfzU%NpRt)CuW^+FI9LNpAew=_Dn{5KGlkD^Gw*}?9BGVl z5dB1Yr7q_X>e*zi;d}zlzut|1o#=@wNJfYZ5e&|ii%6+1Y)YYW%?R|T7A(i6y$Bzc z&mlDnyYHi^*4cdSZ=L98&wsx?gz^|8RG0kpG7D*0K8K?#U0`#S-aM&;HeoE*{4ysQ z7|^gK7g*8v=%CU#Db!boY37z?HvS<}%02~%JIce|WLK(EfHt5$3`2$iZr%Q5#v-IW zAk*TCPZmCABOJ=ozBPc+0WOJaU?Ja7ulM$e`zWE>^bM{W%#e@xT=?z)I2IJH6I$C- z9S9zzXc@1xsA$!dS5Pyf&#edxuQi8&*o1IRdfB4op4Izt8%qI-sY3Eb)nRU{mDyPCY(- zgmsn5P-MSTQI5=-u~9X84?zPf5(@04To)+g#-*Lw5)ONGAPfUEOV;&+G!ADRzD=Cd zr5GDOMOEhfT1_#wF;Gx|O-i%|l$wPHWNwHIv7iSiS-_(AE6Yk-@T0_VbYwYBV3w^I z*VLVp1Z?(=ry4?GQ-t!F~ zdjK2#x*t%A?`<-2G1*!dT-b47k)kWjGO#%cyuyrazX8JK`!7!1Og7$RjyW;z*1Sc6 zu;^eBmjFyqEpkSp)p%>27d*yx@N(|yS}UUbBsXSb=~A6;n8!Jo?VmSJn6Tp3nhtMZ zO#42@_@t>qo(1q}n6fN{^l^h_CPQVNuAPAu3E+ntZKuQfVjJ%dAIm2=EWBKoe;L^e z@17Fq^hP_p_|XjOm~oZsyJc=5 z?$?Cr#r1K|vF_d-Re48Ox~B2n_=l6RY(EOodIRbK>(O1)l&XPti5A3cC%YzgtD>oE z9LE^@QS3yZ8Ai-9_$Ov03G?~x?FXH%pT;V=HgY z1Q`@hP%PF?ULjk!)%g2nd+z&`JLIB44;SZM^0JHC3EzC?t#1`ekqboaWu=Xhj=p=L z7Bd_Af-WutUdaS=8O2}jcIh!=q=c=tHyEpLwg?Vsn`mxxz@oj)-s9UfVB%lr?DLGV zvk;)jRV?$;>9jkEjXpJh#AX?~2@-fU z$ab|1j^c38AZs^dx6&=fjj2Ri{lXc$dnV->6U}M&p&dSGFLNKc@iFQ<#6)F;7idI+MW0v!C&d%tQb!% zyW*kqX+A&ML6xPUu~H_?$HEW9#-{3rEW_yqc;MCDraZ|0%+gtp>Iyx!Ei%SZqRG1v z>~Rt;ZWaN>o#g4lk3Zoh!BZzW*qOSo(jb!y@P`AVQU~98HR1E2M->B^s&Gu|aC^#} zNCAG?QT3D?{v>wV?%27AC1w_k-{@1S`c8bdQNq0Ytzs5a7N1Em)!0tdW=kMvcc_oQ zr|G0Cj-oph7LR!(F1+Wn5x&q=*7%%xJG8d7QKzI_YCY&1x=cEdo4KH@p^OiGsXKo* z-;R7aFSg9s>Uh4s?DY1$e5zL=^#VJGA4`o}W9K#FdkbdA~u zzS3|nJ*(N4`k8g|#V8E@PKZQnASa<-OE%6cfyLSBv=v#ORo#*#A&$AR>T~+Da)8nl zES9MO%eJrC9%Bl)eK!Yzfj6~>aN>urPb{1uB;X2L2`vYAXy-x$wj{=&;0?-1#(bCL zUI{;Cv{5`2d2(+><(c?;(0k}QxyKvsA|bv$uu_`a6NmDW7UD8~vI#z&5<t|)pdxUN0&-w(+aICH#Kjg(2WMR?^V(MS7BA|8-Tj6I#IG}ZZ&fyJ` z^A(g%DEx3VxZC(S{EzppPatLXU*c3@|VLiCIy3PH}o~?U{ z@z3YFp9Qxhlr&fAw`+f{%+)_YEl`LP#5JHP=K-){YaREEC`Vx!l4QL(81t9k-GCrJi>+ki^?O zV7G1}CX?<@z139MCCc{GqrOw&7E3Pv>Pa8iMmpbl89;E+K0e(UXbdEIJ%Lii+K#LH zT)GVolu5CuT)HSSy{hb8*zf*}aA{q;+TG0mc&{&Tr^4GPG6j7>N_YdMZYp(gSNknt zMzgL8uD$WWC7`yjvjm@ly3UV*(dS?W7Fs&S}d_nT};m z`gqR)GAdf>VP7dyyTm4v$yp!oH-15PZb-EM7FlibZdFh8pq8Arh*BxS(@+LUK?mBg zdD$}B8!un3dOzRXl#=2~KVJXPr)6UVnU`a0(v`8#5No>heY<{E0;YbmU6& zAY$@`dIL5_re7O4HOIFpVbQ9XUNiLX?I@>`5iB2s2qoR@Gpfvi%b1_T#BfQW{T2$= z0U|cZhxXR|Nvh6LT7-z+7KV9;T8VBhNLqm_^2KubzK2Rpj_Id0oq0uHJDH>kA-o2t z@E-|OYc)5_R#~!^INF{vZsLD?l4IyAEkygs5jpApm|lriZ;nu$c`)!DCnZ7vUE?Wf2E5VAfc0}D|Mu|+rxm!@s&0^EwkA(ZjUbq|AbWs9nhNS92zSSWDr zc_Vx}o`sB+33+w{G!4y;02s~AbD7$)w5Ww!;P35e=Ni$#9W%8Mt+J~|n~MrpYo>#b zTr&hBG{wWl{4+0MbV?Mq+B^W3uu>j}PpWwsbcAaMceeh@XRMHjGq72pB*eJ3VS(qZ zG)Hp@zM=LL#c-L{5vK>kMyG;6;+xYu1BG&N=!*=?DwoV)`ek<9LKL`A$C36=fZ7It zXQlfDyj}$p$h?(k75DKU4^BJLIac={r2znE$vsWh*2no@o%KiQyoVmV8uPCY!_mb> ztFMGX=e%&>!2xu&6)dm_yqt${TlJEh9;Fqz%NY6EI%l8?euykxW zSMdU-@Ig|WDm(W|iz=6Umil^DxE2pi;>QN^5DzdH-0txkYL_wT#F?}R9L#b6E3}lG zEo0j15w`#18L&gsjc9Xz@BMAyL?3;Wu7VIy^OgYoqk?k+ER&wxmK_-D`lrBLuG=I4 zU^bdf@1N=4wYSZaW+{!av#QU9|6qtDonyuQp2dW_WPW$5oOc%(LhW((t&#?z&h1)N zh6J>Laew>>b)3e?pw8|GnsD_YzOz^ZIEQnrV8k8_YAY9y&}G>V4EVq=V+#3+@>UY% z22c`Y_5p0hJ>WOp-PR2?)A!Ih)>_p`355xOsvRca$~47H%N^cB>GX%!%Li6Ht?Cn0 z)a>&z%nn-)(@~Wi00`sVPUuIaJ(EdE0O}EuZ+qa7dgd_(a0oDS z&tp6`M+>$>{8v!>(K#;QT43@kb<)5G`7%s|KKeH4m9R^X_f>XXXH)&p6zcvW^2GVA`nwnT~NA zvCX@(8vlM!S@!5aP8@^s&X=y_m}j+$trvz3sW5ZbKUIMEfK}3i_)Hpq=V4WVMaJOS+2;mBD_$UT5)(DAE+tk1y$u78#IVrQM2UK4O0*UkRA6JNZXY=aV4#azF!HQvC6&Z}OZayfd!!BXEbwW^9V@_Lf>n`jlkpI|>u~P@*k@ruvQ-i>W1p_-oLB4Vs)_qW#C_C>Gu2pne_MAeg z$q0MBxU)*JDX!^O@lU@bp$j3$pe(tV64Q3eX2AT60A2OS6s?=ohh5bK(wGZ0)pzHv zxN%Z6ozb_KBpH24__Gf$7e+Q(dVaadUqW89luI%g7`z$v6OGK(HDl=?4adG8{1~BpbQWghFwR8KuH$8WxnL%THm+<4{aNV#;+23m_UZ>C z34)bv{C8W-p1Jhst8^~kIew*Xw3}bN><}k|tkkj#8U6o$nGfdhG&K?Wc0EJlTq3$( zr4acsn~(eFAkx!A+%9B~_~pr61-mA;2dXxG%PYsuJ*0z3g0VyNW0kJNvFD;({ZFjU zibk~_MkCyb%}hMJD`UMLx(fA~8tX=1sz&m7%_?%*0#*|SK8^gIsz#StuGWp;OPYnra$LSGki{mMkDMDF-X0hM@})RJ zbLN@3X3F&J`q@`v%(qTKe2$nnUh_hob7j?k?pwIx76FxiJBdPD8J&MX>%*F~_4!kl z{hPNFH(018!;#+Ml2lyYR0*7RWXv6A0o%VkfnW~mwlglbw_vFn&}vM%NOm?}+ngil zJ|}yy{_>3?`$b0GgoyCHbQDMY^}Pq#8lbVjJ}Q$NG==@V^_pz^#$doxMJiSMfxf>L zt8^1vcz)<|(m0#I{?ouS1j`#qnnMiuG?|?gU0r_SWX9n7nyMJ6qv&074B*ERruK)5 zv;xYYkr|cS0TsQapCt5O+QXLo;n%RoL0S`>f(%buLe`1mqJf}DqAi{iTfw=1zuw|= zEt}Y*=W0?(GBfWKJU54|OX+h>KT3C?AH~Ify0J&B>&2LOnbcEi51N7kJ|J>C0*KPe zX<)MPGL!CVhjc+QzLdIUn$YtnX4YqTl|Q)p?~@t`1Ijahk(vQ&8cFO$%|Joo5O6xd+&nms}oa<*>*^*Bzb}(&~&Fy(~Ol+Us zY178Cu{1g&24p#?9&+d)(2jndy4rf(UNa$*xv=G``muPw!p2o)l0|I;FRO6emqoyO za%-H2DC)=Odu!A{7A>({L`wMyROO6k?%Z@Ns^1*EGzt`{U56q-b=rsEY4tc}Y0LIB z?ZC~%4bMx9B9+IwjNF3aQ$)(i=-pGh!zXYvwnL_JrI>X;>R~y>x0MSwGK7G9c&jQ0 zeGN%?F0q#Tvlf-bSZ5z-4MS?ga~EjBtrZFX$Tj^dnSiYkiAhmZ%#ut8ItqCxR_kv$ zoct6sjQzjL!ujFGL=W-IYBH+A5&I{I;UXx3CC|(L|6%Ms;IZuA{_&EG5}9R1c3Gk9 zRd!Yq8Og}ZUYBGgl}+}%%rZjRl1@$5l!pRYxWWXm2rmN)EDbA{sa?LLqIHv3H&2Agv*KIYp zmc}kj)*Px(%w6Xn({Ep2V>BFU}Qagm8a`Y~ZcQ1T)oU4HW- zZSu8L)*{Z2+tu4*ZhI?b)Y8P4xVS>BH_E#_xUN0D;l|(wT+S7s^ILSYj)=mxFc+k8 z73~G-Jm{cJpd5|Z9mr=u^v|#b9&Vb_SKtdOI+xa7_w!>9TCpM-4MOY`OPwv}Qe)*a z(I_3?>8OQxPqP2>RypgPc(Gfordeh2P))>b;m(7lP^-QdZ#cJ_K07YIeXUBF93`ES zBpHKM6wU)KHE$#$)#(D{WJd^FE-8@op^m7U&1b>Lv!X!xdh8>%!=mJU4$p;lO=8GC zE&v`Ir7r!HaoE@wdX9vxINa_QUQj=zC0^<^xaP17fzPFD5Iv4aVfpQJ=;P~;*o=@3 zirVpcRNB@&cm9fbH@ygGI@D>;Qia9GJAYX3~)uX7X3j%Cc4)<#g%_=jk z*VorWy~aR@F=C(_pU)>KoN~#Dkb#ah!17(y;Q1j94GqIEoMivj@9A{=%@Ef-SsMa= zUt5qcUuU=c7mt-bmd7c#;Y?gQn`A2YSn~PTa&J|Z>JTf3q43P*RB~=@>kU-}>_z;u zQEA%>rsLwbz1UdA$u{_xoQt(F#6lP47)FvL=Wa&o`umpudhYH}5exx}-F`ORV{Bw` z3p94M$JZO?za8Itdh#??aYA-wh;Ak4$q=%4mEUjr;C}li1U%1`pR=K%jI>~1@k*w7 z_&%0g{1=u)(fgh|pYO0@CEDW?{69Yl&jGo3a9k$9FM8 z4H=m5)@xe^WcCcyLw@lKMA7rsIu8$jOb4P2-l>(^ew`Y0k-avD8Xg0+b#%55uX ztI{IEzO3;nb#3@5`F4>mF-K846%yLN4J zel}9t_*AK39mc0zn(TC^cCmTbwB!cj{i|EdG*24^>C}x}9~Kxa+sf}w3VHm|Mn<0b ziSRPbAxcvx_<4^k zl_6j*-#QEv?TU_&zn&~C7x1fBSb5<#i8sNK6mxy%(-|5nKbtGY%`Y{@B2~Z7zB|BN zU>Z{~-dr3wGoljR*L6r=E4BM_Qo>nWFTpIhxFj%oUA`PJ4Tjcp*~&8gz+#%CI-)adLg=^smj-*IDsY?X9`Ae;(C zCF z_NFpY-xvO4m?ym()~B84D5V`~-9qQ!yy4PL=%COV)7M4?M!vT?Yol`_w&=mpiHtDI ztzcZPi%}%=XC)i2yXUOhxJc%e%@1NnG6P)}raoZF#%}s-7-N(qGR2hiD^S)Mea@oK zj}gs`icCLx5`jguSK)LqU!(79>8MT7HOs-PcA6=_z-jFhOIe5chvy&o?D*+tKJIQV zQ5VZ33r&nkqpeo1OW+dH#Fm&g{(xX|W5iQ=*;nFMYQaf`-s?}riOCrgq&ET(!5Y$Q zmMV~iT8;Dz{h?W;#}XlBTN)Wxp}UHqkU28PFdMz2QT_w}lEi13E~)QD?it~?@A+wlSNZTAfk3(c^dZRwb}lz(i+JhSonnTlSz!8DR5iwjx`y(b?n4hiy>L{dx#W6 zF2;a5-gquBV=-Mqy2wB`au99+n73D88qP236lR~8VAS1G-c(A&Ke!L=jo(gzpY^U=@QPFSNSJol_~va>PS zBjB@)_8cS%CPfJM%iwKoNwY#vc`|i995b(yDA+R`&OC~{3yFN|np7;7 zy^40$YY`5Y=*ukX5+C(Ttly$k6M0n5nQ3?sg6?qY?C^uo;JtbZ=06LKD`Jij zlFdFQD01{wErNa5a`rVxK2(e_>{Eu!=RZ4^4ucDw}TZRli-qIO!ZnINXz0i|3ekf4CZ()%=4rz>~ z?mG^nm9CCs+=*B(i0Eu^>D=?l$%#i#uRi2>w8dCgNC4+ z3tAxE2=%*QHO+%s9{!2$l1^je;+jxURP?Ild5T8^G3>>v9*gRw26b2su6UVDrH5K& zHhMJZ6HO$$T}zB~JMzoJhyyUcv!F#bPShVmq<`Xir&VH!q;(1I_4<)oNexhdjH=$t z_+Tybt?LediF>7o&9K^Fjl7rS*s+&{h||11_Q+O?9d4}vR6ZOPQlLhcBBx=;#1?%- zBIMx>x5x2O3m$t_g3czSE&G|e*PpE}LUt;V*{<>;$q5t-xZvn2C@A>Y4@A>8@pzwu zB-Pfzclx$bQBj-wQ|CufQ@82@52l#v=eOjgtIl6Fzx9h@<`XD!7x#)l0rQ?)Fz#Eu zzfTs2-R(a*EP|yO;^7eFjjI#-mKpjI)|K@E+mSccOS5?ra1=$dtp#0_8<9(ICfm`r z!tLeJcykvi6WvFxoDo9lmKwK9cn0=Mw#bTkRND+az(Pol{C)-eudVYtaKla)j;o}t zC}qWu#2-^REr?gF@yhqh7LhMunwV4M9W5<$3u1lYn}_{Gf0)qDdN1Q`tm-^$+De`>?qI((bGr@s?j+2t69(F5)bD5X>$Ipx9!%%{_y!6ruwyy zb#m`@O%2@#dT9Zt8GKLu_7C<(@HT-t5kkwg@SQ(;bg9UV;wJLi4 z_I}lf=l+s@)97z?j&=!s;i08va25&psHTej`qls{7>{VpHRLKW1KDU7tjVlR<2y=g%=Idu^_tVa$C&Kw1Sby zeg_V|k0y{KS>LxPp_(L$L3}9My6)n=dd&7$y6FEBNTVYWDYQXgpNdGwgx8@5;=>v& zPii? z{^|KT8vPdRu)$qvVzjdU!0b~Xf2L8j#`3V0*r@>P!@?@7#@Z9sMqOdiW_rT+Y6dPM zU(x)GcOoj|So>6+&k9Vn#UMoy@Ccrdc zgzDgrGP&PP32n5bhINTpiRs(@@B4DgkoyvHK;=x!yyBRVRn82n}8PO|gaiZNX4rF2&N zJOJ(>23=q=2(nUm2u7`%LTC}UFLqAO63D-02Q+~8@*}YNy8El%`zegxe^NUmpFlr^ zKP7toPC#7F{qdGChJHOtnQVilP+bZ!Q=fpxO}bvsc6K=s&jxf=f+OqG?L{hDmo-3;VycEZ6D`l__PHEKHwy*lEIT$GlUmb-H6R<|e( zVghgo3D)@_7S~Z$4%P#cEI^8`w!wcNl+k~TGd?N^v|+WoZ#YX$_g>_FC`IkDRCw(; z@>l9g?9CH5HH~^2YusW*+*>7anY%^Tya_KeEDyr?yYlojmmm5Pq3{Cz9>gmffRz`K zszpQ>ByW5`uq@D8g;J`JzY>^q@5@j@kFad!{6$bWJW9i8>{AtFTK4ycax3y5Ej_I8 zSSRJb8gOgfzfK*zoB=F=D=5s4bYNN~4>c-Ra8$?<2|dIF4+EGuWJ*YGwPcTsszAZu za|5zQF0`c+TM&Ny?lAZ0Hv6wS`1`r~5C89u!zTzRT{=JDk@DI3tI@R{zQT;#&ep+I z<Y%+g3>I&Ym8Y#YnYJU&5 zXF++=cDZ=!F$*`+{^UCF`vsLtrraG`MVTiTlzL(AZ+-u8Qd{9oF2+#xt!vv0u2stu zfsaRkX75VP=(TU3%B(OXB6pzQn#>17kka=x0J$dV!9l;(rhmXY z5cV_x1f!UlU5#6R(vu%OOu{7IzqnjcT5AQU#+QuNl4{z6db%|a0{88AXeu0AB1%&q zDh_^jN;|q;nGk)h8u&D{;1TCJXT=IRW_UoRdPv!}7HHah{K(E1=jV4Li34zt3caGW zsC>iyAFjavbBQWmO0L!4-kVF2T2c2QDx0aS&(*zOkXOH|vwLUm&id1Weeioho)>;B zA;_?YQU=*6=$_P>gvno~gT$9hZ6|FI{ryT|8&?r{CX9ltRDER>Ig1cWn3<3MXGWAc zQ+)pBwJ>z!ViIUwPu*Tg#6gQD9*a126`5yItb!j_bymT%y+a0OpZD>t{k-rTmYN5RPp zct^f1S;%3u53%XZ=Tp-z`38UraH9Hq)VpDb)iw>J;Di7SpB2$gvF&>mFppWo@i7Q) zTOkIjo7ey9?iopxRPaotRTt-h=r+@ao2^A}y$}b^U(<@Hrf^oPj;&zrm_C2xeb2AJ zCtF@6ESB2?47})TU#9N%>i8_DupfsS^>dQ%bHtZ_?tow2wbHNj#2zzH63Y;+_f{+W zyWtR8k(t?+L%T#MW9O3ViSHgrw}NHtPC$B!Y)negST%JjiVBc&RM0k2J8xj*X$ReiwW8^0dd~f>48Nlm&3jyhK6AVp49yAT z0-*GCRv+%KjW!TTBvPdsLEc6*_^YUj5Vh#tYikK?y zA5BA!j?ugLQ<6Myo4U;_Les4+KI^zW>=?^^r8%HE+O|Y73=cwCU6@qkfeB;L<;)1= zUl_O$H(QvUO8N5nGX_8(b0j$`FE_V+72K8pLdc$1es(I6!!CNb+QV&s{hJg_%EWau z;JlDu@Sy23l?e=P7R*TZg!upBvN>TQGWc8V=@eb1+Ud^Af zaFzPbm`IL;@X?8a!u4J@T3ZfDDltqDyr~p>rLKCrYV8O)6FeoOwGTHKukh_<$m&2f zoDmoXSATlBfV1&`25;fYE*Bh4n3qlv6&8W5}ZQqW(eQk%N`NJ8|+0BfiH+KVlS2 zhK;&MoJXWVoV%oX`!-3kBN*fjgTi+)ks}p}!FY|Fp7mW0*oXW1FR`V@NfvwyD z3E7%g-&k5Mcbo}a9{lZ1k}&2rdE{<^l+7sYEkUzWQ-oAkn>!^A-Iu_RRSzKhQfQeU ze-YG$9mr$>l!#Gixyggml7htl_y{4NP}_;^CvR`J)&teBr!?2WdYP%<2jy1@4P>cx zx5ngwqVI5ZPmasb>Q~mqEab6VX2GHziJJkYXBlgXXn?GHUnu~Xzr4$z zp%iBXzyv?oyqF5zCZnJ@@Y?D;p%OCFdT8rYoKxAV%|$s;zB(d4vy<78mb1}-}GrPWjn$Fd}s(zEdc_^e)TJW9NE|nEjZ58hLe-?S0wByG) z{+@-AQgi4IhCN5T&}Fc*K&oObzDGz{9;xl|0h0Gc)W^W5fZwqG*-8ju@bT9$7;7GI z*Ze9(oEVlAVGP!St*sScayk@DmXC%1=1@psCS8~)EkgIM(I+I>WxY4)bkwYJR+s&x ztyR@(s=*n}CnH&|`4b@pYR=ss@mc}9KEK4Sp`)YY z|LGV0_kGz-f=|Z$Y$DY|Rm5$IO*h~0xme*(jW(t&_m07iQl5gj-|fR3wfBrWX>*Jj zoInT3u7}9*x@Hpjm7&tu;VylK_d>9dk}J>A;)QwXJAnqtD%AS3a>Z$RdI zu;hKY409;L)$2Deslq^`zB;7xS2HP_G1kh>k&$UJRA`zy2j>0A7v|`F`RIVa0IPYz zed~8zQsJ~|lgN#bg29_}HVy!X;%n5g_qc*8W&CCJkBS^pg8$DC9d_>ke%j@a)wsjj zCkU@qvnuK@TxAosxm9tYg|KH0c^A5^V6Nx=1UqXfu&3GwWI{>v&O`neJlDE$d8JXuc z5r00akvb!Jn(sga+(24LVjZ;3=1=7K5LsFl^7^x85bIbi1|{X6uf z@8t1we*`Lj*Z1Zi$%HhLrNPn&=OUFjbV@pMMd^v~$mYEXNdD&O`yV&J_ZN^u{{4%l z{Mo;{1^+oH#OB70i8u!0=d5 z*VLpCxiEkG@T%3Xm?f1~}MLI3~$hVYB$3Mm?b>QnSb!y~jyG(u|a$r6*` z9z!dnV(g$R;B|KhoWJNo6b+NLE64EhHvMqP0-|IAbT*-M@Fn)F3qT;~>lkNxmU~9!+jusOy$obv& zZ|96v)^S~UT)8qMV*!_8!fldu?s=_376DF>a`uL5L`D+xCWqEX-&ROdq!UY2fcJxw#$I#{g9d9`VZIFV?zNyNlYWy-NSVca;e%119p1{0=CP zRp(=3w)bIPRKrNTFn@7oqC=i6}<(& zBXKYls~_69sy2Gf!EH?UFYm&3JSW@HOAbNJ%jQL!y8I)KZ4)XS+dbotW1I`B@iTv~ zRLmif>`ate^;`o9U9#t{1+7^C3`Zk~727D>{Cuca-`einzHJ2iPakB>qGlX8Gc&S) z1bG2FR)B^*^51T)|MlmEjFQj%J=jsj_wk$jl=@ngqxcPb+EA1AF%0toN?m>S$klrp zB557^#7VB~$v!wtWq`?Se|RyZyy`qfsEj3mRqE^&?x%Yl9&8~zrvRJj`4aH$1e5Oh zML~Pxgqn~)TBae#j`yH^O6B|D;MMX3bhnw8rTV>aVytMKxH7}?@oQ@*-5kC;jYj`- zq@KB+GL?9Vf z-OA%p=!r^t#86#7+c`%|M=GKmmqW@)SE4lN%-oX*5!RUZ9qd!!!3|Ls&aG~+#@Dg1 zus}~P{b&Ho(M3Tsgn}fly?F1hZU^%L7*z`NhiF%z6kC^d`tX{nRlROxdG}~?HCCX< z^qqeEx~uRJgcnZCCTJD_82HeoCGf3U6cq0lVr!#&K|pz%wd=KF%%Fcjm`SPdU&P+S zEueGFn-JEBkp8w+a@<#Yt&oedNK0MaB$VTE$3cNXK;C%e#n~TDDM%^)c=U|{a_+xm z24=eG$;CaXd#?fks~-~3MgQGdl$RvAU5Z|b^u(1({ytMm`9rJN{`J1c0hycedQRha zx}!tNix^;{Hdny?FJr!7ly5JriH}^Ng#(8Xw=Cr0ghak6J61(u?ExS%Kh+5B{ z?f!-wtAICHj*=vqp9w=w5?Ci0z~i1I=Eg6*)hhLeX8xbYnf`i;o`SAOWz#B3h2h4h zT9g>C>Fsh?AF=W|=L)w2W8H#m-v7Fuf>hR)VL9ytpXpGH0 z%WclsholtMR?<1YFMt&u*;um|z<(I;6?t?ya`85}*G$dM2=<4pRlOrWXTtxnyrUG8`{om>>6ic3SYcVw zha|$I^53o#Pw_E3E2|lyE(;Sgz>RJUs`HmfS=|D&Uc|Jn@bUmqP#!|DLj&KvrU+J# z1O7L8fP^{fu|2+YPar37!QihR__N-^*mf!Bdn_c4%0qilc4c~t%c@&a9i^Q79-AB$ z9uv}TmK~WbgndVI*ezd43$*^JDc=VnLM#C)JkE>#Ix0lc5eR!|IapvKA31;!iqHd# z5V&D(kBQQ$#30vTOt z&E(VqHbFF(5&D{Sghmt^HPV9M(lW2*apY?dj({W%He~DCKzMjbM?#5>9?p9wzyCb1 z&2b)I7IDunU(0VG9E1v48KvEoA2}9Xve5s)U

`PH& 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

n8~oLVTaRidgQvJ0 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

^9{PQb1)wYVQ5;7 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�I6EZgvKlZ|2JrG0A9q*s-Cj`_{ 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 JY8{uD{{aEA0G$8; literal 0 HcmV?d00001 diff --git a/doc/install.md b/doc/install.md new file mode 100644 index 0000000..c0d6434 --- /dev/null +++ b/doc/install.md @@ -0,0 +1,58 @@ +## InternLM项目的依赖安装 + +### 环境准备 +首先,需要安装的依赖包及对应版本列表如下: +- Python == 3.10 +- GCC == 10.2.0 +- MPFR == 4.1.0 +- CUDA == 11.7 +- Pytorch == 1.13.1+cu117 +- Transformers >= 4.25.1 +- Flash-Attention == 23.05 +- Ampere或者Hopper架构的GPU (例如H100, A100) +- Linux OS + +以上依赖包安装完成后,需要更新配置系统环境变量: +```bash +export CUDA_PATH={path_of_cuda_11.7} +export GCC_HOME={path_of_gcc_10.2.0} +export MPFR_HOME={path_of_mpfr_4.1.0} +export LD_LIBRARY_PATH=${GCC_HOME}/lib64:${MPFR_HOME}/lib:${CUDA_PATH}/lib64:$LD_LIBRARY_PATH +export PATH=${GCC_HOME}/bin:${CUDA_PATH}/bin:$PATH +export CC=${GCC_HOME}/bin/gcc +export CXX=${GCC_HOME}/bin/c++ +``` + +### 环境安装 +将项目`internlm`及其依赖子模块,从 github 仓库中 clone 下来,命令如下: +```bash +git clone git@github.com:InternLM/InternLM.git --recurse-submodules +``` + +推荐使用 conda 构建一个 Python-3.10 的虚拟环境, 并基于`requirements/`文件安装项目所需的依赖包: +```bash +conda create --name internlm-env python=3.10 -y +conda activate internlm-env +cd internlm +pip install -r requirements/torch.txt +pip install -r requirements/runtime.txt +``` + +安装 flash-attention (version v1.0.5): +```bash +cd ./third_party/flash-attention +python setup.py install +cd ./csrc +cd fused_dense_lib && pip install -v . +cd ../xentropy && pip install -v . +cd ../rotary && pip install -v . +cd ../layer_norm && pip install -v . +cd ../../../../ +``` + +安装 Apex (version 23.05): +```bash +cd ./third_party/apex +pip install -v --disable-pip-version-check --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./ +cd ../../ +``` diff --git a/doc/structure.md b/doc/structure.md new file mode 100644 index 0000000..e9fbe3a --- /dev/null +++ b/doc/structure.md @@ -0,0 +1,25 @@ +## InternLM系统结构 +本项目系统代码文件结构如下所示: +```bash +├── configs # 配置模块,管理模型和训练相关参数 +│ └── 7B_sft.py # 7B_sft.py 是系统 demo 的配置文件样例 +├── internlm # 系统代码的主目录 +│ ├── apis # 接口模块,包含一些关于推理等的接口函数 +│ ├── core # 核心模块,管理用于训练和推理的 parallel context 和训练调度引擎 +│ │ ├── context # context 模块,主要负责初始化并行进程组,并管理 parallel context +│ │ │ ├── parallel_context.py +│ │ │ └── process_group_initializer.py +│ │ ├── engine.py # 负责管理模型的训练和评估过程 +│ │ ├── no_pipeline_scheduler.py # 并行训练的调度器 +│ │ └── trainer.py # 负责管理训练引擎和调度器 +│ ├── data # 数据模块,负责管理数据集生成和处理 +│ ├── initialize # 初始化模块,负责管理分布式环境启动和训练器初始化 +│ ├── model # 模型模块,负责管理模型结构定义和实现 +│ ├── solver # 负责管理 optimizer 和 lr_scheduler 等的实现 +│ └── utils # 辅助模块,负责管理日志、存储、模型注册等 +├── train.py # 模型训练的主函数入口文件 +├── requirements # 系统运行的依赖包列表 +├── third_party # 系统所依赖的第三方模块,包括 apex 和 flash-attention 等 +├── tools # 一些脚本工具,用于原始数据集处理和转换,模型 checkpoint 转换等 +└── version.txt # 系统版本号 +``` diff --git a/doc/train_performance.md b/doc/train_performance.md new file mode 100644 index 0000000..72c1509 --- /dev/null +++ b/doc/train_performance.md @@ -0,0 +1,62 @@ +## 训练性能 + +InternLM 深度整合了 Flash-Attention, Apex 等高性能模型算子,提高了训练效率。通过构建 Hybrid Zero 技术,实现计算和通信的高效重叠,大幅降低了训练过程中的跨节点通信流量。InternLM 支持 7B 模型从 8 卡扩展到 1024 卡,千卡规模下加速效率可高达 90%,训练吞吐超过 180TFLOPS,平均单卡每秒处理的 token 数量超过3600。下表为 InternLM 在不同配置下的扩展性测试数据: + +| InternLM | 8卡 | 16卡 | 32卡 | 64卡 | 128卡 | 256卡 | 512卡 | 1024卡 | +| ---------------- | ---- | ---- | ---- | ---- | ----- | ----- | ----- | ------ | +| TKS (Tokens/GPU/Second) | 4078 | 3939 | 3919 | 3944 | 3928 | 3920 | 3835 | 3625 | +| TFLOPS | 192 | 192 | 186 | 186 | 185 | 185 | 186 | 182 | + + +我们在GPU集群上测试了多种并行配置下,InternLM训练7B模型的性能。在每组测试中,每张GPU在单次迭代中处理的token数量一致。测试使用的硬件和参数配置如下表所示: + +| 硬件 | 硬件型号 | +| ----------------------- | ----------------------------- | +| GPU | nvidia_a100-sxm4-80gb | +| Memory | 2TB | +| Inter-machine bandwidth | 4 * 100Gb RoCE | +| CPU | 128 core Intel(R) Xeon(R) CPU | + +| 超参 | tp=1 | tp=2 | +| --------- | ---- | ---- | +| micro_num | 4 | 4 | +| micro_bsz | 2 | 4 | +| seq_len | 2048 | 2048 | + +InternLM中`zero1`的配置决定了优化器状态的分配范围。 +- `zero1=-1`表明优化器状态分布在全部数据并行节点(等同于Deepspeed Zero-1的效果) +- `zero1=8,tp=1`的情况下,优化器状态分布在单节点8张GPU内,并且不同节点上的优化器状态保持一致。 + +### 吞吐量测量 + +吞吐量定义为TGS,平均每GPU每秒处理的token的数量(Tokens per GPU per Second)。在该项测试的训练配置中,`pack_sample_into_one=False`,`checkpoint=False`。测试结果如下表所示。采用`zero1=8,tp=1`,InternLM针对7B模型训练的扩展性,在千卡训练的加速效率可以达到`88%`。 + +| 并行配置 | 8卡 | 16卡 | 32卡 | 64卡 | 128卡 | 256卡 | 512卡 | 1024卡 | +| ---------------- | ---- | ---- | ---- | ---- | ----- | ----- | ----- | ------ | +| (tp=1, zero1=-1) | 4062 | 3842 | 3752 | 3690 | 3571 | 3209 | 2861 | 2271 | +| (tp=1, zero1=8) | 4078 | 3939 | 3919 | 3944 | 3928 | 3920 | 3835 | 3625 | +| (tp=2, zero1=-1) | 3822 | 3595 | 3475 | 3438 | 3308 | 3094 | 2992 | 2785 | +| (tp=2, zero1=4) | 3761 | 3658 | 3655 | 3650 | 3651 | 3653 | 3589 | 3486 | + + +

+ +### FLOPS测试 +模型训练的计算量参考 [Megatron](https://deepakn94.github.io/assets/papers/megatron-sc21.pdf) 论文中FLOPS计算方式。为了保证训练过程中的FLOPS恒定,在该项测试的训练配置中,`pack_sample_into_one=True`,其余超参设置如下所示: + +activation checkpoint | tp | zero-1 | seq_len | micro_num | micro_bsz | +| --- | --- | ---- | ---- | ---- |---- | +关闭 | 1 | 8 | 2048 | 4 | 2 | +开启 | 1 | 8 | 2048 | 1 | 8 | + +测试结果如下表所示,InternLM针对7B模型的千卡训练,可以达到 `>180 TFLOPS`: +| activation checkpoint | 8卡 | 16卡 | 32卡 | 64卡 | 128卡 | 256卡 | 512卡 | 1024卡 | +| --------------- | --- | ---- | ---- | ---- | ----- | ----- | ----- | ------ | +| 关闭 | 183 | 177 | 176 | 174 | 173 | 173 | 173 | 160 | +| 开启 | 192 | 192 | 186 | 186 | 185 | 185 | 186 | 182 | + +
+ +
\ No newline at end of file diff --git a/doc/usage.md b/doc/usage.md new file mode 100644 index 0000000..be84136 --- /dev/null +++ b/doc/usage.md @@ -0,0 +1,191 @@ +## 基于InternLM的预训练与微调使用教程 + +启动一个 Demo 模型训练,需要进行三项准备,**安装**,**数据集准备**和**模型训练配置**。接下来,首先会介绍数据准备相关的操作,再简要描述模型训练配置相关的内容。 + +### 安装 +请参考[安装文档](./install.md)进行安装。 + +### 数据准备 (预训练) + +InternLM训练任务的数据集包括一系列的`bin`和`meta`文件。使用`tokenizer`从原始文本文件生成训练用数据集。通过在`tools/tokenizer.py`中指定模型参数路径的方式来导入tokenizer模型。目前提供`V7.model`来生成tokens。若想使用不同的模型,可直接修改`tokernizer.py`中的模型参数路径。 + +可以运行以下命令生成原始数据对应的`bin`和`meta`文件,其中参数`raw_data_name`表示原始数据集的文件名称,`input_file_type`表示原始数据集的文件格式,目前支持`txt`、`json`和`jsonl`这三种格式,`bin`表示生成的`bin`文件的保存路径。 +```bash +$ python tools/tokenizer.py --raw_data_name your_raw_data_file_name(without suffix) --input_file_type 'text' or 'json' or 'jsonl' --bin your_output_bin_path +``` + +下面是一个数据处理的例子(这里只给出了`txt`格式的数据处理例子,`json`和`jsonl`的数据处理流程和`txt`的完全一致): + +给定一个包含原始数据集的文件`raw_data.txt`,原始数据集如下所示: +```bash +感恩生活中的每一个细节,才能真正体会到幸福的滋味。 +梦想是人生的动力源泉,努力追逐,才能实现自己的目标。 +学会宽容和理解,才能建立真正和谐的人际关系。 +``` + +可以通过运行以下命令来生成`bin`和`meta`文件: +```bash +$ python tools/tokenizer.py --raw_data_name raw_data --input_file_type 'text' --bin cn/output.bin +``` + +需要注意的是,生成的`bin`文件需要保存在`cn`或者`en`或者`code`或者`ja`或者`ar`或者`kaoshi`这六个目录下,以区分数据集的类型。 + +其中,`cn`表示中文数据集;`en`表示英文数据集;`code`表示代码数据集;`ja`表示日语数据集;`ar`表示阿拉伯语数据集;`kaoshi`表示考试数据集。 + +生成的bin文件的格式如下: +```python +{"tokens": [73075, 75302, 69522, 69022, 98899, 67713, 68015, 81269, 74637, 75445, 99157]} +{"tokens": [69469, 60355, 73026, 68524, 60846, 61844, 98899, 67775, 79241, 98899, 67713, 67800, 67453, 67838, 99157]} +{"tokens": [68057, 79017, 60378, 68014, 98899, 67713, 67990, 68015, 70381, 67428, 61003, 67622, 99157]} +``` +`bin`文件中的每一行均对应原始数据集中的每一个句子,表示每个句子的`token`(下文将用sequence指定)。 + +生成的`meta`文件的格式如下: +```bash +(0, 11), (90, 15), (208, 13) +``` +在`meta`文件中,每个元组对应着`bin`文件中每一个`sequence`的元信息。其中,元组的第一个元素表示每个`sequence`在所有`sequence`中的`starting index`,第二个元素表示每个`sequence`中有多少个`tokens`。 + +例如,对于第一个`sequence`,`starting index`为 0,有 11 个`tokens`;对于第二个`sequence`,由于第一个`sequence`转换为`string`后的长度为`89`,因此它的`starting index`为 90,有 15 个`tokens`。 + +`json`和`jsonl`类型的文件的`bin`和`meta`文件格式和`txt`一致,此处不再赘叙。 + +### 数据准备 (微调) + +微调任务的数据集格式与预训练任务保持一致,生成的数据格式为一系列的`bin`和`meta`文件。以下以 Alpaca 数据集为例,介绍微调的数据准备流程。 + +1. 下载 [Alpaca 数据集](https://github.com/tatsu-lab/stanford_alpaca/blob/main/alpaca_data.json) + +2. 对 Alpaca 数据进行 tokenize,使用以下命令 + +```shell +python tools/alpaca_tokenizer.py /path/to/alpaca_dataset /path/to/output_dataset /path/to/tokenizer --split_ratio 0.1 +``` + +建议用户参考 alpaca_tokenizer.py 编写新的脚本对自己的数据集进行 tokenize + +### 训练配置 + +以 7B Demo 的配置文件`configs/7B_sft.py`为例,介绍启动一个模型训练所需要进行的数据、模型和并行等相关的配置。 + +#### 数据配置 +数据相关的关键参数配置及释义如下所示: +```python +TRAIN_FOLDER = "/path/to/dataset" +SEQ_LEN = 2048 +data = dict( + seq_len=SEQ_LEN, # 数据样本长度,默认值为 2048 + micro_num=1, # micro_num 是指在一次模型参数更新中会处理的 micro_batch 的数目,默认值为 1 + micro_bsz=1, # packed_length = micro_bsz * SEQ_LEN,为一次处理的 micro_batch 的数据大小,默认值为 1 + total_steps=50000, # 总的所需执行的 step 的数目,默认值为 50000 + min_length=50, # 若数据集文件中,数据行数少于50,将会被废弃 + train_folder=TRAIN_FOLDER, # 数据集文件路径,默认值为 None;若 train_folder 为空,则以自动生成的随机数据集进行训练测试 + pack_sample_into_one=False, # 数据整理的逻辑,决定是按照 seq_len 维度或者是 sequence 的真实长度来进行attention计算 +) +``` + +
+ +
+ + +目前支持传入数据集文件路径`train_folder`,且要求文件格式如下: +```bash +- folder + - code + train_000.bin + train_000.bin.meta +``` +数据集的详细内容可参考``数据准备``模块相关的介绍。 + +#### 模型配置 + +如果在启动训练时要加载模型 `checkpoint`,可进行如下相关配置: +```python +SAVE_CKPT_FOLDER = "local:/path/to/save/ckpt" +MODEL_ONLY_FOLDER = "local:/path/to/load/init/model/ckpt" +LOAD_CKPT_FOLDER = "local:/path/to/load/resume/ckpt" +ckpt = dict( + save_ckpt_folder=SAVE_CKPT_FOLDER, # 存储模型和优化器 checkpoint 的路径 + checkpoint_every=float("inf"), # 每多少个 step 存储一次 checkpoint,默认值为 inf + load_model_only_folder=MODEL_ONLY_FOLDER, # 加载模型初始权重的路径,只加载模型权重,不加载优化器权重,训练将从第一个 step 开始 + load_ckpt_folder=LOAD_CKPT_FOLDER, # 断点续训时,加载模型和优化器等权重的路径,将从指定的 step 恢复训练 + load_optimizer=True, # 断点续训时,是否需要加载优化器权重,默认值为 True +) +``` +注意: +- `load_model_only_folder`与`load_ckpt_folder`不能同时设置 +- 路径若以 `local:` 为前缀,则存储在本地文件系统;若以 `boto3:` 为前缀,则存储在远程 oss 上 + +模型相关关键参数配置如下所示: +```python +model_type = "INTERNLM" # 模型类型,默认值为 "INTERNLM",对应模型结构初始化接口函数 +NUM_ATTENTION_HEAD = 32 +VOCAB_SIZE = 103168 +HIDDEN_SIZE = 4096 +NUM_LAYER = 32 +MLP_RATIO = 8 / 3 +model = dict( + checkpoint=False, + num_attention_heads=NUM_ATTENTION_HEAD, + embed_split_hidden=True, + vocab_size=VOCAB_SIZE, + embed_grad_scale=1, + parallel_output=True, + hidden_size=HIDDEN_SIZE, + num_layers=NUM_LAYER, + mlp_ratio=MLP_RATIO, + apply_post_layer_norm=False, + dtype="torch.bfloat16", + norm_type="rmsnorm", + layer_norm_epsilon=1e-5, +) +``` +注意:用户可自定义模型类型名和模型结构,并配置相对应的模型参数。通过`utils/registry.py`下的`MODEL_INITIALIZER`对象进行模型初始化函数接口注册,在训练主函数`train.py`中初始化模型时,可通过`model_type`配置获取指定的模型初始化接口函数。 + +*如果基于 InternLM 7B继续训练,可以参考 [ModelZoo](https://github.com/InternLM/InternLM/tree/main#model-zoo) 中 OpenXLab 链接下载权重* + +#### 并行配置 + +训练并行配置样例如下: +```python +parallel = dict( + zero1=8, + pipeline=1, + tensor=1, +) +``` +- zero1:zero 并行策略,分如下三种情况,默认值为 -1 + - 当`size <= 0`,则 zero1 进程组的大小等于数据并行进程组的大小,因此优化器状态参数将在数据并行范围内分配 + - 当`size == 1`,则不使用 zero1 ,所有数据并行组保留完整的优化器状态参数 + - 当`size > 1`且`size <= data_parallel_world_size`,则 zero1 进程组是数据并行进程组的子集 +- pipeline:流水线并行大小,目前只支持 1,默认值为 1 +- tensor:张量并行大小,通常是每个节点的 GPU 数量,默认值为 1 + +注意:`数据并行大小 = 总的 GPU 数目 / 流水线并行大小 / 张量并行大小` + +### 启动训练 + +完成了以上数据集准备和相关训练配置后,可启动 Demo 训练。接下来分别以 slurm 和 torch 环境为例,介绍训练启动方式。 + +若在 slurm 上启动分布式运行环境,多节点 16 卡的运行命令如下所示: +```bash +$ srun -p internllm -N 2 -n 16 --ntasks-per-node=8 --gpus-per-task=1 python train.py --config ./configs/7B_sft.py +``` + +若在 torch 上启动分布式运行环境,单节点 8 卡的运行命令如下所示: +```bash +$ torchrun --nnodes=1 --nproc-per-node=8 train.py --config ./configs/7B_sft.py +``` + +### 运行结果 + +以 slurm 上单机 8 卡的 Demo 训练配置为例,训练结果日志展示如下: +```bash +2023-07-04 21:40:14,148 INFO train.py:318 in record_current_batch_training_metrics -- step=17,loss=9.810295104980469,tgs (tokens per gpu per second)=4399.93,lr=3.8e-06,loss_scale=65536.0,grad_norm=4.177205427229359,micro_num=4,num_consumed_tokens=2359296,inf_nan_skip_batches=0,num_samples_in_batch=60,largest_length=1300,largest_batch=18,smallest_batch=13,adam_beta2=0.95,fwd_bwd_time=3.57 +2023-07-04 21:40:17,825 INFO train.py:318 in record_current_batch_training_metrics -- step=18,loss=9.715232849121094,tgs (tokens per gpu per second)=4457.7,lr=4.000000000000001e-06,loss_scale=65536.0,grad_norm=5.018154183978863,micro_num=4,num_consumed_tokens=2490368,inf_nan_skip_batches=0,num_samples_in_batch=68,largest_length=1153,largest_batch=19,smallest_batch=16,adam_beta2=0.95,fwd_bwd_time=3.52 +2023-07-04 21:40:21,526 INFO train.py:318 in record_current_batch_training_metrics -- step=19,loss=9.76744556427002,tgs (tokens per gpu per second)=4429.13,lr=4.2000000000000004e-06,loss_scale=65536.0,grad_norm=5.245329823265071,micro_num=4,num_consumed_tokens=2621440,inf_nan_skip_batches=0,num_samples_in_batch=70,largest_length=706,largest_batch=18,smallest_batch=17,adam_beta2=0.95,fwd_bwd_time=3.54 +2023-07-04 21:40:25,227 INFO train.py:318 in record_current_batch_training_metrics -- step=20,loss=9.628969192504883,tgs (tokens per gpu per second)=4427.46,lr=4.4e-06,loss_scale=65536.0,grad_norm=5.503176552110271,micro_num=4,num_consumed_tokens=2752512,inf_nan_skip_batches=0,num_samples_in_batch=69,largest_length=915,largest_batch=20,smallest_batch=15,adam_beta2=0.95,fwd_bwd_time=3.55 +2023-07-04 21:40:28,899 INFO train.py:318 in record_current_batch_training_metrics -- step=21,loss=9.690847396850586,tgs (tokens per gpu per second)=4464.18,lr=4.6e-06,loss_scale=65536.0,grad_norm=5.5336643273197526,micro_num=4,num_consumed_tokens=2883584,inf_nan_skip_batches=0,num_samples_in_batch=66,largest_length=870,largest_batch=17,smallest_batch=16,adam_beta2=0.95,fwd_bwd_time=3.52 +2023-07-04 21:40:32,629 INFO train.py:318 in record_current_batch_training_metrics -- step=22,loss=9.61986255645752,tgs (tokens per gpu per second)=4393.28,lr=4.800000000000001e-06,loss_scale=65536.0,grad_norm=9.01168869536059,micro_num=4,num_consumed_tokens=3014656,inf_nan_skip_batches=0,num_samples_in_batch=65,largest_length=1151,largest_batch=20,smallest_batch=14,adam_beta2=0.95,fwd_bwd_time=3.57 +``` diff --git a/internlm/__init__.py b/internlm/__init__.py new file mode 100644 index 0000000..dc34a31 --- /dev/null +++ b/internlm/__init__.py @@ -0,0 +1,9 @@ +from .initialize.initialize_trainer import initialize_trainer +from .initialize.launch import get_default_parser, launch_from_slurm, launch_from_torch + +__all__ = [ + "get_default_parser", + "initialize_trainer", + "launch_from_slurm", + "launch_from_torch", +] diff --git a/internlm/apis/__init__.py b/internlm/apis/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/internlm/apis/inference.py b/internlm/apis/inference.py new file mode 100644 index 0000000..88d6d50 --- /dev/null +++ b/internlm/apis/inference.py @@ -0,0 +1,848 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import torch +import torch.nn.functional as F +from torch import nn + +__all__ = ["SequenceGenerator"] + + +class InferenceParams: + """ + Intermediate cache objects for inference + """ + + def __init__( + self, + max_sequence_len, + max_batch_size, + sequence_len_offset=0, + batch_size_offset=0, + key_value_memory_dict: dict = None, + lengths_per_sample=None, + attention_mask=None, + ) -> None: + + self.max_sequence_len: int = max_sequence_len + self.max_batch_size: int = max_batch_size + self.sequence_len_offset: int = sequence_len_offset + self.batch_size_offset: int = batch_size_offset + if key_value_memory_dict is None: + key_value_memory_dict = {} + self.key_value_memory_dict: dict = key_value_memory_dict + self.fused_ft_kernel: bool = False + self.lengths_per_sample = lengths_per_sample + self.attention_mask = attention_mask + + def reorder_state(self, indices): + if self.lengths_per_sample is not None: + self.lengths_per_sample = self.lengths_per_sample.index_select(index=indices, dim=0) + for key, value in list(self.key_value_memory_dict.items()): + value = value.index_select(index=indices, dim=0) + self.key_value_memory_dict[key] = value + + +def _get_model_device(model): + """ + obtain the device of an nn.Module.model + + Args: + model: nn.Module + + Return: torch.device. if None, the parameters of this model is None. + """ + assert isinstance(model, nn.Module) + + parameters = list(model.parameters()) + if len(parameters) == 0: + return None + else: + return parameters[0].device + + +class SequenceGenerator: + """ + Sequence Generator. + """ + + def __init__(self, decoder, eos_token_id, pad_token_id, bos_token_id): + self.decoder = decoder + self.eos_token_id = eos_token_id + self.pad_token_id = pad_token_id + self.bos_token_id = bos_token_id + + @torch.no_grad() + def generate( + self, + tokens: "torch.LongTensor" = None, + num_return_sequences=1, + max_length: int = 20, + num_beams: int = 1, + do_sample: bool = True, + temperature: float = 1.0, + top_k: int = 50, + top_p: float = 1.0, + repetition_penalty: float = 1, + length_penalty: float = 1.0, + ): + """ + Args: + tokens: the beginning tokens whose shape is [bsz, length]. If shape is None, default ''bos_token'' will be + added to conduct generation. + num_return_sequences: number of returned sequences. + max_length: the max length of generated sequence. + num_beams: the size of beam search. + do_sample: whether using sample. + temperature: it's meaningful when do_sample is True. + top_k: sampling from top_k. + top_p: sampling from top_p tokens(nucleus sampling). + + Return: + the token sequence whose shape is [bsz, num_return_sequences, max_length]. If eos_token_id is not None, + the ending of each sequence must be eos_token_id. + """ + assert num_return_sequences <= num_beams, f"The `{num_return_sequences}` must be less than `{num_beams}`..." + if do_sample: + return sample_generate( + self.decoder, + tokens=tokens, + max_length=max_length, + num_beams=num_beams, + num_return_sequences=num_return_sequences, + temperature=temperature, + top_k=top_k, + top_p=top_p, + eos_token_id=self.eos_token_id, # the ending token id + pad_token_id=self.pad_token_id, + repetition_penalty=repetition_penalty, # the penalty degree for repetition tokens + length_penalty=length_penalty, # the penalty for length. if it > 1, then encourages long sequence. + # Otherwise, encourages short sequence. + bos_token_id=self.bos_token_id, + ) + else: + return greedy_generate( + self.decoder, + tokens=tokens, + max_length=max_length, + num_beams=num_beams, + num_return_sequences=num_return_sequences, + eos_token_id=self.eos_token_id, + pad_token_id=self.pad_token_id, + repetition_penalty=repetition_penalty, + length_penalty=length_penalty, + bos_token_id=self.bos_token_id, + ) + + +@torch.no_grad() +def greedy_generate( + decoder, + tokens=None, + max_length=20, + num_beams=1, + num_return_sequences=1, + eos_token_id=None, + pad_token_id=0, + repetition_penalty=1, + length_penalty=1.0, + bos_token_id=1, + feat_mask=None, + ffn_mask=None, + layer_mask=None, +): + """ + Search sequence greedily. + + Args: + decoder: the Decoder object. + tokens: the shape is [batch size, length]. If decoder is None, generating begins with bos_token_id. + max_length: the max length for generated sequence. + num_beams: the size of beam to decode. + eos_token_id: the ending token id. If None, the decode length is max_length. + pad_token_id: the token id of pad. + repetition_penalty: the penalty degree for repetition tokens + length_penalty: the penalty for length. + + """ + if num_beams == 1: + token_ids = _no_beam_search_generate( + decoder, + tokens=tokens, + max_length=max_length, + temperature=1, + top_k=50, + top_p=1, + eos_token_id=eos_token_id, + do_sample=False, + repetition_penalty=repetition_penalty, + length_penalty=length_penalty, + pad_token_id=pad_token_id, + bos_token_id=bos_token_id, + feat_mask=feat_mask, + ffn_mask=ffn_mask, + layer_mask=layer_mask, + ) + else: + token_ids = _beam_search_generate( + decoder, + tokens=tokens, + max_length=max_length, + num_beams=num_beams, + num_return_sequences=num_return_sequences, + temperature=1, + top_k=50, + top_p=1, + eos_token_id=eos_token_id, + do_sample=False, + repetition_penalty=repetition_penalty, + length_penalty=length_penalty, + pad_token_id=pad_token_id, + bos_token_id=bos_token_id, + feat_mask=feat_mask, + ffn_mask=ffn_mask, + layer_mask=layer_mask, + ) + + return token_ids + + +@torch.no_grad() +def sample_generate( + decoder, + tokens, + max_length=20, + num_beams=1, + num_return_sequences=1, + temperature=1.0, + top_k=50, + top_p=1.0, + eos_token_id=None, + pad_token_id=0, + repetition_penalty=1.0, + length_penalty=1.0, + bos_token_id=1, +): + """ + generate sequence in sampling way. + + Args: + decoder: the Decoder object. + tokens: the shape is [batch size, length]. If decoder is None, generating begins with bos_token_id. + max_length: the max length for generated sequence. + num_beams: the size of beam to decode. + num_return_sequences: number of returned sequence. + temperature: annealing magnitude during sampling. + top_k: sampling from top_k. (Default: 50) + top_p: sampling from top_p tokens(nucleus sampling). (Default: 1.0) + eos_token_id: the ending token id. If None, the decode length is max_length. + pad_token_id: the token id of pad. + repetition_penalty: the penalty degree for repetition tokens + length_penalty: the penalty for length. + + """ + if num_beams == 1: + token_ids = _no_beam_search_generate( + decoder, + tokens=tokens, + max_length=max_length, + temperature=temperature, + top_k=top_k, + top_p=top_p, + eos_token_id=eos_token_id, + do_sample=True, + repetition_penalty=repetition_penalty, + length_penalty=length_penalty, + pad_token_id=pad_token_id, + bos_token_id=bos_token_id, + ) + else: + token_ids = _beam_search_generate( + decoder, + tokens=tokens, + max_length=max_length, + num_beams=num_beams, + num_return_sequences=num_return_sequences, + temperature=temperature, + top_k=top_k, + top_p=top_p, + eos_token_id=eos_token_id, + do_sample=True, + repetition_penalty=repetition_penalty, + length_penalty=length_penalty, + pad_token_id=pad_token_id, + bos_token_id=bos_token_id, + ) + return token_ids + + +@torch.no_grad() +def _no_beam_search_generate( + decoder, + tokens, + inference_params=None, + max_length=20, + temperature=1.0, + top_k=50, + top_p=1.0, + eos_token_id=None, + do_sample=True, + repetition_penalty=1.0, + length_penalty=1.0, + pad_token_id=0, + bos_token_id=1, + feat_mask=None, + ffn_mask=None, + layer_mask=None, +): + # delete num_return_sequences=1 for lint check; + batch_size = tokens.size(0) + if eos_token_id is None: + _eos_token_id = -1 + else: + _eos_token_id = eos_token_id + + has_bos = torch.all(tokens[:, 0].eq(bos_token_id)) + if has_bos: + bos_pos = torch.where(tokens.eq(bos_token_id), 1, 0) + bos_sum = bos_pos.cumsum(dim=-1) + bos_pos = torch.where(bos_sum.eq(bos_sum[:, -1:]), 0, 1) + to_atten_x = bos_pos[:, :, None] + to_atten_y = bos_pos[:, None, :] + # attention_mask = torch.einsum('bno,bom->bnm', to_atten_x, to_atten_y).eq(1) + else: + bos_pos = torch.where(tokens.eq(bos_token_id), 1, 0) + to_atten_x = bos_pos[:, :, None] + to_atten_y = bos_pos[:, None, :] + # attention_mask = torch.einsum('bno,bom->bnm', to_atten_x, to_atten_y).eq(1) + attention_mask = torch.logical_or(to_atten_x, to_atten_y).eq(1) + if inference_params is None: + inference_params = InferenceParams( + max_sequence_len=max_length, + max_batch_size=tokens.size(0), + sequence_len_offset=0, + batch_size_offset=0, + key_value_memory_dict=None, + lengths_per_sample=None, + attention_mask=attention_mask, + ) + + if layer_mask is None: + if feat_mask is None and ffn_mask is None: + scores = decoder(**{"input_ids": tokens, "inference_params": inference_params}) + else: + scores = decoder( + **{ + "input_ids": tokens, + "inference_params": inference_params, + "feat_mask": feat_mask, + "ffn_mask": ffn_mask, + } + ) + else: + scores = decoder( + **{ + "input_ids": tokens, + "inference_params": inference_params, + "feat_mask": feat_mask, + "ffn_mask": ffn_mask, + "layer_mask": layer_mask, + } + ) + + if isinstance(scores, (list, tuple)): + scores = scores[0] + scores = scores[:, -1].float() + inference_params.sequence_len_offset += tokens.size(1) + if _eos_token_id != -1: + scores[:, _eos_token_id] = -1e12 + next_tokens = scores.argmax(dim=-1, keepdim=True) + token_ids = torch.cat([tokens, next_tokens], dim=1) + cur_len = token_ids.size(1) + dones = token_ids.new_zeros(batch_size).eq(1) + # tokens = tokens[:, -1:] + + real_max_length = max_length + max_lengths = tokens.new_full((tokens.size(0),), fill_value=max_length, dtype=torch.long) + + while cur_len < real_max_length: + # batch_size x vocab_size + if has_bos: + bos_pos = torch.where(token_ids.eq(bos_token_id), 1, 0) + bos_sum = bos_pos.cumsum(dim=-1) + bos_pos = torch.where(bos_sum.eq(bos_sum[:, -1:]), 0, 1) + to_atten_x = bos_pos[:, :, None] + to_atten_y = bos_pos[:, None, :] + # attention_mask = torch.einsum('bno,bom->bnm', to_atten_x, to_atten_y).eq(1) + else: + bos_pos = torch.where(token_ids.eq(bos_token_id), 1, 0) + to_atten_x = bos_pos[:, :, None] + to_atten_y = bos_pos[:, None, :] + # attention_mask = torch.einsum('bno,bom->bnm', to_atten_x, to_atten_y).eq(1) + attention_mask = torch.logical_or(to_atten_x, to_atten_y).eq(1) + inference_params.attention_mask = attention_mask + if layer_mask is None: + if feat_mask is None and ffn_mask is None: + scores = decoder(**{"input_ids": token_ids[:, -1:], "inference_params": inference_params}) + else: + scores = decoder( + **{ + "input_ids": token_ids[:, -1:], + "inference_params": inference_params, + "feat_mask": feat_mask, + "ffn_mask": ffn_mask, + } + ) + else: + scores = decoder( + **{ + "input_ids": token_ids[:, -1:], + "inference_params": inference_params, + "feat_mask": feat_mask, + "ffn_mask": ffn_mask, + "layer_mask": layer_mask, + } + ) + + if isinstance(scores, (list, tuple)): + scores = scores[0] + scores = scores[:, -1].float() + inference_params.sequence_len_offset += 1 + + if repetition_penalty != 1.0: + token_scores = scores.gather(dim=1, index=token_ids) + lt_zero_mask = token_scores.lt(0).float() + ge_zero_mask = lt_zero_mask.eq(0).float() + token_scores = ( + lt_zero_mask * repetition_penalty * token_scores + ge_zero_mask / repetition_penalty * token_scores + ) + scores.scatter_(dim=1, index=token_ids, src=token_scores) + + if eos_token_id is not None and length_penalty != 1.0: + # batch_size x vocab_size + token_scores = scores / cur_len**length_penalty + eos_mask = scores.new_ones(scores.size(1)) + eos_mask[eos_token_id] = 0 + eos_mask = eos_mask.unsqueeze(0).eq(1) + + scores = scores.masked_scatter(eos_mask, token_scores) + + if do_sample: + if temperature > 0 and temperature != 1: + scores = scores / temperature + + scores = top_k_top_p_filtering(scores, top_k, top_p, min_tokens_to_keep=2) + # add 1e-12 to avoid https://github.com/pytorch/pytorch/pull/27523 + probs = F.softmax(scores, dim=-1) + 1e-12 + + next_tokens = torch.multinomial(probs, num_samples=1).squeeze(1) # batch_size + else: + next_tokens = torch.argmax(scores, dim=-1) # batch_size + + if _eos_token_id != -1: + next_tokens = next_tokens.masked_fill(max_lengths.eq(cur_len + 1), _eos_token_id) + next_tokens = next_tokens.masked_fill(dones, pad_token_id) + tokens = next_tokens.unsqueeze(1) + + token_ids = torch.cat([token_ids, tokens], dim=-1) # batch_size x max_len + + end_mask = next_tokens.eq(_eos_token_id) + dones = dones.__or__(end_mask) + cur_len += 1 + + if dones.min() == 1: + break + + # if eos_token_id is not None: + # # setting the eos at the maximum length position + # tokens.scatter(index=max_lengths[:, None], dim=1, value=eos_token_id) + # if cur_len == max_length: + # # If eos is not reached by the maximum length, forcibly replace the last word with eos + # token_ids[:, -1].masked_fill_(~dones, eos_token_id) + # TODO Here we are simply adding an extra dimension for interface compatibility, but in the future it will need to + # be able to return multiple real results + return token_ids[:, None] + + +@torch.no_grad() +def _beam_search_generate( + decoder, + tokens, + inference_params=None, + max_length=20, + num_beams=4, + num_return_sequences=1, + temperature=1.0, + top_k=50, + top_p=1.0, + eos_token_id=None, + do_sample=True, + repetition_penalty=1.0, + length_penalty=1.0, + pad_token_id=0, + bos_token_id=1, + feat_mask=None, + ffn_mask=None, + layer_mask=None, +) -> torch.LongTensor: + + device = _get_model_device(decoder) + batch_size = tokens.size(0) + + if eos_token_id is None: + _eos_token_id = -1 + else: + _eos_token_id = eos_token_id + + has_bos = torch.all(tokens[:, 0].eq(bos_token_id)) + + if has_bos: + bos_pos = torch.where(tokens.eq(bos_token_id), 1, 0) + bos_sum = bos_pos.cumsum(dim=-1) + bos_pos = torch.where(bos_sum.eq(bos_sum[:, -1:]), 0, 1) + to_atten_x = bos_pos[:, :, None] + to_atten_y = bos_pos[:, None, :] + # attention_mask = torch.einsum('bno,bom->bnm', to_atten_x, to_atten_y).eq(1) + else: + bos_pos = torch.where(tokens.eq(bos_token_id), 1, 0) + to_atten_x = bos_pos[:, :, None] + to_atten_y = bos_pos[:, None, :] + # attention_mask = torch.einsum('bno,bom->bnm', to_atten_x, to_atten_y).eq(1) + attention_mask = torch.logical_or(to_atten_x, to_atten_y).eq(1) + + if inference_params is None: + inference_params = InferenceParams( + max_sequence_len=max_length, + max_batch_size=tokens.size(0), + sequence_len_offset=0, + batch_size_offset=0, + key_value_memory_dict=None, + lengths_per_sample=None, + attention_mask=attention_mask, + ) + + if layer_mask is None: + if feat_mask is None and ffn_mask is None: + scores = decoder(**{"input_ids": tokens, "inference_params": inference_params}) + else: + scores = decoder( + **{ + "input_ids": tokens, + "inference_params": inference_params, + "feat_mask": feat_mask, + "ffn_mask": ffn_mask, + } + ) + else: + scores = decoder( + **{ + "input_ids": tokens, + "inference_params": inference_params, + "feat_mask": feat_mask, + "ffn_mask": ffn_mask, + "layer_mask": layer_mask, + } + ) + + if isinstance(scores, (list, tuple)): + scores = scores[0] + scores = scores[:, -1].float() + inference_params.sequence_len_offset += tokens.size(1) + if _eos_token_id != -1: + scores[:, _eos_token_id] = -1e12 + vocab_size = scores.size(1) + assert vocab_size >= num_beams, "num_beams should be smaller than " "the number of vocabulary size." + + if do_sample: + probs = F.softmax(scores, dim=-1) + 1e-12 + # (batch_size, num_beams) + next_tokens = torch.multinomial(probs, num_samples=num_beams) + logits = probs.log() + # (batch_size, num_beams) + next_scores = logits.gather(dim=1, index=next_tokens) + else: + scores = F.log_softmax(scores, dim=-1) # (batch_size, vocab_size) + # obtain (batch_size, num_beams), (batch_size, num_beams) + next_scores, next_tokens = torch.topk(scores, num_beams, dim=1, largest=True, sorted=True) + + indices = torch.arange(batch_size, dtype=torch.long).to(device) + indices = indices.repeat_interleave(num_beams) + inference_params.reorder_state(indices) + + # batch_size * num_beams x length + tokens = tokens.index_select(dim=0, index=indices) + # genrated token (batch_size', cur_len) + token_ids = torch.cat([tokens, next_tokens.view(-1, 1)], dim=-1) + dones = [False] * batch_size + + beam_scores = next_scores.view(-1) # batch_size * num_beams + + cur_len = token_ids.size(1) + + real_max_length = max_length + max_lengths = tokens.new_full((tokens.size(0),), fill_value=max_length, dtype=torch.long) + hypos = [ + BeamHypotheses(num_beams, real_max_length, length_penalty, early_stopping=False) for _ in range(batch_size) + ] + # 0, num_beams, 2*num_beams, ... + batch_inds_with_numbeams_interval = (torch.arange(batch_size) * num_beams).view(-1, 1).to(token_ids) + + while cur_len < real_max_length: + if has_bos: + bos_pos = torch.where(token_ids.eq(bos_token_id), 1, 0) + bos_sum = bos_pos.cumsum(dim=-1) + bos_pos = torch.where(bos_sum.eq(bos_sum[:, -1:]), 0, 1) + to_atten_x = bos_pos[:, :, None] + to_atten_y = bos_pos[:, None, :] + # attention_mask = torch.einsum('bno,bom->bnm', to_atten_x, to_atten_y).eq(1) + else: + bos_pos = torch.where(token_ids.eq(bos_token_id), 1, 0) + to_atten_x = bos_pos[:, :, None] + to_atten_y = bos_pos[:, None, :] + # attention_mask = torch.einsum('bno,bom->bnm', to_atten_x, to_atten_y).eq(1) + attention_mask = torch.logical_or(to_atten_x, to_atten_y).eq(1) + + inference_params.attention_mask = attention_mask + # (bsz x num_beams, vocab_size) + + if layer_mask is None: + if feat_mask is None and ffn_mask is None: + scores = decoder(**{"input_ids": token_ids[:, -1:], "inference_params": inference_params}) + else: + scores = decoder( + **{ + "input_ids": token_ids[:, -1:], + "inference_params": inference_params, + "feat_mask": feat_mask, + "ffn_mask": ffn_mask, + } + ) + else: + scores = decoder( + **{ + "input_ids": token_ids[:, -1:], + "inference_params": inference_params, + "feat_mask": feat_mask, + "ffn_mask": ffn_mask, + "layer_mask": layer_mask, + } + ) + + if isinstance(scores, (list, tuple)): + scores = scores[0] + scores = scores[:, -1].float() + inference_params.sequence_len_offset += 1 + if repetition_penalty != 1.0: + token_scores = scores.gather(dim=1, index=token_ids) + lt_zero_mask = token_scores.lt(0).float() + ge_zero_mask = lt_zero_mask.eq(0).float() + token_scores = ( + lt_zero_mask * repetition_penalty * token_scores + ge_zero_mask / repetition_penalty * token_scores + ) + scores.scatter_(dim=1, index=token_ids, src=token_scores) + + if _eos_token_id != -1: + max_len_eos_mask = max_lengths.eq(cur_len + 1) + eos_scores = scores[:, _eos_token_id] + scores[:, _eos_token_id] = torch.where(max_len_eos_mask, eos_scores + 1e32, eos_scores) + + if do_sample: + if temperature > 0 and temperature != 1: + scores = scores / temperature + + scores = top_k_top_p_filtering(scores, top_k, top_p, min_tokens_to_keep=num_beams + 1) + # add 1e-12 to avoid https://github.com/pytorch/pytorch/pull/27523 + probs = F.softmax(scores, dim=-1) + 1e-12 + + # batch_size' x (num_beams+1) + _tokens = torch.multinomial(probs, num_samples=num_beams + 1) + + logits = probs.log() + # batch_size' x (num_beams+1) + _scores = logits.gather(dim=1, index=_tokens) + # batch_size' x (num_beams+1) + _scores = _scores + beam_scores[:, None] + _scores = _scores.view(batch_size, num_beams * (num_beams + 1)) + next_scores, ids = _scores.topk(2 * num_beams, dim=1, largest=True, sorted=True) + _tokens = _tokens.view(batch_size, num_beams * (num_beams + 1)) + # (batch_size, 2*num_beams) + next_tokens = _tokens.gather(dim=1, index=ids) + # (batch_size, 2*num_beams) + from_which_beam = torch.floor(ids.float() / (num_beams + 1)).long() + else: + # (batch_size * num_beams, vocab_size) + scores = F.log_softmax(scores, dim=-1) + # (batch_size * num_beams, vocab_size) + _scores = scores + beam_scores[:, None] + # (batch_size, num_beams*vocab_size) + _scores = _scores.view(batch_size, -1) + # (bsz, 2*num_beams) + next_scores, ids = torch.topk(_scores, 2 * num_beams, dim=1, largest=True, sorted=True) + # (batch_size, 2*num_beams) + from_which_beam = torch.floor(ids.float() / vocab_size).long() + next_tokens = ids % vocab_size # (batch_size, 2*num_beams) + + # next_scores, sorted_inds = next_scores.sort(dim=-1, descending=True) + # next_tokens = next_tokens.gather(dim=1, index=sorted_inds) + # from_which_beam = from_which_beam.gather(dim=1, index=sorted_inds) + + not_eos_mask = next_tokens.ne(_eos_token_id) + keep_mask = not_eos_mask.cumsum(dim=1).le(num_beams) + keep_mask = not_eos_mask.__and__(keep_mask) + + _next_tokens = next_tokens.masked_select(keep_mask).view(-1, 1) + _from_which_beam = from_which_beam.masked_select(keep_mask).view(batch_size, num_beams) + _next_scores = next_scores.masked_select(keep_mask).view(batch_size, num_beams) + beam_scores = _next_scores.view(-1) + + flag = True + if cur_len + 1 == real_max_length: + eos_batch_idx = torch.arange(batch_size).to(next_tokens).repeat_interleave(repeats=num_beams, dim=0) + eos_beam_ind = torch.arange(num_beams).to(token_ids).repeat(batch_size) + eos_beam_idx = from_which_beam[:, :num_beams].reshape(-1) + else: + effective_eos_mask = next_tokens[:, :num_beams].eq(_eos_token_id) # batch_size x num_beams + if effective_eos_mask.sum().gt(0): + eos_batch_idx, eos_beam_ind = effective_eos_mask.nonzero(as_tuple=True) + eos_beam_idx = eos_batch_idx * num_beams * 2 + eos_beam_ind + eos_beam_idx = from_which_beam.view(-1)[eos_beam_idx] + else: + flag = False + + if flag: + _token_ids = torch.cat([token_ids, _next_tokens], dim=-1) + for batch_idx, beam_ind, beam_idx in zip( + eos_batch_idx.tolist(), eos_beam_ind.tolist(), eos_beam_idx.tolist() + ): + if not dones[batch_idx]: + score = next_scores[batch_idx, beam_ind].item() + if _eos_token_id != -1: + hypos[batch_idx].add(_token_ids[batch_idx * num_beams + beam_idx, :cur_len].clone(), score) + else: + hypos[batch_idx].add(_token_ids[batch_idx * num_beams + beam_idx].clone(), score) + + reorder_inds = (batch_inds_with_numbeams_interval + _from_which_beam).view(-1) + inference_params.reorder_state(reorder_inds) + token_ids = torch.cat([token_ids.index_select(index=reorder_inds, dim=0), _next_tokens], dim=-1) + + for batch_idx in range(batch_size): + dones[batch_idx] = ( + dones[batch_idx] + or hypos[batch_idx].is_done(next_scores[batch_idx, 0].item()) + or max_lengths[batch_idx * num_beams] == cur_len + 1 + ) + + cur_len += 1 + + if all(dones): + break + + # select the best hypotheses + tgt_len = token_ids.new_zeros(batch_size, num_return_sequences) + best = [] + + for i, hypotheses in enumerate(hypos): + # best_hyp = max(hypotheses.hyp, key=lambda x: x[0])[1] + sorted_hyp = list(sorted(hypotheses.hyp, key=lambda x: x[0], reverse=True)) + _best = [] + for j, hyp in zip(range(num_return_sequences), sorted_hyp): + hyp = hyp[1] + if _eos_token_id != -1: + hyp = torch.cat([hyp, token_ids.new_ones(1) * _eos_token_id]) + tgt_len[i, j] = len(hyp) + _best.append(hyp) + best.append(_best) + + # generate target batch + decoded = token_ids.new_zeros(batch_size, num_return_sequences, tgt_len.max().item()).fill_(pad_token_id) + for i, hypo in enumerate(best): + for j, _hypo in enumerate(hypo): + decoded[i, j, : tgt_len[i, j]] = _hypo + + return decoded + + +class BeamHypotheses(object): + """ + BeamHypotheses + """ + + def __init__(self, num_beams, max_length, length_penalty, early_stopping): + """Initialize n-best list of hypotheses.""" + self.max_length = max_length - 1 # ignoring bos_token + self.length_penalty = length_penalty + self.early_stopping = early_stopping + self.num_beams = num_beams + self.hyp = [] + self.worst_score = 1e9 + + def __len__(self): + """Number of hypotheses in the list.""" + return len(self.hyp) + + def add(self, hyp, sum_logprobs): + """Add a new hypothesis to the list.""" + score = sum_logprobs / len(hyp) ** self.length_penalty + if len(self) < self.num_beams or score > self.worst_score: + self.hyp.append((score, hyp)) + if len(self) > self.num_beams: + sorted_scores = sorted([(s, idx) for idx, (s, _) in enumerate(self.hyp)]) + del self.hyp[sorted_scores[0][1]] + self.worst_score = sorted_scores[1][0] + else: + self.worst_score = min(score, self.worst_score) + + def is_done(self, best_sum_logprobs): + """If there are enough hypotheses and that none of the hypotheses being + generated can become better than the worst one in the heap, then we are + done with this sentence.""" + if len(self) < self.num_beams: + return False + elif self.early_stopping: + return True + else: + return self.worst_score >= best_sum_logprobs / self.max_length**self.length_penalty + + +def top_k_top_p_filtering(logits, top_k=0, top_p=1.0, filter_value=-float("Inf"), min_tokens_to_keep=1): + """ + Based on the values of top_k and top_p, set the values that do not meet the criteria to the filter_value. + + Args: + logits: logit value, shape is [bsz, vocab_size]. + top_k: If it is greater than 0, only the probabilities of the top_k vocabulary are kept, and the rest of + the positions are set to filter_value. + top_p: according to http://arxiv.org/abs/1904.09751. + filter_value: filter value + min_tokens_to_keep: The probability of words in each sample‘s returned distribution will not be + lower than this value. + + """ + if top_k > 0: + # Safety check + top_k = min(max(top_k, min_tokens_to_keep), logits.size(-1)) + # Remove all tokens with a probability less than the last token of + # the top-k + indices_to_remove = logits < torch.topk(logits, top_k)[0][..., -1, None] + logits[indices_to_remove] = filter_value + + if top_p < 1.0: + sorted_logits, sorted_indices = torch.sort(logits, descending=True) + cumulative_probs = torch.cumsum(F.softmax(sorted_logits, dim=-1), dim=-1) + + # Remove tokens with cumulative probability above the threshold + # (token with 0 are kept) + sorted_indices_to_remove = cumulative_probs > top_p + if min_tokens_to_keep > 1: + # Keep at least min_tokens_to_keep + # (set to min_tokens_to_keep-1 because we add the first one below) + sorted_indices_to_remove[..., :min_tokens_to_keep] = 0 + # Shift the indices to the right to keep also the first token + # above the threshold + sorted_indices_to_remove[..., 1:] = sorted_indices_to_remove[..., :-1].clone() + sorted_indices_to_remove[..., 0] = 0 + + # scatter sorted tensors to original indexing + indices_to_remove = sorted_indices_to_remove.scatter(1, sorted_indices, sorted_indices_to_remove) + logits[indices_to_remove] = filter_value + return logits diff --git a/internlm/core/__init__.py b/internlm/core/__init__.py new file mode 100644 index 0000000..d6b7048 --- /dev/null +++ b/internlm/core/__init__.py @@ -0,0 +1,9 @@ +from .engine import Engine +from .naive_amp import NaiveAMPModel +from .trainer import Trainer + +__all__ = [ + "NaiveAMPModel", + "Engine", + "Trainer", +] diff --git a/internlm/core/context/__init__.py b/internlm/core/context/__init__.py new file mode 100644 index 0000000..97021dc --- /dev/null +++ b/internlm/core/context/__init__.py @@ -0,0 +1,47 @@ +from .parallel_context import ( + IS_TENSOR_PARALLEL, + Config, + ParallelContext, + global_context, +) +from .process_group_initializer import ( + Initializer_Data, + Initializer_Model, + Initializer_Pipeline, + Initializer_Tensor, + Initializer_Zero1, + ParallelMode, + ProcessGroupInitializer, +) +from .random import ( + add_seed, + get_current_mode, + get_seeds, + get_states, + seed, + set_mode, + set_seed_states, + sync_states, +) + +__all__ = [ + "Config", + "IS_TENSOR_PARALLEL", + "global_context", + "ParallelContext", + "ParallelMode", + "Initializer_Tensor", + "Initializer_Pipeline", + "Initializer_Data", + "Initializer_Zero1", + "ProcessGroupInitializer", + "Initializer_Model", + "seed", + "set_mode", + "add_seed", + "get_seeds", + "get_states", + "get_current_mode", + "set_seed_states", + "sync_states", +] diff --git a/internlm/core/context/parallel_context.py b/internlm/core/context/parallel_context.py new file mode 100644 index 0000000..bc0346c --- /dev/null +++ b/internlm/core/context/parallel_context.py @@ -0,0 +1,548 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +# adopted from https://github.com/hpcaitech/ColossalAI/blob/main/colossalai/context + +import inspect +import random +import socket +import sys +from collections import Counter +from importlib.machinery import SourceFileLoader +from pathlib import Path +from typing import Union + +import numpy as np +import torch +import torch.distributed as dist + +from internlm.utils.common import SingletonMeta +from internlm.utils.logger import get_logger + +from . import process_group_initializer as pgroup_initializer +from .process_group_initializer import ParallelMode +from .random import add_seed, get_seeds, set_mode + +IS_TENSOR_PARALLEL = "is_tensor_parallel" + +logger = get_logger(__file__) + + +class Config(dict): + """This is a wrapper class for dict objects so that values of which can be + accessed as attributes. + + Args: + config (dict): The dict object to be wrapped. + """ + + def __init__(self, config: dict = None): + if config is not None: + for k, v in config.items(): + self._add_item(k, v) + + def __missing__(self, key): + raise KeyError(key) + + def __getattr__(self, key): + try: + value = super().__getitem__(key) + return value + except KeyError: + raise AttributeError(key) + + def __setattr__(self, key, value): + super().__setitem__(key, value) + + def _add_item(self, key, value): + if isinstance(value, dict): + self.__setattr__(key, Config(value)) + else: + self.__setattr__(key, value) + + def update(self, config): + assert isinstance(config, (Config, dict)), "can only update dictionary or Config objects." + for k, v in config.items(): + self._add_item(k, v) + return self + + @staticmethod + def from_file(filename: str): + """Reads a python file and constructs a corresponding :class:`Config` object. + + Args: + filename (str): Name of the file to construct the return object. + + Returns: + :class:`Config`: A :class:`Config` object constructed with information in the file. + + Raises: + AssertionError: Raises an AssertionError if the file does not exist, or the file is not .py file + """ + + # check config path + if isinstance(filename, str): + filepath = Path(filename).absolute() + elif isinstance(filename, Path): + filepath = filename.absolute() + + assert filepath.exists(), f"{filename} is not found, please check your configuration path" + + # check extension + extension = filepath.suffix + assert extension == ".py", "only .py files are supported" + + # import the config as module + remove_path = False + if filepath.parent not in sys.path: + sys.path.insert(0, (filepath)) + remove_path = True + + module_name = filepath.stem + source_file = SourceFileLoader(fullname=str(module_name), path=str(filepath)) + module = source_file.load_module() # pylint: disable=W4902,E1120 + + # load into config + config = Config() + + for k, v in module.__dict__.items(): + if k.startswith("__") or inspect.ismodule(v) or inspect.isclass(v): + continue + else: + config._add_item(k, v) + + # remove module + del sys.modules[module_name] + if remove_path: + sys.path.pop(0) + + return config + + +class ParallelContext(metaclass=SingletonMeta): + """This class provides interface functions for users to get the parallel context, + such as the global rank, the local rank, the world size, etc. of each device. + + """ + + def __init__(self): + # distributed settings + self._global_ranks = dict() + self._local_ranks = dict() + self._world_sizes = dict() + self._groups = dict() + self._cpu_groups = dict() + self._ranks_in_group = dict() + + # load config from file + self._config = None + + # default parallel args, will be overwritten during process group intialization + self.world_size = 1 + self.data_parallel_size = 1 + self.pipeline_parallel_size = 1 + self.tensor_parallel_size = 1 + self.zero1_parallel_size = -1 + self.num_processes_on_current_node = -1 + self.virtual_pipeline_parallel_size = None + self.virtual_pipeline_parallel_rank = None + + @property + def config(self): + return self._config + + def load_config(self, config: Union[dict, str]): + """Loads the configuration from either a dict or a file. + + Args: + config (dict or str): Either a dict containing the configuration information or the filename + of a file containing the configuration information. + + Raises: + TypeError: Raises a TypeError if `config` is neither a dict nor a str. + """ + if isinstance(config, str): + self._config = Config.from_file(config) + elif isinstance(config, dict): + self._config = Config(config) + else: + raise TypeError("Invalid type for config, only dictionary or string is supported") + + def detect_num_processes_on_current_node(self): + hostname = socket.gethostname() + hostname_list = [None for _ in range(self.get_world_size(ParallelMode.GLOBAL))] + dist.all_gather_object(hostname_list, hostname, group=self.get_group(ParallelMode.GLOBAL)) + counter = Counter(hostname_list) + self.num_processes_on_current_node = counter[hostname] + + @staticmethod + def _check_parallel_mode(parallel_mode: ParallelMode): + assert isinstance( + parallel_mode, ParallelMode + ), f"expected the argument parallel_mode to be of enum ParallelMode, but got {type(parallel_mode)}" + + def get_global_rank(self): + """Returns the global rank of the current device. + + Returns: + int: The global rank of the current device + """ + return self._global_ranks[ParallelMode.GLOBAL] + + def get_local_rank(self, parallel_mode: ParallelMode): + """Returns the local rank of the current device. + + Args: + parallel_mode: The parallel mode for the rank. + + Returns: + int: The local rank of the current device for `parallel_mode`. + """ + self._check_parallel_mode(parallel_mode) + return self._local_ranks.get(parallel_mode, 0) + + def get_next_global_rank(self, parallel_mode: ParallelMode): + """Returns the global rank of the next device. + + Args: + parallel_mode: The parallel mode for the rank. + + Returns: + int: The global rank of the next device for `parallel_mode`. + """ + self._check_parallel_mode(parallel_mode) + + # get rank and world size + local_rank = self.get_local_rank(parallel_mode) + world_size = self.get_world_size(parallel_mode) + ranks_in_group = self.get_ranks_in_group(parallel_mode) + + return ranks_in_group[(local_rank + 1) % world_size] + + def get_prev_global_rank(self, parallel_mode: ParallelMode): + """Returns the global rank of the previous device. + + Args: + parallel_mode: The chosen parallel mode. + + Returns: + int: The global rank of the previous device for `parallel_mode`. + """ + self._check_parallel_mode(parallel_mode) + + # get rank and world size + local_rank = self.get_local_rank(parallel_mode) + world_size = self.get_world_size(parallel_mode) + ranks_in_group = self.get_ranks_in_group(parallel_mode) + + return ranks_in_group[(local_rank - 1) % world_size] + + def is_using_dp(self): + """Returns a boolean value indicating whether the current device is initilized with + ParallelMode.DATA and its world_size is greater than 1. + """ + return self.is_initialized(ParallelMode.DATA) and self.get_world_size(ParallelMode.DATA) > 1 + + def is_using_tp(self): + """Returns a boolean value indicating whether the current device is initilized with + ParallelMode.TENSOR and its world_size is greater than 1. + """ + return self.is_initialized(ParallelMode.TENSOR) and self.get_world_size(ParallelMode.TENSOR) > 1 + + def is_using_pp(self): + """Returns a boolean value indicating whether the current device is initilized with + ParallelMode.PIPELINE and its world_size is greater than 1. + """ + return self.is_initialized(ParallelMode.PIPELINE) and self.get_world_size(ParallelMode.PIPELINE) > 1 + + def is_using_sequence(self): + """Returns a boolean value indicating whether the current device is initilized with + ParallelMode.SEQUENCE and its world_size is greater than 1. + """ + return False + # return gpc.is_initialized(ParallelMode.SEQUENCE) and gpc.get_world_size(ParallelMode.SEQUENCE) > 1 + + def is_first_rank(self, parallel_mode: ParallelMode): + """Returns a boolean value indicating whether the current device is the first one + among its group for `parallel_mode`. + + Args: + parallel_mode: The chosen parallel mode. + + Returns: + bool: a boolean value indicating whether the current device is the first one + among its group for `parallel_mode`. + """ + rank = 0 + if self.is_initialized(parallel_mode): + rank = self.get_local_rank(parallel_mode) + return rank == 0 + + def is_rank_for_log(self): + """Returns a boolean value indicating whether the current device should print log.""" + is_log_rank = ( + self.is_first_rank(ParallelMode.DATA) + and self.is_first_rank(ParallelMode.TENSOR) + and self.is_last_rank(ParallelMode.PIPELINE) + ) + return is_log_rank + + def is_last_rank(self, parallel_mode: ParallelMode): + """Returns a boolean value indicating whether the current device is the last one + among its group for `parallel_mode`. + + Args: + parallel_mode: The chosen parallel mode. + + Returns: + bool: a boolean value indicating whether the current device is the first one + among its group for `parallel_mode`. + """ + rank = 0 + world_size = 1 + if self.is_initialized(parallel_mode): + rank = self.get_local_rank(parallel_mode) + world_size = self.get_world_size(parallel_mode) + return rank == world_size - 1 + + def is_pipeline_first_stage(self, ignore_virtual=False): + if not ignore_virtual: + if self.virtual_pipeline_parallel_size is not None and self.virtual_pipeline_parallel_rank != 0: + return False + return self.is_first_rank(ParallelMode.PIPELINE) + + def is_pipeline_last_stage(self, ignore_virtual=False): + if not ignore_virtual: + if ( + self.virtual_pipeline_parallel_size is not None + and self.virtual_pipeline_parallel_rank != self.virtual_pipeline_parallel_size - 1 + ): + return False + return self.is_last_rank(ParallelMode.PIPELINE) + + def get_world_size(self, parallel_mode: ParallelMode): + """Returns the world size for `parallel_mode`. + + Args: + parallel_mode: The chosen parallel mode. + + Returns: + int: The world size for `parallel_mode`. + """ + self._check_parallel_mode(parallel_mode) + return self._world_sizes.get(parallel_mode, 1) + + def get_group(self, parallel_mode: ParallelMode): + """Returns the group of the current device for `parallel_mode`. + + Args: + parallel_mode: The chosen parallel mode. + + Returns: + torch.distributed.ProcessGroup: The group of the current device for `parallel_mode`. + """ + self._check_parallel_mode(parallel_mode) + return self._groups[parallel_mode] + + def get_ranks_in_group(self, parallel_mode: ParallelMode): + """Returns the rank of the current device for `parallel_mode` in the group. + + Args: + parallel_mode: The chosen parallel mode. + + Returns: + int: The rank of the current device for `parallel_mode` in the group. + """ + self._check_parallel_mode(parallel_mode) + return self._ranks_in_group[parallel_mode] + + def get_cpu_group(self, parallel_mode: ParallelMode): + self._check_parallel_mode(parallel_mode) + return self._cpu_groups[parallel_mode] + + def init_global_dist(self, rank: int, world_size: int, backend: str, host: str, port: int, use_cpu: bool = False): + """Initializes the global distributed environment + + Args: + rank (int): rank for the default process group. + world_size (int): world size of the default process group. + backend (str): backend for ``torch.distributed`` + host (str): the master address for distributed training. + port (str): the master port for distributed training. + use_cpu (bool): whether to set up cpu process group. + """ + # initialize the default process group + init_method = f"tcp://[{host}]:{port}" + dist.init_process_group(rank=rank, world_size=world_size, backend=backend, init_method=init_method) + + # None will give the default global process group for pytorch dist operations + ranks = list(range(world_size)) + if use_cpu: + cpu_group = dist.new_group(ranks, backend="gloo") if dist.get_backend() != "gloo" else None + else: + cpu_group = None + self._register_dist(rank, world_size, dist.GroupMember.WORLD, cpu_group, ranks, ParallelMode.GLOBAL) + self._global_ranks[ParallelMode.GLOBAL] = rank + + def _register_dist(self, local_rank, world_size, process_group, cpu_group, ranks_in_group, mode): + self._check_parallel_mode(mode) + self._local_ranks[mode] = local_rank + self._world_sizes[mode] = world_size + self._groups[mode] = process_group + self._cpu_groups[mode] = cpu_group + self._ranks_in_group[mode] = ranks_in_group + + def check_sanity(self): + """Checks sanity of the parallel context. + + Raises: + AssertionError: Raises an AssertionError if the world size does not equal to the product + of data parallel size, pipeline parallel size and tensor parallel size. + """ + dps = self.data_parallel_size + pps = self.pipeline_parallel_size + tps = self.tensor_parallel_size + ws = self.world_size + assert ws == dps * pps * tps, ( + f"Expected the world size {ws} to be equal to data" + f" parallel size ({dps}) * pipeline parallel size " + f"({pps}) * tensor parallel size ({tps})" + ) + assert self.zero1_parallel_size > 0 + assert self.data_parallel_size % self.zero1_parallel_size == 0 + + def _set_parallel_size_from_config(self, config: dict, key: str, attr_name: str): + if key in config: + ele = config[key] + if isinstance(ele, int): + setattr(self, attr_name, ele) + elif isinstance(ele, dict): + setattr(self, attr_name, ele["size"]) + else: + raise NotImplementedError( + f'{"Parallel configuration does not support this kind of argument, please use int or dict"}' + ) + + def init_parallel_groups(self): + """Initializes the parallel groups.""" + + # get rank and world size + rank = self.get_global_rank() + world_size = self.get_world_size(ParallelMode.GLOBAL) + self.world_size = world_size + + # set parallel size as attributes for global context + parallel_config = self.config.get("parallel", None) + if parallel_config is not None: + self._set_parallel_size_from_config(parallel_config, "pipeline", "pipeline_parallel_size") + self._set_parallel_size_from_config(parallel_config, "tensor", "tensor_parallel_size") + self._set_parallel_size_from_config(parallel_config, "zero1", "zero1_parallel_size") + + # the user should not set the data parallel size manually + # instead, it should be calculated based on other parallel config + self.data_parallel_size = self.world_size // (self.pipeline_parallel_size * self.tensor_parallel_size) + + if self.zero1_parallel_size <= 0: + self.zero1_parallel_size = self.data_parallel_size + + self.check_sanity() + + initializer_args = [ + rank, + world_size, + self.data_parallel_size, + self.pipeline_parallel_size, + self.tensor_parallel_size, + self.zero1_parallel_size, + ] + + # run initialization of different process groups + initializers = [] + initializers.append(pgroup_initializer.Initializer_Data(*initializer_args)) + initializers.append(pgroup_initializer.Initializer_Model(*initializer_args)) + initializers.append(pgroup_initializer.Initializer_Tensor(*initializer_args)) + initializers.append(pgroup_initializer.Initializer_Zero1(*initializer_args)) + if self.pipeline_parallel_size > 1: + initializers.append(pgroup_initializer.Initializer_Pipeline(*initializer_args)) + + for initializer in initializers: + parallel_setting = initializer.init_dist_group() + if isinstance(parallel_setting, list): + for args in parallel_setting: + self._register_dist(*args) + else: + self._register_dist(*parallel_setting) + + def is_initialized(self, parallel_mode: ParallelMode): + """Returns a boolean value indicating whether `parallel_mode` is initialized + in the current system. + """ + return parallel_mode in self._groups + + def destroy(self): + """Destroys the current distributed parallel environment.""" + for mode, group in self._groups.items(): + if mode is not ParallelMode.GLOBAL: + dist.destroy_process_group(group) + # destroy global process group + dist.destroy_process_group() + self._groups.clear() + + def set_device(self, device_ordinal: int = None): + """Sets distributed processes to be bound to devices. + + Args: + device_ordinal (int, optional): the device id to be bound to + """ + global_rank = self.get_global_rank() + if device_ordinal is None: + devices_per_node = torch.cuda.device_count() + device_ordinal = global_rank % devices_per_node + + torch.cuda.set_device(device_ordinal) + logger.info(f"process rank {global_rank} is bound to host:{socket.gethostname()} device: {device_ordinal}") + + def set_seed(self, seed: int, dpseed_with_tpoffset: bool = False): + """Sets seeds for all random libraries. + + Args: + seed (int): seed for random states + """ + pipeline_offset = self._local_ranks.get(ParallelMode.PIPELINE, 0) + global_rank = self.get_global_rank() + + random.seed(seed) + np.random.seed(seed) + torch.manual_seed(seed) + assert torch.cuda.is_available() + + # data parallel seed are kept the same in the same pipeline stage + dp_seed = seed + if dpseed_with_tpoffset: + dp_seed = seed + pipeline_offset * 1024 + add_seed(ParallelMode.DATA, dp_seed) + + # model parallel seeds are different across ranks + if self.is_initialized(ParallelMode.TENSOR): + tp_rank = self.get_local_rank(ParallelMode.TENSOR) + tp_seed = seed + tp_rank + pipeline_offset * 1024 + add_seed(ParallelMode.TENSOR, tp_seed) + + set_mode(ParallelMode.DATA) + + seeds = get_seeds() + seed_str = ", ".join([f"{k}: {v}" for k, v in seeds.items()]) + logger.info( + f"initialized seed on rank {global_rank}, " + f"numpy: {seed}, python random: {seed}, {seed_str}," + f"the default parallel seed is {ParallelMode.DATA}." + ) + + def set_virtual_pipeline_parallel_size(self, size): + self.virtual_pipeline_parallel_size = size + + def set_virtual_pipeline_parallel_rank(self, rank): + self.virtual_pipeline_parallel_rank = rank + + +global_context = ParallelContext() diff --git a/internlm/core/context/process_group_initializer.py b/internlm/core/context/process_group_initializer.py new file mode 100644 index 0000000..56cf16d --- /dev/null +++ b/internlm/core/context/process_group_initializer.py @@ -0,0 +1,334 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +# adopted from https://github.com/hpcaitech/ColossalAI/blob/main/colossalai/context + +from abc import ABC, abstractmethod +from enum import Enum + +import torch.distributed as dist + + +# parallel modes +class ParallelMode(Enum): + """This is an enumeration class containing all possible parallel modes.""" + + GLOBAL = "global" + + # common parallel + DATA = "data" + + # model parallel - containing tensor and pipeline parallel groups + # this is added to facilitate amp and grad clipping in hybrid parallel + MODEL = "model" + + # pipeline parallel + PIPELINE = "pipe" + + # containing all ranks in tensor parallel + TENSOR = "tensor" + + # zero1 parallel + ZERO1 = "zero1" + + +class ProcessGroupInitializer(ABC): + """An object, knowing the parallelism configuration, that initializes parallel groups. + + Args: + rank (int): The rank of current process. + world_size (int): Size of whole communication world. + data_parallel_size (int): Size of data parallel. + pipeline_parallel_size (int): Size of pipeline parallel. + tensor_parallel_size (int): Size of tensor parallel. + zero1_parallel_size (int): Size of zero1 parallel. + """ + + def __init__( + self, + rank: int, + world_size: int, + data_parallel_size: int, + pipeline_parallel_size: int, + tensor_parallel_size: int, + zero1_parallel_size: int, + ): + self.rank = rank + self.world_size = world_size + self.data_parallel_size = data_parallel_size + self.pipeline_parallel_size = pipeline_parallel_size + self.tensor_parallel_size = tensor_parallel_size + self.zero1_parallel_size = zero1_parallel_size + super().__init__() + + @abstractmethod + def init_dist_group(self, use_cpu: bool = False): + pass + + +class Initializer_Data(ProcessGroupInitializer): + """A ProcessGroupInitializer for data parallelism. + + Args: + rank (int): The rank of current process. + world_size (int): Size of whole communication world. + data_parallel_size (int): Size of data parallel. + pipeline_parallel_size (int): Size of pipeline parallel. + tensor_parallel_size (int): Size of tensor parallel. + zero1_parallel_size (int): Size of zero1 parallel. + """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.rank_num_per_dp_group = self.world_size // self.data_parallel_size + + assert self.world_size % self.data_parallel_size == 0 + + def init_dist_group(self, use_cpu: bool = False): + """Initialize data parallel groups, and assign local_ranks and groups to each gpu. + + Returns: + Tuple (local_rank, group_world_size, process_group, ranks_in_group, mode): + A Data parallelism's information tuple. + """ + local_rank = None + ranks_in_group = None + process_group = None + cpu_group = None + group_world_size = None + mode = ParallelMode.DATA + + for i in range(self.rank_num_per_dp_group): + ranks = [i + j * self.rank_num_per_dp_group for j in range(self.data_parallel_size)] + group = dist.new_group(ranks) + if use_cpu: + group_cpu = dist.new_group(ranks, backend="gloo") if dist.get_backend() != "gloo" else group + else: + group_cpu = None + + if self.rank in ranks: + local_rank = ranks.index(self.rank) + group_world_size = len(ranks) + process_group = group + cpu_group = group_cpu + ranks_in_group = ranks + + return local_rank, group_world_size, process_group, cpu_group, ranks_in_group, mode + + +class Initializer_Model(ProcessGroupInitializer): + """A ProcessGroupInitializer for model parallelism (model parallel group contains pipeline and tensor parallel + groups). + + Args: + rank (int): The rank of current process. + world_size (int): Size of whole communication world. + data_parallel_size (int): Size of data parallel. + pipeline_parallel_size (int): Size of pipeline parallel. + tensor_parallel_size (int): Size of tensor parallel. + zero1_parallel_size (int): Size of zero1 parallel. + """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.rank_num_per_group = self.tensor_parallel_size * self.pipeline_parallel_size + self.num_group = self.world_size // self.rank_num_per_group + + assert self.world_size % self.rank_num_per_group == 0 + + def init_dist_group(self, use_cpu: bool = False): + """Initialize model parallel groups, and assign local_ranks and groups to each gpu. + + Returns: + Tuple (local_rank, group_world_size, process_group, ranks_in_group, mode): + A Model parallelism's information tuple. + """ + local_rank = None + ranks_in_group = None + process_group = None + cpu_group = None + group_world_size = None + mode = ParallelMode.MODEL + + for i in range(self.num_group): + ranks = [i * self.rank_num_per_group + j for j in range(self.rank_num_per_group)] + group = dist.new_group(ranks) + if use_cpu: + group_cpu = dist.new_group(ranks, backend="gloo") if dist.get_backend() != "gloo" else group + else: + group_cpu = None + + if self.rank in ranks: + local_rank = ranks.index(self.rank) + group_world_size = len(ranks) + process_group = group + cpu_group = group_cpu + ranks_in_group = ranks + + return local_rank, group_world_size, process_group, cpu_group, ranks_in_group, mode + + +class Initializer_Pipeline(ProcessGroupInitializer): + """A ProcessGroupInitializer for pipeline parallelism. + + Args: + rank (int): The rank of current process + world_size (int): Size of whole communication world + data_parallel_size (int): Size of data parallel + pipeline_parallel_size (int): Size of pipeline parallel + tensor_parallel_size (int): Size of tensor parallel + zero1_parallel_size (int): Size of zero1 parallel. + """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.rank_num_per_dp_group = self.world_size // self.data_parallel_size + self.pipeline_stage_size = self.rank_num_per_dp_group // self.pipeline_parallel_size + + assert self.world_size % self.data_parallel_size == 0 + assert self.rank_num_per_dp_group % self.pipeline_parallel_size == 0 + + def init_dist_group(self, use_cpu: bool = False): + """Initialize pipeline parallel groups, and assign local_ranks and groups to each gpu. + + Returns: + List[Tuple (local_rank, group_world_size, process_group, ranks_in_group, mode)]: + A Pipeline parallelism's information in list of tuples. + """ + local_rank = None + ranks_in_group = None + process_group = None + cpu_group = None + group_world_size = None + mode = ParallelMode.PIPELINE + + for i in range(self.data_parallel_size): + for j in range(self.pipeline_stage_size): + ranks = list( + range( + i * self.rank_num_per_dp_group + j, + (i + 1) * self.rank_num_per_dp_group, + self.pipeline_stage_size, + ) + ) + pipe_group_size = len(ranks) + pipe_group = dist.new_group(ranks) + if use_cpu: + group_cpu = dist.new_group(ranks, backend="gloo") if dist.get_backend() != "gloo" else pipe_group + else: + group_cpu = None + + if self.rank in ranks: + local_rank = ranks.index(self.rank) + group_world_size = pipe_group_size + process_group = pipe_group + cpu_group = group_cpu + ranks_in_group = ranks + + return local_rank, group_world_size, process_group, cpu_group, ranks_in_group, mode + + +class Initializer_Tensor(ProcessGroupInitializer): + """A ProcessGroupInitializer for tensor parallelism. + + Args: + rank (int): The rank of current process. + world_size (int): Size of whole communication world. + data_parallel_size (int): Size of data parallel. + pipeline_parallel_size (int): Size of pipeline parallel. + tensor_parallel_size (int): Size of tensor parallel. + zero1_parallel_size (int): Size of zero1 parallel. + """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.num_tensor_parallel_group = self.world_size // self.tensor_parallel_size + + assert self.world_size % self.tensor_parallel_size == 0 + + def init_dist_group(self, use_cpu: bool = False): + """Initialize tensor parallel groups, and assign local_ranks and groups to each gpu. + + Returns: + Tuple (local_rank, group_world_size, process_group, ranks_in_group, mode): + A Tensor parallelism's information tuple. + """ + local_rank = None + ranks_in_group = None + process_group = None + cpu_group = None + group_world_size = None + mode = ParallelMode.TENSOR + + for i in range(self.num_tensor_parallel_group): + ranks = [i * self.tensor_parallel_size + j for j in range(self.tensor_parallel_size)] + group = dist.new_group(ranks) + if use_cpu: + group_cpu = dist.new_group(ranks, backend="gloo") if dist.get_backend() != "gloo" else group + else: + group_cpu = None + + if self.rank in ranks: + local_rank = ranks.index(self.rank) + group_world_size = len(ranks) + process_group = group + cpu_group = group_cpu + ranks_in_group = ranks + + return local_rank, group_world_size, process_group, cpu_group, ranks_in_group, mode + + +class Initializer_Zero1(ProcessGroupInitializer): + """A ProcessGroupInitializer for zero-1 parallelism. + + Args: + rank (int): The rank of current process. + world_size (int): Size of whole communication world. + data_parallel_size (int): Size of data parallel. + pipeline_parallel_size (int): Size of pipeline parallel. + tensor_parallel_size (int): Size of tensor parallel. + zero1_parallel_size (int): Size of zero-1 parallel. + """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.rank_num_per_dp_group = self.world_size // self.data_parallel_size + self.num_zero1_parallel_group = self.data_parallel_size // self.zero1_parallel_size + + assert self.world_size % self.data_parallel_size == 0 + assert self.world_size % self.zero1_parallel_size == 0 + + def init_dist_group(self, use_cpu: bool = False): + """Initialize zero1 parallel groups, and assign local_ranks and groups to each gpu. + + Returns: + Tuple (local_rank, group_world_size, process_group, ranks_in_group, mode): + A zero1 parallelism's information tuple. + """ + local_rank = None + ranks_in_group = None + process_group = None + cpu_group = None + group_world_size = None + mode = ParallelMode.ZERO1 + + for i in range(self.rank_num_per_dp_group): + for j in range(self.num_zero1_parallel_group): + ranks = [ + i + (j * self.zero1_parallel_size + k) * self.rank_num_per_dp_group + for k in range(self.zero1_parallel_size) + ] + group = dist.new_group(ranks) + if use_cpu: + group_cpu = dist.new_group(ranks, backend="gloo") if dist.get_backend() != "gloo" else group + else: + group_cpu = None + + if self.rank in ranks: + local_rank = ranks.index(self.rank) + group_world_size = len(ranks) + process_group = group + cpu_group = group_cpu + ranks_in_group = ranks + + return local_rank, group_world_size, process_group, cpu_group, ranks_in_group, mode diff --git a/internlm/core/context/random.py b/internlm/core/context/random.py new file mode 100644 index 0000000..b2c0a1d --- /dev/null +++ b/internlm/core/context/random.py @@ -0,0 +1,131 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- +# adopted from https://github.com/hpcaitech/ColossalAI/blob/main/colossalai/context + +from contextlib import contextmanager + +import torch +import torch.cuda +from torch import Tensor + +from .process_group_initializer import ParallelMode + + +class SeedManager: + """This class is a manager of all random seeds involved in the system.""" + + def __init__(self): + self._current_mode = None + self._seeds = {} + self._seed_states = {} + + @property + def current_mode(self): + return self._current_mode + + @property + def seeds(self): + return self._seeds + + @property + def seed_states(self): + return self._seed_states + + def set_state(self, parallel_mode: ParallelMode, state: Tensor): + """Sets the state of the seed manager for `parallel_mode`.""" + assert parallel_mode in self._seed_states, f"{parallel_mode} not found in seed manager" + self._seed_states[parallel_mode] = state + + def set_mode(self, parallel_mode: ParallelMode): + """Sets the current mode of the seed manager.""" + if self.current_mode: + # save state for current mode + self._seed_states[self._current_mode] = torch.cuda.get_rng_state() + + # set new state for new mode + self._current_mode = parallel_mode + torch.cuda.set_rng_state(self._seed_states[parallel_mode]) + + def add_seed(self, parallel_mode: ParallelMode, seed: int, overwrite: bool = False): + """Adds a seed to the seed manager for `parallel_mode`.""" + assert isinstance(parallel_mode, ParallelMode), "Invalid ParallelMode" + if not overwrite: + assert parallel_mode not in self._seed_states, f"Seed for {parallel_mode} exists" + elif parallel_mode in self._seed_states: + print(f"Warning: {parallel_mode} seed overwritten.", flush=True) + + current_state = torch.cuda.get_rng_state() + torch.cuda.manual_seed(seed) + self._seed_states[parallel_mode] = torch.cuda.get_rng_state() + self._seeds[parallel_mode] = seed + torch.cuda.set_rng_state(current_state) + + def reset(self): + self._current_mode = None + self._seeds = {} + self._seed_states = {} + + +_SEED_MANAGER = SeedManager() + + +def get_seeds(): + """Returns the seeds of the seed manager. + Returns: + dict: The seeds of the seed manager. + """ + return _SEED_MANAGER.seeds + + +def get_states(copy=False): + """Returns the seed states of the seed manager. + Returns: + dict: The seed states of the seed manager. + """ + states = _SEED_MANAGER.seed_states + if copy: + new_states = dict() + for parallel_mode, state in states.items(): + new_states[parallel_mode] = state.clone() + return new_states + else: + return _SEED_MANAGER.seed_states + + +def get_current_mode(): + """Returns the current mode of the seed manager. + Returns: + :class:`torch.ByteTensor`: The current mode of the seed manager. + """ + return _SEED_MANAGER.current_mode + + +def add_seed(parallel_mode: ParallelMode, seed: int, overwrite: bool = False): + """Adds a seed to the seed manager for `parallel_mode`.""" + _SEED_MANAGER.add_seed(parallel_mode, seed, overwrite) + + +def set_mode(parallel_mode: ParallelMode): + """Sets the current mode of the seed manager.""" + _SEED_MANAGER.set_mode(parallel_mode) + + +def set_seed_states(parallel_mode: ParallelMode, state: Tensor): + """Sets the state of the seed manager for `parallel_mode`.""" + _SEED_MANAGER.set_state(parallel_mode, state) + + +def sync_states(): + current_mode = get_current_mode() + current_states = torch.cuda.get_rng_state() + set_seed_states(current_mode, current_states) + + +@contextmanager +def seed(parallel_mode: ParallelMode): + """A context for seed switch""" + current_mode = _SEED_MANAGER.current_mode + try: + yield _SEED_MANAGER.set_mode(parallel_mode) + finally: + _SEED_MANAGER.set_mode(current_mode) diff --git a/internlm/core/engine.py b/internlm/core/engine.py new file mode 100644 index 0000000..a372b9e --- /dev/null +++ b/internlm/core/engine.py @@ -0,0 +1,190 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +# adopted from https://github.com/hpcaitech/ColossalAI/blob/main/colossalai/engine + +from typing import List, Optional + +import torch +from torch.nn import Module +from torch.nn.modules.loss import _Loss +from torch.optim.lr_scheduler import _LRScheduler + +from internlm.core.gradient_handler import BaseGradientHandler +from internlm.solver.beta2_scheduler import Beta2Scheduler +from internlm.solver.optimizer.hybrid_zero_optim import BaseOptimizer +from internlm.utils.common import get_batch_size, move_to_device + + +class Engine: + """ + The Engine class is responsible for managing the training and evaluation process of a neural network model. + It handles the forward and backward passes, parameter updates, gradient handling, and mode switching between + training and evaluation. + + Args: + model (torch.nn.Module): The neural network model to be trained or evaluated. + optimizer (BaseOptimizer): The optimizer used for updating the parameters of the model. + lr_scheduler (torch.optim.lr_scheduler._LRScheduler, optional): The learning rate scheduler for the optimizer. + Default is None. + beta2_scheduler (internlm.solver.beta2_scheduler.Beta2Scheduler, optional): The beta2 scheduler for the + optimizer. Default is None. + criterion (torch.nn.modules.loss._Loss, optional): The loss function used for calculating the loss during + training. Default is None. + gradient_handlers (List[BaseGradientHandler], optional): A list of gradient handlers used in the backward pass. + Default is None. + clip_grad_norm (float, optional): The norm value for gradient clipping. Default is 0.0. + + Examples: + >>> # define model, criterion, optimizer, lr_scheduler, train_dataloader for your training + >>> model = ... + >>> criterion = ... + >>> optimizer = ... + >>> train_dataloader = ... + >>> engine, _, _, _ = internlm.initialize_engine(model, optimizer, criterion) + >>> engine.train() + >>> for inputs, labels in train_dataloader + >>> # set gradients to zero + >>> engine.zero_grad() + >>> # run forward pass + >>> outputs = engine(inputs) + >>> # compute loss value and run backward pass + >>> loss = engine.criterion(outputs, labels) + >>> engine.backward(loss) + >>> # update parameters + >>> engine.step() + """ + + def __init__( + self, + model: Module, + optimizer: BaseOptimizer, + lr_scheduler: Optional[_LRScheduler] = None, + beta2_scheduler: Optional[Beta2Scheduler] = None, + criterion: Optional[_Loss] = None, + gradient_handlers: Optional[List[BaseGradientHandler]] = None, + clip_grad_norm: float = 0.0, + ): + self._model = model + self._optimizer = optimizer + self._lr_scheduler = lr_scheduler + self._beta2_scheduler = beta2_scheduler + self._criterion = criterion + self._clip_grad_norm = clip_grad_norm + + # state + self.training = True # default + + # build gradient handler + self._gradient_handlers = gradient_handlers if gradient_handlers else [] + + @property + def model(self): + """Returns the model attached to the engine.""" + return self._model + + @property + def optimizer(self): + """Returns the optimizer attached to the engine.""" + return self._optimizer + + @property + def criterion(self): + """Returns the criterion (loss function) attached to the engine.""" + return self._criterion + + def _all_reduce_gradients(self): + """Handles all-reduce operations of gradients across different parallel groups.""" + for handler in self._gradient_handlers: + handler.handle_gradient() + + def zero_grad(self): + """Sets the gradient of all parameters in the model to zero.""" + self.optimizer.zero_grad() + + def step(self): + """ + Executes the parameter update step. This includes all-reduce operations of gradients, gradient clipping, + and parameter update. If successful, it also steps the learning rate scheduler and beta2 scheduler + if they exist. + + Returns: + success (bool): Whether the parameter update was successful. + grad_norm (float): The norm of the gradient after clipping. + """ + self._all_reduce_gradients() + self.optimizer.clip_grad_norm(self.model, self._clip_grad_norm) + + success, grad_norm = self.optimizer.step() + + if success and self._lr_scheduler is not None: + self._lr_scheduler.step() + + if success and self._beta2_scheduler is not None: + self._beta2_scheduler.step() + + return success, grad_norm + + def train(self): + """Sets the model to training mode.""" + self.training = True + self._model.train() + + def eval(self): + """Sets the model to evaluation mode.""" + self.training = False + self._model.eval() + + def backward(self, loss: torch.Tensor): + """ + Starts the backward propagation given the loss value computed by a loss function. + + Args: + loss (torch.Tensor): The loss value computed by a loss function. + """ + return self.optimizer.backward(loss) + + def backward_by_grad(self, tensor, grad): + """ + Starts the backward propagation given the gradient of the output tensor. + + Args: + tensor (torch.Tensor): The output tensor. + grad (torch.Tensor): The gradient passed back to the output tensor. + """ + return self.optimizer.backward_by_grad(tensor, grad) + + def __call__(self, *args, **kwargs): + """ + Runs the forward step for the model. + + Returns: + torch.Tensor: The output of the model. + """ + return self.model(*args, **kwargs) + + def load_batch(self, data_iter, to_gpu=True): + """ + Loads a batch from the data iterator. It returns the data and labels which are + already in the same GPU as where the model is. + + Args: + data_iter (Iterable): The data iterator from which to get a batch of data, obtained by calling + iter(dataloader). + to_gpu (bool, optional): Whether the data should be moved to the GPU. Default is True. + + Returns: + Tuple (torch.Tensor, torch.Tensor): A tuple of (data, label). + """ + if data_iter is None: + raise RuntimeError("Dataloader is not defined.") + try: + batch_data = next(data_iter) + except TypeError: + batch_data = data_iter + + if to_gpu: + batch_data = move_to_device(batch_data) + batch_size = get_batch_size(batch_data) + + return batch_data, batch_size diff --git a/internlm/core/gradient_handler.py b/internlm/core/gradient_handler.py new file mode 100644 index 0000000..f2aaa1d --- /dev/null +++ b/internlm/core/gradient_handler.py @@ -0,0 +1,76 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from abc import ABC, abstractmethod +from collections import defaultdict + +import torch +import torch.distributed as dist +from torch._utils import _flatten_dense_tensors, _unflatten_dense_tensors + +from internlm.core.context import global_context as gpc + + +class BaseGradientHandler(ABC): + """A basic helper class to handle all-reduce operations of gradients across different parallel groups + before optimization. + + Args: + model (Module): Model where the gradients accumulate. + optimizer (Optimizer): Optimizer for updating the parameters. + """ + + def __init__(self, model, optimizer): + self._model = model + self._optimizer = optimizer + + @abstractmethod + def handle_gradient(self): + """A method to accumulate gradients across different parallel groups. Users should + write their own functions or just use the functions in pre-defined subclasses. + """ + pass + + +class PipelineSharedModuleGradientHandler(BaseGradientHandler): + """A helper class to handle all-reduce operations in sub parallel groups. + A all-reduce collective communication will be operated in + :func:`handle_gradient` among all sub pipeline parallel groups. + For better performance, it bucketizes the gradients of all parameters that are + the same type to improve the efficiency of communication. + + Args: + model (Module): Model where the gradients accumulate. + optimizer (Optimizer): Optimizer for updating the parameters. + """ + + def handle_gradient(self): + """A method running a all-reduce operation in sub pipeline parallel groups.""" + if gpc.pipeline_parallel_size > 1: + # bucketize and all-reduce + buckets = defaultdict(lambda: defaultdict(list)) + # Pack the buckets. + for param in self._model.parameters(): + group = getattr(param, "pipeline_shared_module_pg", None) + if ( + param.requires_grad + and group is not None + and ( + (hasattr(param, "colo_attr") and not param.colo_attr.saved_grad.is_null()) + or param.grad is not None + ) + ): + tp = param.data.type() + buckets[group][tp].append(param) + + # For each bucket, all-reduce and copy all-reduced grads. + for group, group_buckets in buckets.items(): + for tp, bucket in group_buckets.items(): + grads = [ + param.colo_attr.grad_payload if hasattr(param, "colo_attr") else param.grad.data + for param in bucket + ] + coalesced = _flatten_dense_tensors(grads).to(torch.cuda.current_device()) + dist.all_reduce(coalesced, op=dist.ReduceOp.SUM, group=group) + for buf, synced in zip(grads, _unflatten_dense_tensors(coalesced, grads)): + buf.copy_(synced) diff --git a/internlm/core/naive_amp.py b/internlm/core/naive_amp.py new file mode 100644 index 0000000..845a984 --- /dev/null +++ b/internlm/core/naive_amp.py @@ -0,0 +1,130 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +# adopted from https://github.com/hpcaitech/ColossalAI/tree/main/colossalai/amp + +from typing import Any + +import torch +import torch.distributed as dist +from torch import Tensor, nn +from torch._utils import _flatten_dense_tensors, _unflatten_dense_tensors +from torch.distributed import ReduceOp + +from internlm.core.context import ParallelMode +from internlm.core.context.parallel_context import global_context as gpc + + +class NaiveAMPModel(nn.Module): + """ + This is a wrapper class for a model that automatically casts the model, its inputs, and outputs into fp16. + It also provides options to cast the output back to fp32 and to synchronize buffers. + + Args: + model (torch.nn.Module): The model to be wrapped and cast into fp16. + output_to_fp32 (bool, optional): If True, the output of this module is cast into fp32. Defaults to True. + parallel_mode (:class:`internlm.core.context.ParallelMode`): The parallel group mode used in this module. + Defaults to ``ParallelMode.DATA``. + sync_buffer (bool, optional): If True, the buffers are synchronized. Defaults to True. + """ + + def __init__( + self, + model: nn.Module, + output_to_fp32: bool = True, + parallel_mode: ParallelMode = ParallelMode.DATA, + sync_buffer: bool = True, + dtype=torch.float16, + ): + super().__init__() + self.model = model.to(dtype) + self._output_to_fp32 = output_to_fp32 + self._sync_buf = sync_buffer + self.dtype = dtype + + if gpc.is_initialized(parallel_mode) and gpc.get_world_size(parallel_mode) > 1: + self._process_group = gpc.get_group(parallel_mode) + self._world_size = gpc.get_world_size(parallel_mode) + else: + self._process_group = None + self._world_size = 1 + self._sync_buf = False + self._first_eval_run = False + + @property + def sync_buffer(self): + """Returns the current state of the buffer synchronization.""" + return self._sync_buf + + @sync_buffer.setter + def sync_buffer(self, state: bool): + """Sets the state of the buffer synchronization.""" + self._sync_buf = state + + def _convert_to_fp16(self, input_: Any): + """Converts the input to fp16 if it is a Tensor of dtype float32.""" + if isinstance(input_, Tensor) and input_.dtype == torch.float32: + input_ = input_.to(self.dtype) + return input_ + + def _convert_to_fp32(self, input_: Any): + """Converts the input to fp32 if it is a Tensor of dtype float16.""" + if isinstance(input_, Tensor) and input_.dtype == torch.float16: + input_ = input_.float() + return input_ + + def _reduce_module_buffer(self): + """ + All-reduces the buffers (e.g., running stats of batch normalization) across + data parallel ranks so that all the ranks will produce consistent results + when given the same input. + """ + buf_list = [] + + # find valid buffers + for buf in self.model.buffers(): + if buf is not None: + buf_list.append(buf) + + # reduce buffers across data parallel ranks + if buf_list: + coalesced_buf = _flatten_dense_tensors(buf_list) + coalesced_buf.div_(self._world_size) + dist.all_reduce(coalesced_buf, op=ReduceOp.SUM, group=self._process_group) + unflattened_buf_list = _unflatten_dense_tensors(coalesced_buf, buf_list) + for old, new in zip(buf_list, unflattened_buf_list): + old.copy_(new) + + def eval(self): + """Sets the model to evaluation mode. Buffers are only synchronized in the first eval iteration.""" + self.model.eval() + self._first_eval_run = True + + def forward(self, *args, **kwargs): + """ + Performs a forward pass on the model. Buffers are synchronized before the forward pass. + The inputs are converted to fp16 and the outputs are optionally converted back to fp32. + """ + if (self.training or self._first_eval_run) and self._sync_buf: + with torch.no_grad(): + self._reduce_module_buffer() + + if self._first_eval_run: + self._first_eval_run = False + + if args: + args = [self._convert_to_fp16(arg) for arg in args] + if kwargs: + for k, v in kwargs.items(): + kwargs[k] = self._convert_to_fp16(v) + + out = self.model(*args, **kwargs) + + if self._output_to_fp32: + if isinstance(out, Tensor): + out = self._convert_to_fp32(out) + elif isinstance(out, (tuple, list)): + out = [self._convert_to_fp32(val) for val in out] + elif isinstance(out, dict): + out = {key: self._convert_to_fp32(val) for key, val in out.items()} + return out diff --git a/internlm/core/no_pipeline_scheduler.py b/internlm/core/no_pipeline_scheduler.py new file mode 100644 index 0000000..6cd8416 --- /dev/null +++ b/internlm/core/no_pipeline_scheduler.py @@ -0,0 +1,279 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +# adopted from https://github.com/hpcaitech/ColossalAI/blob/main/colossalai/engine +import inspect +from abc import ABC, abstractmethod +from typing import Any, Callable, Iterable + +import torch + +from internlm.core.engine import Engine +from internlm.utils.common import conditional_context + + +class BaseScheduler(ABC): + """A basic helper class to control the process of training or evaluation. + It mainly composes of forward_backward_step for gradient backward and + optimizer_step for parameters update. + For the convenience to enable FP16, we aggregate all codes that contain the + control of FP16 in class schedule. + + Args: + data_process_func (Callable, optional): The preprocessing function which receives a batch of data and arranges + them into data and label. + """ + + def __init__(self, data_process_func: Callable = None): + self.data_process_func = data_process_func + + @abstractmethod + def pre_processing(self, engine: Engine): + """To perform actions before running the schedule. + + Args: + engine (internlm.core.Engine): InternLM engine for training and inference. + """ + pass + + @abstractmethod + def forward_backward_step( + self, + engine: Engine, + data_iter: Iterable, + forward_only: bool, + return_loss: bool = True, + return_output_label: bool = True, + ): + """The process function over a batch of dataset for training or evaluation. + + Args: + engine (internlm.core.Engine): InternLM engine for training and inference. + data_iter (Iterable): Data iterator from which get a batch of data, obtained by calling iter(dataloader). + forward_only (bool): If True, the process won't include backward. + return_loss (bool, optional): If False, the loss won't be returned. + return_output_label (bool, optional): If False, the output and label won't be returned. + """ + pass + + @staticmethod + def _call_engine(engine: Engine, inputs: Any): + """Calls the engine with the given inputs. + + Args: + engine (internlm.core.Engine): InternLM engine for training and inference. + inputs (Any): The inputs to the engine, can be of type torch.Tensor, list, tuple, or dict. + """ + if isinstance(inputs, torch.Tensor): + return engine(inputs) + elif isinstance(inputs, (list, tuple)): + return engine(*inputs) + elif isinstance(inputs, dict): + return engine(**inputs) + else: + raise TypeError( + f"Expected engine inputs to be of type torch.Tensor, list, tuple, or dict, but got {type(inputs)}" + ) + + @staticmethod + def _call_engine_criterion(engine: Engine, outputs: Any, labels: Any): + """Calls the engine's criterion with the given outputs and labels. + + Args: + engine (internlm.core.Engine): InternLM engine for training and inference. + outputs (Any): The outputs from the model, can be of type torch.Tensor, list, tuple, or dict. + labels (Any): The labels for the outputs, can be of type torch.Tensor, list, tuple, or dict. + """ + assert isinstance( + outputs, (torch.Tensor, list, tuple, dict) + ), f"Expect output of model is (torch.Tensor, list, tuple), got {type(outputs)}" + if isinstance(outputs, torch.Tensor): + outputs = (outputs,) + if isinstance(labels, torch.Tensor): + labels = (labels,) + + if isinstance(outputs, (tuple, list)) and isinstance(labels, (tuple, list)): + return engine.criterion(*outputs, *labels) + elif isinstance(outputs, (tuple, list)) and isinstance(labels, dict): + return engine.criterion(*outputs, **labels) + elif isinstance(outputs, dict) and isinstance(labels, dict): + return engine.criterion(**outputs, **labels) + elif isinstance(outputs, dict) and isinstance(labels, (list, tuple)): + raise ValueError(f"Expected labels to be a dict when the model outputs are dict, but got {type(labels)}") + else: + raise TypeError( + f"Expected model outputs and labels to be of type torch.Tensor ' \ + '(which is auto-converted to tuple), list, tuple, or dict, ' \ + 'but got {type(outputs)} (model outputs) and {type(labels)} (labels)" + ) + + +class NonPipelineScheduler(BaseScheduler): + """A helper schedule class for no pipeline parallelism running environment. + During one process, it loads a batch of dataset and feeds it to the model. + After getting the output and calculating the loss, it will use :meth:`step` + to update the parameters if it is in training mode. + + Args: + data_process_func (Callable, optional): The preprocessing function which receives a batch of data + and returns a tuple in the form of (data, label), and it will be executed in load_batch. + gradient_accumulation_steps(int, optional): the steps of gradient accumulation, 1 for disable + gradient accumulation. + + Example: + # this shows an example of customized data_process_func + def data_process_func(dataloader_output): + item1, item2, item3 = dataloader_output + data = (item1, item2) + label = item3 + return data, label + """ + + def __init__(self, data_process_func: Callable = None, gradient_accumulation_size: int = 1): + # check that non-pipeline schedule data process func only takes in one parameter + # which is the batch data + if data_process_func: + sig = inspect.signature(data_process_func) + assert len(sig.parameters) == 1, ( + "The data_process_func only takes in one parameter for NonPipelineSchedule, " + "which is a tuple of tensors for the current batch, " + "i.e. data_process_func(dataloader_output)." + ) + + self._grad_accum_size = gradient_accumulation_size + self._grad_accum_batch_size = 1 # static batch size for flash attetion. + self._grad_accum_offset = 0 + + super().__init__(data_process_func) + + def pre_processing(self, engine: Engine): + """Performs actions before running the schedule. + + Args: + engine (internlm.core.Engine): InternLM engine for training and inference. + """ + pass + + def _load_accum_batch(self, data: Any, label: Any): + """Loads a batch of data and label for gradient accumulation. + + Args: + data (Any): The data to be loaded. + label (Any): The label to be loaded. + """ + _data = { + k: v[self._grad_accum_offset : self._grad_accum_offset + self._grad_accum_batch_size] + for k, v in data.items() + } + _label = label[self._grad_accum_offset : self._grad_accum_offset + self._grad_accum_batch_size] + + self._grad_accum_offset += self._grad_accum_batch_size + + return _data, _label + + def _train_one_batch( + self, + data: Any, + label: Any, + engine: Engine, + forward_only: bool = False, + return_loss: bool = True, + scale_loss: int = 1, + ): + """Trains one batch of data. + + Args: + data (Any): The data to be trained. + label (Any): The label for the data. + engine (internlm.core.Engine): InternLM engine for training and inference. + forward_only (bool, optional): If True, the model is run for the forward pass, else back propagation will + be executed. + return_loss (bool, optional): Loss will be returned if True. + scale_loss (int, optional): The scale factor for the loss. + """ + + # forward + with conditional_context(torch.no_grad(), enable=forward_only): + output = self._call_engine(engine, data) + + if return_loss: + loss = self._call_engine_criterion(engine, output, label) + loss /= scale_loss + + # backward + if not forward_only: + engine.backward(loss) + + if not return_loss: + loss = None + + return output, loss + + def forward_backward_step( + self, + engine: Engine, + data_iter: Iterable, + forward_only: bool = False, + return_loss: bool = True, + return_output_label: bool = True, + ): + """The process function that loads a batch of dataset and feeds it to the model. + The returned labels and loss will None if :attr:`return_loss` is False. + + Args: + engine (internlm.core.Engine): InternLM engine for training and inference. + data_iter (Iterable): Dataloader as the form of an iterator, obtained by calling iter(dataloader). + forward_only (bool, optional): + If True, the model is run for the forward pass, else back propagation will be executed. + return_loss (bool, optional): Loss will be returned if True. + return_output_label (bool, optional): Output and label will be returned if True. + + Returns: + Tuple[:class:`torch.Tensor`]: A tuple of (output, label, loss), loss and label could be None. + """ + assert ( + forward_only or return_loss + ), "The argument 'return_loss' has to be True when 'forward_only' is False, but got False." + + batch_data, batch_size = engine.load_batch(data_iter) + + assert ( + batch_size == self._grad_accum_size + ), f"batch_size:{batch_size} must be equal to gradient accumulation steps:{self._grad_accum_size}" + + if self.data_process_func: + data, label = self.data_process_func(batch_data) + else: + # if not batch data process func is given, + # then we regard the batch data as a simple tuple of (data, label) + data, label = batch_data + + loss = 0 if return_loss else None + outputs = [] + labels = [] + + # reset accumulation microbatch offset + self._grad_accum_offset = 0 + + for _current_accum_step in range(self._grad_accum_size): + if _current_accum_step == self._grad_accum_size - 1: + engine.optimizer.skip_grad_reduce = False + else: + engine.optimizer.skip_grad_reduce = True + + _data, _label = self._load_accum_batch(data, label) + + _output, _loss = self._train_one_batch( + _data, _label, engine, forward_only, return_loss, self._grad_accum_size + ) + + if return_loss: + loss += _loss + + outputs.append(_output) + labels.append(_label) + + if not return_output_label: + outputs, labels = None, None + + return outputs, labels, loss diff --git a/internlm/core/trainer.py b/internlm/core/trainer.py new file mode 100644 index 0000000..a10d03e --- /dev/null +++ b/internlm/core/trainer.py @@ -0,0 +1,155 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +# adopted from https://github.com/hpcaitech/ColossalAI/blob/main/colossalai/engine + +import json +from typing import Iterable, Optional + +from internlm.core.engine import Engine +from internlm.core.no_pipeline_scheduler import BaseScheduler, NonPipelineScheduler + + +class TrainState: + """ + The TrainState class is used to record the current state of training. + + Args: + train_dl (DataLoader): The DataLoader object used for training. + """ + + def __init__(self, config) -> None: + # The number of batches produced by the data iterator + self.batch_count: int = 0 + # Used to store the number of samples consumed in the current epoch + self.num_consumed_samples_in_epoch: int = 0 + # Total number of tokens consumed + self.num_consumed_tokens: int = 0 + # Number of batches skipped due to inf or nan values + self.inf_nan_skip_batches: int = 0 + # Records the number of updates, skipped batches and inf batches are not counted + self.step_count: int = 0 + + # Total step count + self.total_steps: int = config.data.total_steps + + def init_batch_sampler(self, train_dl): + # Copy of the batch sampler from the DataLoader + self.batch_sampler = train_dl.batch_sampler.copy() + # Iterator for the batch sampler + self.batch_sampler_iter = iter(self.batch_sampler) + + def __str__(self) -> str: + """Returns a string representation of the training state in JSON format.""" + info = { + "batch_count": self.batch_count, + "num_consumed_samples_in_epoch": self.num_consumed_samples_in_epoch, + "num_consumed_tokens": self.num_consumed_tokens, + "inf_nan_skip_batches": self.inf_nan_skip_batches, + "step_count": self.step_count, + } + + return json.dumps(info, indent=4, sort_keys=True) + + def load_state_dict(self, other_stuffs, train_dl): + """ + Resumes training from a checkpoint. + + Args: + other_stuffs (dict): Other information needed to resume training. + train_dl (DataLoader): The DataLoader object used for training. + """ + + self.batch_count = other_stuffs["batch_count"] + 1 # here you need to shift a batch backward + self.num_consumed_samples_in_epoch = other_stuffs["num_consumed_samples_in_epoch"] + self.num_consumed_tokens = other_stuffs["num_consumed_tokens"] + self.inf_nan_skip_batches = other_stuffs["inf_nan_skip_batches"] + # compatible with previous checkpoints without this parameter + self.step_count = other_stuffs.get("step_count", other_stuffs["batch_count"]) + 1 + + # track the actual updates of sampler when using weighted sampling + self.batch_sampler = train_dl.batch_sampler.copy() + self.batch_sampler_iter = iter(self.batch_sampler) + + def state_dict(self): + return { + "batch_count": self.batch_count, + "num_consumed_samples_in_epoch": self.num_consumed_samples_in_epoch, + "num_consumed_tokens": self.num_consumed_tokens, + "inf_nan_skip_batches": self.inf_nan_skip_batches, + "step_count": self.step_count, + } + + +class Trainer: + """This is a class tending for easy deployments of users' training and evaluation instead of + writing their own scripts. + + Args: + engine (:class:`Engine`): Engine responsible for the process function. + schedule (:class:`BaseScheduler`, optional): Runtime schedule. Defaults to None. + """ + + def __init__( + self, + engine: Engine, + schedule: Optional[BaseScheduler] = None, + ): + """Initializes the Trainer class. + + Args: + engine (Engine): The engine responsible for the process function. + schedule (Optional[BaseScheduler], optional): The runtime schedule. Defaults to None. + """ + self._engine = engine + + # build schedule + if schedule is None: + self._schedule = NonPipelineScheduler() + else: + assert isinstance( + schedule, BaseScheduler + ), f"expected schedule to be of type BaseSchedule, but got {type(schedule)}" + self._schedule = schedule + + if self.uses_pipeline: + self._schedule.pre_processing(self) + + @property + def engine(self): + return self._engine + + @property + def schedule(self): + return self._schedule + + @property + def uses_pipeline(self): + """Returns whether the pipeline parallel is used or not.""" + return False + + def train(self): + self._engine.train() + + def eval(self): + self._engine.eval() + + def zero_grad(self): + self._engine.zero_grad() + + def step(self): + return self._engine.step() + + def execute_schedule(self, data_iter: Iterable, **kwargs): + """Runs the forward, loss computation, and backward for the model. + Returns a tuple of (output, label, loss). + + Args: + data_iter (Iterable): The data iterator. + **kwargs: Additional keyword arguments. + + Returns: + Tuple[:class:`torch.Tensor`]: A tuple of (output, label, loss). + """ + output, label, loss = self._schedule.forward_backward_step(self._engine, data_iter, **kwargs) + return output, label, loss diff --git a/internlm/data/__init__.py b/internlm/data/__init__.py new file mode 100644 index 0000000..23eb3ab --- /dev/null +++ b/internlm/data/__init__.py @@ -0,0 +1,13 @@ +from .batch_sampler import get_dpsampler_dataloader +from .collaters import jsonl_ds_collate_fn, packed_collate_fn +from .dummy_dataset import RandomDataset +from .packed_dataset import PackedDataset, PackedDatasetWithoutCuSeqlen + +__all__ = [ + "jsonl_ds_collate_fn", + "packed_collate_fn", + "RandomDataset", + "PackedDataset", + "PackedDatasetWithoutCuSeqlen", + "get_dpsampler_dataloader", +] diff --git a/internlm/data/batch_sampler.py b/internlm/data/batch_sampler.py new file mode 100644 index 0000000..1ee4126 --- /dev/null +++ b/internlm/data/batch_sampler.py @@ -0,0 +1,359 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import math +import random +from typing import Iterator, TypeVar + +import numpy as np +import torch +from torch.utils.data import DataLoader, Dataset, Sampler + +from internlm.core.context import ParallelMode +from internlm.core.context import global_context as gpc +from internlm.utils.logger import get_logger + +logger = get_logger(__file__) + +T_co = TypeVar("T_co", covariant=True) + + +class DataParallelSampler(Sampler): + """A data sampler for distributed data parallelism. + + Args: + dataset (:class:`torch.utils.data.Dataset`): The Dataset for sampling. + shuffle (bool, optional): Whether to shuffle data, defaults to False. + seed (int, optional): The random seed used for sampling, defaults to 0. + drop_last (bool, optional): Set to True to drop the last incomplete batch, if the dataset size + is not divisible by the batch size. If False and the size of dataset is not divisible by + the batch size, then the last batch will be smaller, defaults to False. + """ + + def __init__( + self, + dataset: Dataset, + shuffle: bool = False, + seed: int = 0, + drop_last: bool = False, + ) -> None: + self.dataset = dataset + self.num_replicas = gpc.get_world_size(ParallelMode.DATA) + self.rank = gpc.get_local_rank(ParallelMode.DATA) + self.epoch = 0 + self.drop_last = drop_last + # If the dataset length is evenly divisible by # of replicas, then there + # is no need to drop any data, since the dataset will be split equally. + # type: ignore[arg-type] + if self.drop_last and len(self.dataset) % self.num_replicas != 0: + # Split to nearest available length that is evenly divisible. + # This is to ensure each rank receives the same amount of data when + # using this Sampler. + self.num_samples = math.ceil( + # `type:ignore` is required because Dataset cannot provide a default __len__ + # see NOTE in pytorch/torch/utils/data/sampler.py + (len(self.dataset) - self.num_replicas) + / self.num_replicas # type: ignore[arg-type] + ) + else: + self.num_samples = math.ceil(len(self.dataset) / self.num_replicas) # type: ignore[arg-type] + self.total_size = self.num_samples * self.num_replicas + self.shuffle = shuffle + self.seed = seed + + def __iter__(self) -> Iterator[T_co]: + if self.shuffle: + # deterministically shuffle based on epoch and seed + g = torch.Generator() + g.manual_seed(self.seed + self.epoch) + # type: ignore[arg-type] + indices = torch.randperm(len(self.dataset), generator=g).tolist() + + # update for next epoch so that there is no need to call + # set_epoch manually + self.epoch += 1 + else: + indices = list(range(len(self.dataset))) # type: ignore[arg-type] + + if not self.drop_last: + # add extra samples to make it evenly divisible + padding_size = self.total_size - len(indices) + if padding_size <= len(indices): + indices += indices[:padding_size] + else: + indices += (indices * math.ceil(padding_size / len(indices)))[:padding_size] + else: + # remove tail of data to make it evenly divisible. + indices = indices[: self.total_size] + assert len(indices) == self.total_size + + # subsample + indices = indices[self.rank : self.total_size : self.num_replicas] + assert len(indices) == self.num_samples + + return iter(indices) + + def __len__(self) -> int: + return self.num_samples + + def set_epoch(self, epoch: int) -> None: + r"""Sets the epoch for this sampler. When :attr:`shuffle=True`, this ensures all replicas + use a different random ordering for each epoch. Otherwise, the next iteration of this + sampler will yield the same ordering. + + Args: + epoch (int): Epoch number. + """ + self.epoch = epoch + + +def get_dpsampler_dataloader( + dataset, + shuffle=False, + seed=1024, + add_sampler=True, + drop_last=False, + pin_memory=False, + num_workers=0, + **kwargs, +): + r"""Set up a deterministic dataloader (also configure seed workers, samplers and whether shuffle or not) + + Note: + When pipeline parallel is enabled, shuffle cannot be True as it will result in mismatch between input data + on the 1st stage and label on the last stage. + + Args: + dataset (:class:`torch.utils.data.Dataset`): The dataset to be loaded. + shuffle (bool, optional): Whether to shuffle the dataset. Defaults to False. + seed (int, optional): Random worker seed for sampling, defaults to 1024. + add_sampler: Whether to add ``DistributedDataParallelSampler`` to the dataset. Defaults to True. + drop_last (bool, optional): Set to True to drop the last incomplete batch, if the dataset size + is not divisible by the batch size. If False and the size of dataset is not divisible by + the batch size, then the last batch will be smaller, defaults to False. + pin_memory (bool, optional): Whether to pin memory address in CPU memory. Defaults to False. + num_workers (int, optional): Number of worker threads for this dataloader. Defaults to 0. + kwargs (dict): optional parameters for ``torch.utils.data.DataLoader``, more details could be found in + `DataLoader `_. + + Returns: + :class:`torch.utils.data.DataLoader`: A DataLoader used for training or testing. + """ + _kwargs = kwargs.copy() + + if add_sampler and gpc.is_initialized(ParallelMode.DATA) and gpc.get_world_size(ParallelMode.DATA) > 1: + sampler = DataParallelSampler(dataset, shuffle=shuffle, drop_last=drop_last) + else: + sampler = None + + # Deterministic dataloader + def seed_worker(): + worker_seed = seed + np.random.seed(worker_seed) + torch.manual_seed(worker_seed) + random.seed(worker_seed) + + if sampler is None: + return DataLoader( + dataset, + worker_init_fn=seed_worker, + shuffle=shuffle, + drop_last=drop_last, + pin_memory=pin_memory, + num_workers=num_workers, + **_kwargs, + ) + else: + return DataLoader( + dataset, + sampler=sampler, + worker_init_fn=seed_worker, + drop_last=drop_last, + pin_memory=pin_memory, + num_workers=num_workers, + **_kwargs, + ) + + +class StaticBatchSampler: + """ + A static batch sampler that generates batches with a fixed micro-batch size. + + Args: + num_samples (int): The total number of samples in the dataset. + batch_size (int): The batch size for the current rank. Defaults to 192. + rampup_batch_size (str): A string with three space-separated integers representing the + starting batch size, the increment, and the number of steps between + each increment. For example, "192 24 8" means that the batch size + starts at 192 and increases by 24 every 8 steps. Defaults to + "6 2 8", which corresponds to a batch size of 2 for the first 6 steps. + micro_bsz (int): The micro-batch size. Defaults to 2. + seed (int): The random seed for shuffling the indices. Defaults to 0. + drop_last (bool): If True, drop the last incomplete batch. Currently only supports True. Defaults to True. + data_rank (int): The rank of the current process in the data parallel group. Defaults to 0. + data_world_size (int): The number of processes in the data parallel group. Defaults to 1. + """ + + def __init__( + self, + datasets, + batch_size=192, + rampup_batch_size="6 2 8", + micro_bsz=2, + seed=0, + drop_last=True, + data_rank=0, + data_world_size=1, + ): + assert drop_last is True, "Currently only support drop last" + if rampup_batch_size: + # In the process increase to batch_size + start_bsz, bsz_incre, incre_every = map(int, rampup_batch_size.split()) + else: + start_bsz, bsz_incre, incre_every = batch_size, batch_size, 1 + self.raw_rampup_batch_size = rampup_batch_size + self.start_bsz = start_bsz + self.bsz_incre = bsz_incre + self.incre_every = incre_every + if gpc.is_initialized(ParallelMode.PIPELINE): + assert ( + batch_size - self.start_bsz + ) % self.bsz_incre == 0, f"{batch_size} - {self.start_bsz} should be multiple of {self.bsz_incre}" + assert ( + self.start_bsz // micro_bsz >= 4 + ), f"Must have more start samples:`{self.start_bsz}` with micro_bsz:\ + `{micro_bsz}`, so that the pipeline can run correctly" + + assert batch_size % micro_bsz == 0, f"batch_size({batch_size}) should be multiple of micro_bsz({micro_bsz})" + assert ( + self.start_bsz % micro_bsz == 0 + ), f"start_bsz({self.start_bsz}) should be multiple of micro_bsz({micro_bsz})" + assert ( + self.bsz_incre % micro_bsz == 0 + ), f"bsz_incre({self.bsz_incre}) should be multiple of micro_bsz({micro_bsz})" + + self.batch_size = batch_size + self.epoch = 0 + self.seed = seed + self.rng = np.random.RandomState(seed) + self.batch_count = 0 + self.micro_bsz = micro_bsz + self.data_rank = data_rank + self.data_world_size = data_world_size + self.num_consumed_samples_in_epoch = 0 + self.datasets = datasets + self.num_samples = sum([len(ds) for ds in datasets]) + + self.get_indices() # get data + + def get_indices(self, old_indices=None): + if old_indices is not None: + assert ( + len(old_indices) <= self.num_samples + ), f"The checkpoint has {len(old_indices)} samples, \ +while the new restart use less samples ({self.num_samples})" + + else: + old_indices = np.array([]) + + # indices includes len(old_indices) but not self.num_samples + indices = np.arange(len(old_indices), self.num_samples) + self.rng_state = self.rng.get_state() + self.rng.shuffle(indices) + # Need to consider drop_last + ramp_steps = (self.batch_size - self.start_bsz) // self.bsz_incre + if self.batch_count < ramp_steps * self.incre_every: + rampup_samples = 0 + for i in range(ramp_steps): + rampup_samples += (i * self.bsz_incre + self.start_bsz) * self.incre_every + assert ( + rampup_samples * self.data_world_size <= self.num_samples + ), f"Too much rampup samples: \ +{rampup_samples*self.data_world_size} Vs. self.num_samples: {self.num_samples}" + + num_samples = (self.num_samples - rampup_samples * self.data_world_size) // ( + self.batch_size * self.data_world_size + ) + num_samples = num_samples * self.batch_size * self.data_world_size + rampup_samples * self.data_world_size + else: + num_samples = self.num_samples // (self.batch_size * self.data_world_size) + num_samples = num_samples * self.batch_size * self.data_world_size + indices = np.concatenate([old_indices, indices]).astype(int) # It needs to be spliced with the previous + indices = indices[:num_samples] + self.indices = indices + assert len(self.indices) >= self.batch_size, "The number of samples should be larger than batch_size" + self.num_consumed_samples_in_epoch = 0 + + def set_epoch(self, epoch): + self.epoch = epoch + self.rng = np.random.RandomState(self.seed + self.epoch) + + def __len__(self): + ramp_steps = (self.batch_size - self.start_bsz) // self.bsz_incre + if self.batch_count < ramp_steps * self.incre_every: + rampup_samples = 0 + for i in range(ramp_steps): + rampup_samples += (i * self.bsz_incre + self.start_bsz) * self.incre_every + assert ( + rampup_samples * self.data_world_size <= self.num_samples + ), f"Too much rampup samples: {rampup_samples*self.data_world_size} \ +Vs. self.num_samples: {self.num_samples}" + + num_batches = (self.num_samples - rampup_samples * self.data_world_size) // self.batch_size + num_batches = num_batches // self.data_world_size + self.incre_every * ramp_steps + else: + num_batches = self.num_samples // self.batch_size // self.data_world_size + + return num_batches + + def __iter__(self): + indices = self.indices[self.data_rank :: self.data_world_size] + while self.num_consumed_samples_in_epoch < len(indices): + batch_rampup_idx = self.batch_count // self.incre_every + cur_batch_size = batch_rampup_idx * self.bsz_incre + self.start_bsz + cur_batch_size = min(cur_batch_size, self.batch_size) + batch = indices[self.num_consumed_samples_in_epoch : self.num_consumed_samples_in_epoch + cur_batch_size] + yield batch + self.num_consumed_samples_in_epoch += len(batch) # Consider multiple processes. + self.batch_count += 1 + self.get_indices() # get a new round + + def state_dict(self): + states = { + "batch_size": self.batch_size, + "raw_rampup_batch_size": self.raw_rampup_batch_size, + "rng_state": self.rng_state, + "epoch": self.epoch, + "seed": self.seed, + "data_world_size": self.data_world_size, + "num_consumed_samples_in_epoch": self.num_consumed_samples_in_epoch, + "batch_count": self.batch_count, # The batch_count here is due to the existence of multiple processes, + # the batch may be oversent, and it needs to be overwritten by the external batch_count + "indices": self.indices, # The sequence used to breakpoint retraining is the same as before + } + + return states + + def load_state_dict(self, states): + for name in ("data_world_size", "raw_rampup_batch_size", "seed"): # 'batch_size' + assert states[name] == getattr(self, name), (name, states[name], getattr(self, name)) # should not change + self.rng.set_state(states["rng_state"]) + self.get_indices(old_indices=None) # Regenerate indices based on random state + self.epoch = states["epoch"] + self.batch_count = states["batch_count"] + self.num_consumed_samples_in_epoch = states["num_consumed_samples_in_epoch"] + + def copy(self): + copy_sampler = StaticBatchSampler( + self.datasets, + self.batch_size, + self.raw_rampup_batch_size, + self.micro_bsz, + self.seed, + drop_last=True, + data_rank=self.data_rank, + data_world_size=self.data_world_size, + ) + + copy_sampler.load_state_dict(self.state_dict()) + return copy_sampler diff --git a/internlm/data/collaters.py b/internlm/data/collaters.py new file mode 100644 index 0000000..b327b54 --- /dev/null +++ b/internlm/data/collaters.py @@ -0,0 +1,88 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import torch + + +def packed_collate_fn(batch, packed_length): + + """ + Collate function for packed input sequences. + + Args: + batch (List[Dict]): List of dictionaries representing each sample in batch. + Each dictionary contains "tokens", "labels", "type_ids", "cu_seqlens", and "indexes" keys. + packed_length (int): The length of packed sequence. + + Returns: + Tuple[Dict[str, torch.Tensor], torch.Tensor]: A tuple containing a dictionary of tensors with "input_ids", + "cu_seqlens", "indexes", and "type_ids" keys, and the tensor of padded "labels". + + Raises: + AssertionError: If the length of a sample is not equal to packed_length. + AssertionError: If the shape of the padded "input_ids" tensor does not have the correct shape. + """ + + xs, ys, cu_seqlens, indexes, ts = [], [], [], [], [] + for b in batch: + assert ( + len(b["tokens"]) == packed_length + ), f"length of a sample should be equal to packed_length, but got {len(b['tokens'])} and {packed_length})" + assert ( + len(b["labels"]) == packed_length + ), f"length of a sample should be equal to packed_length, but got {len(b['labels'])} and {packed_length})" + assert ( + len(b["type_ids"]) == packed_length + ), f"length of a sample should be equal to packed_length, but got {len(b['type_ids'])} and {packed_length})" + + tokens = [abs(w) for w in b["tokens"]] + labels = [w if w > 0 else -100 for w in b["labels"]] + + xs.append(torch.LongTensor(tokens)) + # The labels have been shifted here, so they are aligned with the output corresponding to the token + ys.append(torch.LongTensor(labels)) + ts.append(torch.LongTensor(b["type_ids"])) + cu_seqlens.append(torch.IntTensor(b["cu_seqlens"])) + indexes.append(torch.LongTensor(b["indexes"])) + + xs = torch.nn.utils.rnn.pad_sequence(xs, batch_first=True) + ys = torch.nn.utils.rnn.pad_sequence(ys, batch_first=True, padding_value=-100) + ts = torch.nn.utils.rnn.pad_sequence(ts, batch_first=True, padding_value=0) + indexes = torch.stack(indexes, dim=0) + if len(set(map(len, cu_seqlens))) == 1: # if has uniform length, then stack to save device transfer time + cu_seqlens = torch.stack(cu_seqlens, dim=0) + + assert xs.shape[1] == packed_length, (xs.shape[1], packed_length) + + return {"input_ids": xs, "cu_seqlens": cu_seqlens, "indexes": indexes, "type_ids": ts}, ys + + +def jsonl_ds_collate_fn(batch, max_length_per_sample): + """ + Collate function for json dataset. + + Args: + batch (List[Dict]): List of dictionaries representing each sample in batch. + Each dictionary contains "tokens". + max_length_per_sample (int): The length of output sequence. + + Returns: + Tuple[Dict[str, torch.Tensor], torch.Tensor]: A tuple containing a dictionary of tensors with "input_ids", + and the tensor of padded "labels". + + """ + xs, ys = [], [] + for x in batch: + x["tokens"] = x["tokens"][:max_length_per_sample] + tokens = [abs(w) for w in x["tokens"]] + labels = [w if w > 0 else -100 for w in x["tokens"]] + labels = labels[1:] + [-100] + xs.append(torch.as_tensor(tokens)) + ys.append(torch.as_tensor(labels)) # y has been shifted + xs = torch.nn.utils.rnn.pad_sequence(xs, batch_first=True) + ys = torch.nn.utils.rnn.pad_sequence(ys, batch_first=True, padding_value=-100) + + xs = torch.cat([xs, xs.new_zeros(len(xs), max_length_per_sample - len(xs[0]))], dim=-1) + ys = torch.cat([ys, ys.new_full((len(ys), max_length_per_sample - len(ys[0])), fill_value=-100)], dim=-1) + + return {"input_ids": xs}, ys diff --git a/internlm/data/dummy_dataset.py b/internlm/data/dummy_dataset.py new file mode 100644 index 0000000..fb36184 --- /dev/null +++ b/internlm/data/dummy_dataset.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import numpy as np +from torch.utils.data import Dataset + + +class RandomDataset(Dataset): + """ + RandomDataset for generating random dataset. + + Args: + num_samples (int): The number of samples to generate. + max_len (int): The maximum length of each sample. + + """ + + def __init__(self, num_samples=10000, max_len=1024) -> None: + super().__init__() + rng = np.random.RandomState(1999) + max_num = rng.randint(1, 30, size=(num_samples,)) + rep_num = rng.randint(10, 200, size=(num_samples,)) + data = [] + lengths = [] + for n, r in zip(max_num, rep_num): + d = list(range(n)) * r + d = [n, r] + d + d = d[:max_len] + data.append(d) + lengths.append(len(d)) + self.data = data + self.max_len = max_len + self.lengths = np.array(lengths, dtype=int) + + def __getitem__(self, index): + d = self.data[index] + input_ids = np.array(d, dtype=int) + return {"tokens": list(input_ids), "type_id": 0} + + def get_dataset_name(self): + return "dummy_path/dummy_lang/dummy_ds/train.bin" + + def __len__(self): + return len(self.data) diff --git a/internlm/data/packed_dataset.py b/internlm/data/packed_dataset.py new file mode 100644 index 0000000..e9151bf --- /dev/null +++ b/internlm/data/packed_dataset.py @@ -0,0 +1,376 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import itertools as it +import operator +import os +from copy import deepcopy +from typing import Dict + +import numpy as np +import torch +from torch.utils.data import ConcatDataset +from tqdm import tqdm + +from internlm.core.context import global_context as gpc +from internlm.data.single_dataset import JsonlDataset +from internlm.data.utils import get_dataset_type_id +from internlm.utils.logger import get_logger + +DEFAULT_SEED = 1024 +logger = get_logger(__file__) + + +class PackedDataset(torch.utils.data.Dataset): + """ + The class PackedDataset takes in a dataset and aggregates samples of different + lengths together based on the packed_length. + + Args: + dataset: The original dataset to pack. + max_length_per_sample: The maximum length of each original sample. Default is 2048. + packed_length: The length of each packed sample. Default is 4096. + """ + + def __init__( + self, + dataset, + max_length_per_sample: int = 2048, + packed_length: int = 4096, + ): + assert hasattr(dataset, "lengths") + assert len(getattr(dataset, "lengths")) == len( + dataset + ), "The dataset must have lengths attribute and have the same length as the dataset" + self.dataset = dataset + self.max_length_per_sample = max_length_per_sample + self.lengths = getattr(self.dataset, "lengths") + self.packed_length = packed_length + # Force a seed to be fixed to prevent problems caused by the seed not being restored when restarting + + self.seed = DEFAULT_SEED + self.sample_indices, self.len_samples_shuffled, self.acm_len_samples = self.accu_sample_len(seed=self.seed) + self.num_tokens = sum(self.lengths) + + def get_dataset_name(self): + return self.dataset.get_dataset_name() + + def accu_sample_len(self, seed=None): + """accumulative length of samples""" + if seed is not None: + rng = np.random.RandomState(seed) + else: + rng = np.random.RandomState(self.seed - 1) + + sample_indices = np.arange(len(self.lengths)) + rng.shuffle(sample_indices) + len_samples_shuffled = list(map(self.lengths.__getitem__, sample_indices)) + acm_len_samples = list(it.accumulate(len_samples_shuffled, operator.add)) + return sample_indices, len_samples_shuffled, acm_len_samples + + def __len__(self): + # Line 405 of document_to_sequence.py in metaseq is directly spliced, + # without additional consideration of sos or eos + n_packs = self.num_tokens // self.packed_length + return n_packs + + def cal_map(self, carriage_idx: int = 0): + assert carriage_idx >= 0 + length_train = (carriage_idx + 1) * self.packed_length + post_pos = np.searchsorted(self.acm_len_samples, length_train, side="left") + return post_pos + + def mapping(self, pack_idx: int = 0): + # pack_idx is zero-based + pre_pos, pre_token_id = 0, 0 + if pack_idx > 0: + pre_pos = self.cal_map(pack_idx - 1) + pre_token_id = self.len_samples_shuffled[pre_pos] - ( + self.acm_len_samples[pre_pos] - (pack_idx) * self.packed_length + ) + if pre_token_id == self.len_samples_shuffled[pre_pos]: + pre_pos += 1 + pre_token_id = 0 + + pos = self.cal_map(pack_idx) + token_id = self.len_samples_shuffled[pos] - (self.acm_len_samples[pos] - (pack_idx + 1) * self.packed_length) + return pre_pos, pre_token_id, pos, token_id + + def build_pack(self, pre_pos: int, pre_token_id: int, pos: int, token_id: int): + pack, cu_seqlens, indexes, labels, type_ids = [], [0], [], [], [] + + while pre_pos < pos: + sample_idx = self.sample_indices[pre_pos] + sample = self.dataset[sample_idx] + chunk = sample["tokens"][pre_token_id:] + pack.extend(chunk) + _labels = deepcopy(chunk) + _labels = list(_labels[1:]) + [-100] + assert len(_labels) == len(chunk), (_labels, chunk) + labels.extend(_labels) + type_ids.extend([sample.get("type_id", 0)] * len(chunk)) + num_new_samples, tokens_left = divmod(len(chunk), self.max_length_per_sample) + for _ in range(num_new_samples): + cu_seqlens.append(cu_seqlens[-1] + self.max_length_per_sample) + indexes.extend(list(range(self.max_length_per_sample))) + if tokens_left > 0: + cu_seqlens.append(cu_seqlens[-1] + tokens_left) + indexes.extend(list(range(tokens_left))) + pre_pos = pre_pos + 1 + pre_token_id = 0 + + sample_idx = self.sample_indices[pos] + sample = self.dataset[sample_idx] + chunk = sample["tokens"][pre_token_id:token_id] # fragement of a sample + pack.extend(chunk) + _labels = deepcopy(chunk) + if token_id == len(sample["tokens"]): + _labels = list(_labels[1:]) + [-100] + else: + if token_id > len(sample["tokens"]): + print(f"token_id {token_id}, len of sample {len(sample['tokens'])}") + _labels = list(_labels[1:]) + [sample["tokens"][token_id]] + assert len(_labels) == len(chunk), (_labels, chunk) + labels.extend(_labels) + type_ids.extend([sample.get("type_id", 0)] * len(chunk)) + num_new_samples, tokens_left = divmod(len(chunk), self.max_length_per_sample) + for _ in range(num_new_samples): + cu_seqlens.append(cu_seqlens[-1] + self.max_length_per_sample) + indexes.extend(list(range(self.max_length_per_sample))) + if tokens_left > 0: + cu_seqlens.append(cu_seqlens[-1] + tokens_left) + indexes.extend(list(range(tokens_left))) + + out = {"tokens": pack, "cu_seqlens": cu_seqlens, "indexes": indexes, "labels": labels, "type_ids": type_ids} + return out + + def __getitem__(self, item: int) -> Dict: + """Given the index, it returns a dict as + { + 'tokens': List[int], + 'cu_seqlens': List[int], + 'indexes': List[int], # denotes positional vector as 'tokens' + 'labels': List[int], # corresponds to 'tokens' and shifted yet, -100 means skipping prediction + } + """ + + pos_before, token_id_before, pos_after, token_id_after = self.mapping(item) + return self.build_pack(pos_before, token_id_before, pos_after, token_id_after) + + +class PackedDatasetWithoutCuSeqlen(torch.utils.data.Dataset): + """ + A dataset wrapper that aggregates samples with different lengths based on packed_length. + If a sample is shorter than max_length_per_sample, it will be merged with other samples. + For example, given a dataset with 10 samples: + [1, 2, 3, 4, 5] + [6, 7] + [8, 9, 10, 11] + [12, ..., 100] + ... + + Args: + dataset: The original dataset to be wrapped. + max_length_per_sample (int): The maximum length allowed for each sample. + packed_length (int): The desired length for each packed sample. + """ + + def __init__( + self, + dataset, + max_length_per_sample: int = 2048, + packed_length: int = 4096, + debug=False, + ): + assert packed_length % max_length_per_sample == 0 + assert hasattr(dataset, "lengths") + assert len(getattr(dataset, "lengths")) == len( + dataset + ), "The dataset must have lengths attribute and have the same length as the dataset" + self.dataset = dataset + self.max_length_per_sample = max_length_per_sample + self.lengths = getattr(self.dataset, "lengths") + self.bsz = packed_length // max_length_per_sample + self.packed_length = packed_length + self.debug = debug + # Force a seed to be fixed to prevent problems caused by the seed not being restored when restarting + + self.seed = DEFAULT_SEED + indices = np.arange(len(self.lengths)) + rng = np.random.RandomState(self.seed) + rng.shuffle(indices) + self.indices = indices + self.cum_lens = np.cumsum(self.lengths[self.indices]) + self.num_tokens = sum(self.lengths) + + def get_dataset_name(self): + return self.dataset.get_dataset_name() + + def __len__(self): + n_packs = self.num_tokens // self.packed_length + return n_packs + + def find_offset(self, offset): + idx = np.searchsorted(self.cum_lens, offset, side="right") + if idx == 0: + return idx, offset + length = offset - self.cum_lens[idx - 1] + return idx, length + + def pdebug(self, line): + if self.debug: + print(line, flush=True) + + def __getitem__(self, item: int) -> Dict: + """Given the index, it returns a dict as + { + 'tokens': List[int], + 'cu_seqlens': List[int], + 'indexes': List[int], # denotes positional vector as 'tokens' + 'labels': List[int], # corresponds to 'tokens' and shifted yet, -100 means skipping prediction + } + """ + + start_idx, start_length = self.find_offset(item * self.packed_length) + end_idx, end_length = self.find_offset((item + 1) * self.packed_length) + pack_tokens = [] + pack_labels = [] + type_ids = [] + + self.pdebug(f"item : {item}, start_idx:{start_idx}, start_length:{start_length} ") + self.pdebug(f"item : {item}, end_idx:{end_idx}, end_length:{end_length} ") + + if start_idx == end_idx: + idx = self.indices[start_idx] + sample = self.dataset[idx] + self.pdebug(f"item : {item}, idx: {idx}, len : {len(sample['tokens'])}") + tokens = sample["tokens"][start_length:end_length] + pack_tokens.extend(tokens) + pack_labels.extend(tokens[1:] + [-100]) + type_ids.extend([sample["type_id"]] * len(tokens)) + return { + "tokens": pack_tokens, + "cu_seqlens": [i * self.max_length_per_sample for i in range(self.bsz + 1)], + "indexes": list(range(self.max_length_per_sample)) * self.bsz, + "labels": pack_labels, + "type_ids": type_ids, + } + + idx = self.indices[start_idx] + sample = self.dataset[idx] + self.pdebug(f"item : {item}, idx: {idx}, len : {len(sample['tokens'])}") + tokens = sample["tokens"][start_length:] + pack_tokens.extend(tokens) + pack_labels.extend(tokens[1:] + [-100]) + type_ids.extend([sample["type_id"]] * len(tokens)) + + for i in range(start_idx + 1, end_idx): + idx = self.indices[i] + sample = self.dataset[idx] + self.pdebug(f"item : {item}, idx: {idx}, len : {len(sample['tokens'])}") + tokens = sample["tokens"] + pack_tokens.extend(tokens) + pack_labels.extend(tokens[1:] + [-100]) + type_ids.extend([sample.get("type_id")] * len(tokens)) + + # corner case, the last sample is useless + if end_length == 0: + pass + else: + idx = self.indices[end_idx] + sample = self.dataset[idx] + self.pdebug(f"item : {item}, idx: {idx}, len : {len(sample['tokens'])}") + tokens = sample["tokens"][:end_length] + pack_tokens.extend(tokens) + pack_labels.extend(tokens[1:] + [-100]) + type_ids.extend([sample.get("type_id")] * len(tokens)) + + return { + "tokens": pack_tokens, + "cu_seqlens": [i * self.max_length_per_sample for i in range(self.bsz + 1)], + "indexes": list(range(self.max_length_per_sample)) * self.bsz, + "labels": pack_labels, + "type_ids": type_ids, + } + + +def get_packed_dataset_without_short_length( + folder, + max_length_per_sample=2048, + packed_length=4096, + show_progress=False, + min_length=50, + min_length_dict=None, + pack_into_one_sample=False, +): + """ + Given a folder, combine all the .bin files into a single large dataset. + And filter out short samples with length less than 'min_length'. + + Each .bin file is treated as a separate dataset. + + Args: + folder (str): Path to the folder containing the .bin files. + max_length_per_sample (int): Maximum length of each sample. + packed_length (int): Length to pack samples to. + show_progress (bool): Whether to show the progress bar. + min_length (int): The minimum length of the sample. + min_length_dict (dict): The minimum length of the sample for each dataset. + The format is something like {'pile-arxiv': 50} + dataset_backend (Optional[str]): Dataset storage location. Optional parameters are local, local-shm, kv + + Returns: + A packed dataset containing all the data from the .bin files. + """ + + assert os.path.exists(folder), f"{folder} does not exist." + datasets = [] + delete_samples = 0 + + for root, dirs, files in os.walk(folder, followlinks=True): + dirs.sort() # Let the folder need to be returned in a fixed order + if gpc.is_rank_for_log(): + logger.info(f"Reading {root}...") + num_token_in_folder = 0 + + for fn in tqdm(sorted(files), total=len(files), leave=False, disable=not show_progress): + if fn.endswith(".bin"): + fp = os.path.join(root, fn) + catch_ml_keys = [] + min_length_num = min_length + if min_length_dict is not None: + for k, v in min_length_dict.items(): + if k in fp: + min_length_num = v + catch_ml_keys.append(k) + assert ( + len(catch_ml_keys) < 2 + ), f"The file name `{fp}` matched the following resample keys:{catch_ml_keys}" + + ds_type_id = get_dataset_type_id(path=fp) + ds = JsonlDataset(fp, ds_type_id, min_length=min_length_num) + + if hasattr(ds, "old_length"): + delete_samples += ds.old_length - len(ds) + if len(ds) == 0: + if gpc.is_rank_for_log(): + logger.info(f"None of the data in `{fp}` is longer than {min_length}") + continue + + if pack_into_one_sample: + ds = PackedDatasetWithoutCuSeqlen(ds, max_length_per_sample, packed_length) + else: + ds = PackedDataset(ds, max_length_per_sample, packed_length) + + num_token_in_folder += len(ds) * packed_length + datasets.append(ds) + + dataset = ConcatDataset(datasets=datasets) + if gpc.is_rank_for_log(): + logger.info( + f"Find `{len(datasets)}` datasets, \ + {len(dataset)} samples, \ + delete `{delete_samples}` because of short length", + ) + + return dataset diff --git a/internlm/data/single_dataset.py b/internlm/data/single_dataset.py new file mode 100644 index 0000000..5477d34 --- /dev/null +++ b/internlm/data/single_dataset.py @@ -0,0 +1,117 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +""" +A .bin file corresponds to a Dataset instance here. +""" + +import json +import mmap +import os +import threading +from pathlib import Path + +import numpy as np +import torch + + +class JsonlDataset(torch.utils.data.Dataset): + """ + + JSONL format is expected to roughly follow that of The Pile. + One-line-per-document of the form: + ``` + { + "tokens": List[int], + } + ``` + + Note that only the "tokens" key is used. + """ + + def __init__(self, path: str, dataset_type_id: int = 0, min_length=50): + self.path = path + self.threadlocal = threading.local() + resolved_path = Path(path).resolve() + self.resolved_path = resolved_path + self.meta = Path(f"{resolved_path}.meta") + self.type_id = dataset_type_id + + # only build the cache in on the primary worker to prevent overloading nfs + assert os.path.exists(self.meta), f"The cache file:{self.meta} is not found for file:{self.path}" + try: + with open(self.meta, "rb") as f: + meta = np.load(f) + except Exception as e: + print(f"Cannot load file {self.meta}...") + raise e + self.offsets = meta[:, 0] + self.lengths = meta[:, -1] + + if min_length > 0: + mask = self.lengths >= min_length + self.old_lengths = self.lengths.copy() + self.old_length = len(self.offsets) + self.offsets = self.offsets[mask] + self.lengths = self.lengths[mask] + + def __getitem__(self, idx): + f = self._get_mmap() + position = self.offsets[idx] + f.seek(position) + item = f.readline().decode("utf-8") + try: + item = json.loads(item) + item["length"] = len(item["tokens"]) # add a length info + item["type_id"] = self.type_id + except Exception as err: + raise json.decoder.JSONDecodeError( + doc=self.path, + pos=position, + msg=( + f"Error while loading JSONL line in file {self.path} at byte " + f"{position}. Contents of line:\n{item}\n{err}" + ), + ) + return item + + def get_dataset_name(self): + return str(self.resolved_path) + + def _get_mmap(self): + if not hasattr(self.threadlocal, "handles"): + with open(self.path, "rb") as f: + mm = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) + self.threadlocal.handles = [f, mm] + if self.path.endswith(".gz") or self.path.endswith(".bz") or self.path.endswith(".bz2"): + raise NotImplementedError( + "Compressed files are not supported because .seek() would require " + "rereading the entire file, making performance too slow." + ) + return self.threadlocal.handles[-1] + + def __setstate__(self, state): + self.__dict__ = state + self.threadlocal = threading.local() + + def __getstate__(self): + d = {} + for i, v in self.__dict__.items(): + if i != "threadlocal": + d[i] = v + return d + + def __del__(self): + if hasattr(self.threadlocal, "handles"): + # cleanup files we opened on initialization + while self.threadlocal.handles: + self.threadlocal.handles.pop().close() + + @staticmethod + def exists(path): + return os.path.exists(path) + + def __len__(self): + # Virtual length of the dataset depends on the epoch number if the number of documents + # is not perfectly divisible by the data_subshard_count + return len(self.offsets) diff --git a/internlm/data/utils.py b/internlm/data/utils.py new file mode 100644 index 0000000..b003469 --- /dev/null +++ b/internlm/data/utils.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +DATASET_TYPE_IDS_MAP = {"en": 0, "cn": 1, "code": 2, "ja": 3, "ar": 4, "kaoshi": 5} + + +def get_dataset_type_id(path): + import re + + match_idxes = [] + for key, idx in DATASET_TYPE_IDS_MAP.items(): + if re.search(rf"/[z_]*{key}/", path): + match_idxes.append(idx) + assert len(match_idxes) == 1, f"{path}, match_idxes should be 1, but got {match_idxes} from {DATASET_TYPE_IDS_MAP}" + return match_idxes[0] diff --git a/internlm/initialize/__init__.py b/internlm/initialize/__init__.py new file mode 100644 index 0000000..e8aef0b --- /dev/null +++ b/internlm/initialize/__init__.py @@ -0,0 +1,9 @@ +from .initialize_trainer import initialize_trainer +from .launch import get_default_parser, launch_from_slurm, launch_from_torch + +__all__ = [ + "get_default_parser", + "initialize_trainer", + "launch_from_slurm", + "launch_from_torch", +] diff --git a/internlm/initialize/initialize_tensor.py b/internlm/initialize/initialize_tensor.py new file mode 100644 index 0000000..2580ca0 --- /dev/null +++ b/internlm/initialize/initialize_tensor.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import math + +import torch +from torch import Tensor, nn + + +def scaled_init_method_normal(sigma, num_layers): + """Init method based on N(0, sigma/sqrt(2*num_layers).""" + std = sigma / math.sqrt(2.0 * num_layers) + + def init_(tensor): + return torch.nn.init.normal_(tensor, mean=0.0, std=std) + + return init_ + + +def normal_(mean: float = 0.0, std: float = 1.0): + r"""Return the initializer filling the input Tensor with values drawn from the normal distribution + + .. math:: + \mathcal{N}(\text{mean}, \text{std}^2) + + Args: + mean (float): the mean of the normal distribution. Defaults 0.0. + std (float): the standard deviation of the normal distribution. Defaults 1.0. + """ + + def initializer(tensor: Tensor): + return nn.init.normal_(tensor, mean, std) + + return initializer diff --git a/internlm/initialize/initialize_trainer.py b/internlm/initialize/initialize_trainer.py new file mode 100644 index 0000000..2ed22c5 --- /dev/null +++ b/internlm/initialize/initialize_trainer.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +# adopted from https://github.com/hpcaitech/ColossalAI/blob/main/colossalai/initialize + +from typing import Callable, Iterable, Optional, Tuple + +from torch import nn +from torch.nn.modules.loss import _Loss +from torch.optim.lr_scheduler import _LRScheduler +from torch.optim.optimizer import Optimizer +from torch.utils.data import DataLoader + +from internlm.core.context import global_context as gpc +from internlm.core.engine import Engine +from internlm.core.gradient_handler import PipelineSharedModuleGradientHandler +from internlm.core.no_pipeline_scheduler import NonPipelineScheduler +from internlm.core.trainer import Trainer +from internlm.solver.beta2_scheduler import Beta2Scheduler +from internlm.solver.optimizer.hybrid_zero_optim import BaseOptimizer +from internlm.utils.common import get_current_device + + +def initialize_trainer( + model: nn.Module, + optimizer: Optimizer, + criterion: Optional[_Loss] = None, + train_dataloader: Optional[Iterable] = None, + test_dataloader: Optional[Iterable] = None, + lr_scheduler: Optional[_LRScheduler] = None, + beta2_scheduler: Optional[Beta2Scheduler] = None, +) -> Tuple[Trainer, DataLoader, DataLoader, _LRScheduler]: + """Core function to wrap the essential training components with our functionality based on the config which is + loaded into gpc.config. + + Args: + model (:class:`torch.nn.Module` or Callbale): Your model instance or a function to build the model. + optimizer (:class:`BaseOptimizer`. + criterion (:class:`torch.nn.modules.loss._Loss`, optional): Your criterion instance. + train_dataloader (:class:`torch.utils.data.DataLoader`, optional): Dataloader for training. + test_dataloader (:class:`torch.utils.data.DataLoader`, optional): Dataloader for testing. + lr_scheduler (:class:`torch.nn.lr_scheduler._LRScheduler`, optional): Your lr scheduler instance, optional. + + Returns: + Tuple (trainer, train_dataloader, test_dataloader, lr_scheduler): + A tuple of ``(trainer, train_dataloader, test_dataloader, lr_scheduler)`` + where only ``trainer`` could not be None. + """ + + if isinstance(model, nn.Module): + # first sync model across dp ranks + model.to(get_current_device()) + elif isinstance(model, Callable): + model = model().to(get_current_device()) + + # clip grad norm + clip_grad_norm = gpc.config.hybrid_zero_optimizer.get("clip_grad_norm", 0.0) + + assert isinstance(optimizer, BaseOptimizer), "optimizer must be instance of BaseOptimizer" + + # gradient handler, only support PipelineSharedModuleGradientHandler now + gradient_handler_cfg = gpc.config.get("gradient_handler", []) + gradient_handlers = [] + assert isinstance(gradient_handler_cfg, list), f"gradient_handler must be list but got {type(gradient_handler_cfg)}" + for config in gradient_handler_cfg: + if isinstance(config, dict) and config.get("type") == "PipelineSharedModuleGradientHandler": + handler = PipelineSharedModuleGradientHandler(model=model, optimizer=optimizer) + gradient_handlers.append(handler) + + scheduler = NonPipelineScheduler(gradient_accumulation_size=gpc.config.data.gradient_accumulation) + + engine = Engine( + model=model, + optimizer=optimizer, + lr_scheduler=lr_scheduler, + beta2_scheduler=beta2_scheduler, + criterion=criterion, + gradient_handlers=gradient_handlers, + clip_grad_norm=clip_grad_norm, + ) + + trainer = Trainer(engine, scheduler) + + return trainer, train_dataloader, test_dataloader, lr_scheduler diff --git a/internlm/initialize/launch.py b/internlm/initialize/launch.py new file mode 100644 index 0000000..c8390a8 --- /dev/null +++ b/internlm/initialize/launch.py @@ -0,0 +1,296 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import argparse +import os +from pathlib import Path +from typing import Dict, Union + +import torch + +from internlm.core.context import Config +from internlm.core.context import global_context as gpc +from internlm.utils.logger import get_logger + +logger = get_logger(__file__) + + +def get_default_parser(): + """Reads user command line and uses an argument parser to parse the input arguments. + Input arguments include configuration, host, port, world size, local rank, backend for torch.distributed. + + Returns: + Namespace: Returns the parser with the default arguments, the user may add customized arguments into this parser. + """ + parser = argparse.ArgumentParser() + parser.add_argument("--config", type=str, help="path to the config file") + parser.add_argument( + "--launcher", + type=str, + default="slurm", + choices=["slurm", "torch"], + help="launcher for launching distributed environment", + ) + parser.add_argument("--host", type=str, help="the master address for distributed training") + parser.add_argument("--port", type=int, default=8888, help="the master port for distributed training") + parser.add_argument("--world_size", type=int, help="world size for distributed training") + parser.add_argument("--rank", type=int, help="rank for the default process group") + parser.add_argument("--local_rank", type=int, help="local rank on the node") + parser.add_argument("--backend", type=str, default="nccl", help="backend for distributed communication") + parser.add_argument("--seed", type=int, default=1024) + return parser + + +def args_sanity_check(): + assert gpc.config is not None, "config is not load!" + + # the default model type is INTERNLM + if "model_type" not in gpc.config: + gpc.config._add_item("model_type", "INTERNLM") + + # procssing the parallel config in gpc + if "zero1" not in gpc.config.parallel: + gpc.config.parallel._add_item("zero1", -1) + + if "pipeline" not in gpc.config.parallel: + gpc.config.parallel._add_item("pipeline", 1) + + if "tensor" not in gpc.config.parallel: + gpc.config.parallel._add_item("tensor", 1) + + # processing the data config in gpc + data = gpc.config.data + + assert data.seq_len is not None, "'seq_len' must be given a value" + assert data.micro_bsz is not None, "'micro_bsz' must be given a value" + + if "packed_length" in data and gpc.is_rank_for_log(): + logger.warning("packed_length would be ignored and will be setted as seq_len * micro_bsz.") + + data._add_item("packed_length", data.seq_len * data.micro_bsz) + + if "micro_num" not in data: + data._add_item("micro_num", 1) + + data._add_item("gradient_accumulation", data.micro_num) + if gpc.is_rank_for_log(): + logger.info(f"gradient_accumulation size will be setted to {data.micro_num}.") + + # batch_size should be equal with micro_num, should not use it directly + data._add_item("batch_size", data.micro_num) + + if "min_length" not in data: + data._add_item("min_length", 0) + + if "train_folder" not in data: + data._add_item("train_folder", None) + + if "valid_folder" not in data: + data._add_item("valid_folder", None) + + if gpc.is_rank_for_log(): + logger.info("+++++++++++++++++++++++++++++++ Data Info +++++++++++++++++++++++++++++++") + logger.info(f"seq_len: {data.seq_len}") + logger.info(f"micro_num: {data.micro_num}") + logger.info(f"micro_bsz: {data.micro_bsz}") + logger.info(f"packed_length: {data.packed_length}") + logger.info(f"pack_sample_into_one: {data.pack_sample_into_one}") + logger.info(f"min_length: {data.min_length}") + + # processing the checkpoint config + if "checkpoint_every" not in gpc.config.ckpt or gpc.config.ckpt.checkpoint_every <= 0: + gpc.config.ckpt._add_item("checkpoint_every", float("inf")) + + if "load_optimizer" not in gpc.config.ckpt: + gpc.config.ckpt._add_item("load_optimizer", True) + + if "save_ckpt_folder" not in gpc.config.ckpt: + gpc.config.ckpt._add_item("save_ckpt_folder", None) + + if "load_ckpt_folder" not in gpc.config.ckpt: + gpc.config.ckpt._add_item("load_ckpt_folder", None) + + if "load_model_only_folder" not in gpc.config.ckpt: + gpc.config.ckpt._add_item("load_model_only_folder", None) + + assert not ( + gpc.config.ckpt.load_ckpt_folder is not None and gpc.config.ckpt.load_model_only_folder is not None + ), "'load_ckpt_folder' and 'load_model_only_folder' cannot be set at the same time." + + gpc.config.ckpt._add_item( + "enable_ckpt", gpc.config.ckpt.save_ckpt_folder is not None and gpc.config.ckpt.checkpoint_every > 0 + ) + + if gpc.is_rank_for_log(): + logger.info("+++++++++++++++++++++++++++++++ Ckpt Info +++++++++++++++++++++++++++++++") + logger.info(f"is enable save ckpt: {gpc.config.ckpt.enable_ckpt}") + logger.info(f"save_ckpt_folder: {gpc.config.ckpt.save_ckpt_folder}") + logger.info(f"checkpoint_every: {gpc.config.ckpt.checkpoint_every}") + + # cudnn + torch.backends.cudnn.benchmark = gpc.config.get("cudnn_benchmark", False) + torch.backends.cudnn.deterministic = gpc.config.get("cudnn_deterministic", False) + clip_grad_norm = gpc.config.hybrid_zero_optimizer.get("clip_grad_norm", 0.0) + + if gpc.is_rank_for_log(): + logger.info("+++++++++++++++++++++++++++++++ other Info +++++++++++++++++++++++++++++++") + logger.info(f"cudnn.benchmark: {torch.backends.cudnn.benchmark }") + logger.info(f"cudnn.deterministic: {torch.backends.cudnn.deterministic }") + logger.info(f"clip_grad_norm: {clip_grad_norm}") + + if "dtype" not in gpc.config.model: + logger.warning("dtype is not set, use torch.float16 by defalut!") + gpc.config.model._add_item("dtype", torch.float16) + else: + if gpc.config.model.dtype == "torch.bfloat16": + gpc.config.model.dtype = torch.bfloat16 + elif gpc.config.model.dtype in ("torch.float16", "torch.half"): + gpc.config.model.dtype = torch.float16 + else: + assert gpc.config.model.dtype in ["torch.float16", "torch.half", "torch.bfloat16"] + + if gpc.is_rank_for_log(): + logger.info("+++++++++++++++++++++++++++++++ Model Info +++++++++++++++++++++++++++++++") + logger.info(f"Model: {gpc.config.model}") + + logger.info("+++++++++++++++++++++++++++++++ grad_scaler Info +++++++++++++++++++++++++++++++") + logger.info(f"grad_scaler: {gpc.config.grad_scaler}") + + logger.info("+++++++++++++++++++++++++++++++ hybrid_zero_optimizer Info +++++++++++++++++++++++++++++++") + logger.info(f"hybrid_zero_optimizer: {gpc.config.hybrid_zero_optimizer}") + + logger.info("+++++++++++++++++++++++++++++++ adam Info +++++++++++++++++++++++++++++++") + logger.info(f"adam: {gpc.config.adam}") + + logger.info("+++++++++++++++++++++++++++++++ beta2_scheduler Info +++++++++++++++++++++++++++++++") + logger.info(f"beta2_scheduler: {gpc.config.beta2_scheduler}") + logger.info("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++") + + +def launch( + config: Union[str, Path, Config, Dict], + rank: int, + world_size: int, + host: str, + port: int, + backend: str = "nccl", + local_rank: int = None, + seed: int = 1024, +): + """This function first parses the configuration arguments, using :func:`parse_args()` in case one of the input + arguments are not given. Then initialize and set distributed environment by calling global_context's functions. + + Args: + config (Union[str, dict, Config]): Config file or config file path are both acceptable + rank (int): Rank for the default process group + world_size (int): World size of the default process group + host (str): The master address for distributed training + port (str): The master port for distributed training + backend (str, optional): Backend for ``torch.distributed``, defaults to ``nccl`` + local_rank (int, optional): + Rank for the process on the node and is used to set the default CUDA device, + defaults to None. If local_rank = None, the default device ordinal will be calculated automatically. + seed (int, optional): Specified random seed for every process. Defaults to 1024. + + Raises: + Exception: Raise exception when config type is wrong + """ + + # set config + assert isinstance( + config, (Config, str, Path, dict) + ), f"expected argument config to be Config, str or Path, but got {type(config)}" + if not isinstance(config, Config) and isinstance(config, dict): + config = Config(config) + if isinstance(config, (str, Path)): + config = Config.from_file(config) + gpc.load_config(config) + + # init default process group + gpc.init_global_dist(rank, world_size, backend, host, port) + + # init process groups for different parallel modes from config + gpc.init_parallel_groups() + + args_sanity_check() + + # set cuda device + if torch.cuda.is_available(): + # if local rank is not given, calculate automatically + gpc.set_device(local_rank) + + # set the number of processes running on the same node + gpc.detect_num_processes_on_current_node() + + gpc.set_seed(seed) + + if gpc.is_rank_for_log(): + logger.info( + f"Distributed environment is initialized, " + f"data parallel size: {gpc.data_parallel_size}, pipeline parallel size: {gpc.pipeline_parallel_size}, " + f"tensor parallel size: {gpc.tensor_parallel_size}", + ) + + +def launch_from_slurm( + config: Union[str, Path, Config, Dict], + host: str, + port: int, + backend: str = "nccl", + seed: int = 1024, +): + """A wrapper for internlm.launch for SLURM launcher by reading rank and world size from the environment variables + set by SLURM + + Args: + config (Union[str, dict, Config]): Config file or config file path are both acceptable + host (str): The master address for distributed training + port (str): The master port for distributed training + backend (str, optional): Backend for ``torch.distributed``, defaults to ``nccl`` + seed (int, optional): Specified random seed for every process. Defaults to 1024. + """ + try: + rank = int(os.environ["SLURM_PROCID"]) + world_size = int(os.environ["SLURM_NPROCS"]) + except KeyError as e: + raise RuntimeError(f"Could not find {e} in the SLURM environment") + + launch( + config=config, + rank=rank, + world_size=world_size, + host=host, + port=port, + backend=backend, + seed=seed, + ) + + +def launch_from_torch(config: Union[str, Path, Config, Dict], backend: str = "nccl", seed: int = 1024): + """A wrapper for internlm.launch for torchrun or torch.distributed.launch by reading rank and world size + from the environment variables set by PyTorch + + Args: + config (Union[str, dict, Config]): Config file or config file path are both acceptable + backend (str, optional): Backend for ``torch.distributed``, defaults to ``nccl`` + seed (int, optional): Specified random seed for every process. Defaults to 1024. + """ + try: + rank = int(os.environ["RANK"]) + local_rank = int(os.environ["LOCAL_RANK"]) + world_size = int(os.environ["WORLD_SIZE"]) + host = os.environ["MASTER_ADDR"] + port = int(os.environ["MASTER_PORT"]) + except KeyError as e: + raise RuntimeError(f"Could not find {e} in the torch environment") + + launch( + config=config, + local_rank=local_rank, + rank=rank, + world_size=world_size, + host=host, + port=port, + backend=backend, + seed=seed, + ) diff --git a/internlm/model/__init__.py b/internlm/model/__init__.py new file mode 100644 index 0000000..c8745ce --- /dev/null +++ b/internlm/model/__init__.py @@ -0,0 +1,19 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from .embedding import Embedding1D, RotaryEmbedding +from .linear import FeedForward, RewardModelLinear, ScaleColumnParallelLinear +from .modeling_internlm import build_model_with_cfg +from .multi_head_attention import MHA +from .utils import gather_forward_split_backward + +__all__ = [ + "Embedding1D", + "FeedForward", + "RotaryEmbedding", + "RewardModelLinear", + "ScaleColumnParallelLinear", + "MHA", + "gather_forward_split_backward", + "build_model_with_cfg", +] diff --git a/internlm/model/embedding.py b/internlm/model/embedding.py new file mode 100644 index 0000000..43e8564 --- /dev/null +++ b/internlm/model/embedding.py @@ -0,0 +1,209 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from typing import Tuple + +import rotary_emb +import torch +import torch.nn.functional as F +from einops import rearrange +from flash_attn.layers.rotary import ApplyRotaryEmbQKV_ as LegacyApplyRotaryEmbQKV_ +from torch import Tensor, nn + +from internlm.core.context import ParallelMode +from internlm.core.context import global_context as gpc + +from .utils import gather_forward_split_backward + + +class Embedding1D(nn.Module): + """ + 1D Embedding. + + Args: + num_embeddings (int): The size of vocab. + embedding_dim (int): The dimention of model. + padding_idx (int): If specified, the entries at :attr:`padding_idx` do not contribute to the gradient; + therefore, the embedding vector at :attr:`padding_idx` is not updated during training, + i.e. it remains as a fixed "pad". None by default. + dtype (Optional[torch.dtype]): Data type None by default. + + """ + + def __init__( + self, + num_embeddings: int, + embedding_dim: int, + *args, + padding_idx: int = None, + dtype: torch.dtype = None, + **kwargs, + ): + super().__init__() + + self.num_embeddings = num_embeddings + self.embed_dim = embedding_dim + embed_dim_per_partition = embedding_dim // gpc.tensor_parallel_size + + self.padding_idx = padding_idx + self.embed_args = args + self.embed_kwargs = kwargs + + self.weight = nn.Parameter(torch.empty((num_embeddings, embed_dim_per_partition), dtype=dtype)) + + def forward(self, input_: Tensor) -> Tensor: + output_parallel = F.embedding(input_, self.weight, self.padding_idx, *self.embed_args, **self.embed_kwargs) + + output = gather_forward_split_backward(output_parallel, ParallelMode.TENSOR, dim=-1) + + return output + + +class ApplyRotaryEmbQKV_(torch.autograd.Function): + """ + ApplyRotaryEmbQKV_ + """ + + @staticmethod + def forward(ctx, qkv, cos, sin, cos_k=None, sin_k=None): + """ + qkv: (total, 3, nheads, headdim) + cos, sin: (seqlen, rotary_dim / 2) + cos_k, sin_k: (seqlen, rotary_dim / 2), optional + rotary_dim must be <= headdim + Apply rotary embedding *inplace* to the first rotary_dim of q and k. + """ + _, three, _, headdim = qkv.shape + assert three == 3 + rotary_seqlen, rotary_dim = cos.shape + rotary_dim *= 2 + assert rotary_dim <= headdim + cos_k = cos if cos_k is None else cos_k + sin_k = sin if sin_k is None else sin_k + assert sin.shape == cos_k.shape == sin_k.shape == (rotary_seqlen, rotary_dim // 2) + q1, q2 = qkv[:, 0, :, :rotary_dim].chunk(2, dim=-1) + rotary_emb.apply_rotary(q1, q2, rearrange(cos, "s d -> s 1 d"), rearrange(sin, "s d -> s 1 d"), q1, q2, False) + k1, k2 = qkv[:, 1, :, :rotary_dim].chunk(2, dim=-1) + rotary_emb.apply_rotary( + k1, k2, rearrange(cos_k, "s d -> s 1 d"), rearrange(sin_k, "s d -> s 1 d"), k1, k2, False + ) + ctx.save_for_backward(cos, sin, cos_k, sin_k) + return qkv + + @staticmethod + def backward(ctx, dqkv): + cos, sin, cos_k, sin_k = ctx.saved_tensors + rotary_dim = cos.shape[-1] + rotary_dim *= 2 + dq1, dq2 = dqkv[:, 0, :, :rotary_dim].chunk(2, dim=-1) + rotary_emb.apply_rotary( + dq1, dq2, rearrange(cos, "s d -> s 1 d"), rearrange(sin, "s d -> s 1 d"), dq1, dq2, True + ) + dk1, dk2 = dqkv[:, 1, :, :rotary_dim].chunk(2, dim=-1) + rotary_emb.apply_rotary( + dk1, dk2, rearrange(cos_k, "s d -> s 1 d"), rearrange(sin_k, "s d -> s 1 d"), dk1, dk2, True + ) + return dqkv, None, None, None, None + + +apply_rotary_emb_qkv_ = ApplyRotaryEmbQKV_.apply +legacy_apply_rotary_embed_qkv = LegacyApplyRotaryEmbQKV_.apply + + +class RotaryEmbedding(torch.nn.Module): + """ + The rotary position embeddings from RoFormer_ (Su et. al). + A crucial insight from the method is that the query and keys are + transformed by rotation matrices which depend on the relative positions. + + Other implementations are available in the Rotary Transformer repo_ and in + GPT-NeoX_, GPT-NeoX was an inspiration + + .. _RoFormer: https://arxiv.org/abs/2104.09864 + .. _repo: https://github.com/ZhuiyiTechnology/roformer + .. _GPT-NeoX: https://github.com/EleutherAI/gpt-neox + + If scale_base > 0, this implements XPos (Sun et al., https://arxiv.org/abs/2212.10554). + A recommended value for scale_base is 512: https://github.com/HazyResearch/flash-attention/issues/96 + Reference: https://github.com/sunyt32/torchscale/blob/main/torchscale/component/xpos_relative_position.py + """ + + def __init__(self, dim: int, base=10000, scale_base=0, device=None): + """ """ + super().__init__() + # Generate and save the inverse frequency buffer (non trainable) + inv_freq = 1.0 / (base ** (torch.arange(0, dim, 2, device=device, dtype=torch.float32) / dim)) + self.register_buffer("inv_freq", inv_freq) + self.scale_base = scale_base + scale = ( + (torch.arange(0, dim, 2, device=device, dtype=torch.float32) + 0.4 * dim) / (1.4 * dim) + if scale_base > 0 + else None + ) + self.register_buffer("scale", scale) + + self._seq_len_cached = 0 + self._cos_cached = None + self._sin_cached = None + self._cos_k_cached = None + self._sin_k_cached = None + + def _update_cos_sin_cache(self, x, indexes): + """x: (batch, seqlen, nheads, headdim) or (batch, seqlen, 3, nheads, headdim)""" + if not isinstance(indexes, int): + seqlen = indexes.max().item() + 1 + else: + seqlen = indexes + 1 # eval_forward + # Reset the tables if the sequence length has changed, + # or if we're on a new device (possibly due to tracing for instance) + if seqlen > self._seq_len_cached or self._cos_cached.device != x.device or self._cos_cached.dtype != x.dtype: + self._seq_len_cached = seqlen + t = torch.arange(seqlen, device=x.device, dtype=self.inv_freq.dtype) + # Don't do einsum, it converts fp32 to fp16 + # freqs = torch.einsum("i,j->ij", t, self.inv_freq) + freqs = torch.outer(t, self.inv_freq.to(device=t.device)) + if self.scale is None: + self._cos_cached = torch.cos(freqs).to(x.dtype) + self._sin_cached = torch.sin(freqs).to(x.dtype) + else: + power = ( + torch.arange(seqlen, dtype=self.scale.dtype, device=self.scale.device) - seqlen // 2 + ) / self.scale_base + scale = self.scale.to(device=power.device) ** rearrange(power, "s -> s 1") + # We want the multiplication by scale to happen in fp32 + self._cos_cached = (torch.cos(freqs) * scale).to(x.dtype) + self._sin_cached = (torch.sin(freqs) * scale).to(x.dtype) + self._cos_k_cached = (torch.cos(freqs) / scale).to(x.dtype) + self._sin_k_cached = (torch.sin(freqs) / scale).to(x.dtype) + + def forward(self, qkv: torch.Tensor, indexes=0) -> Tuple[torch.Tensor, torch.Tensor]: + self._update_cos_sin_cache(qkv, indexes) + if self.scale is None: + return apply_rotary_emb_qkv_(qkv, self._cos_cached[indexes], self._sin_cached[indexes]) + else: + return apply_rotary_emb_qkv_( + qkv, + self._cos_cached[indexes], + self._sin_cached[indexes], + self._cos_k_cached[indexes], + self._sin_k_cached[indexes], + ) + + def eval_forward(self, qkv, seqlen_offset=0): + """ + seqlen_offset: can be used in generation where the qkv being passed in is only the last + token in the batch. + """ + self._update_cos_sin_cache(qkv, seqlen_offset + qkv.shape[1]) + if self.scale is None: + return legacy_apply_rotary_embed_qkv( + qkv, self._cos_cached[seqlen_offset:], self._sin_cached[seqlen_offset:] + ) + else: + return legacy_apply_rotary_embed_qkv( + qkv, + self._cos_cached[seqlen_offset:], + self._sin_cached[seqlen_offset:], + self._cos_k_cached[seqlen_offset:], + self._sin_k_cached[seqlen_offset:], + ) diff --git a/internlm/model/linear.py b/internlm/model/linear.py new file mode 100644 index 0000000..88129af --- /dev/null +++ b/internlm/model/linear.py @@ -0,0 +1,176 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from typing import Optional + +import torch +import torch.nn.functional as F +from flash_attn.ops.fused_dense import ( + ColumnParallelLinear, + RowParallelLinear, + fused_dense_func, +) +from torch import nn + +from internlm.core.context import IS_TENSOR_PARALLEL, ParallelMode +from internlm.core.context import global_context as gpc + + +class ScaleColumnParallelLinear(nn.Linear): + """ + ScaleColumnParallelLinear. + + Args: + in_features (int): size of each input sample + out_features (int): size of each output sample + process_group (Optional[torch.distributed.ProcessGroup]): The group of the current device for `parallel_mode`. + bias (bool): Whether the bias is needed for linears. True by default. But it is typically set to False + in the config. + sequence_parallel (bool): If sequence_parallel is True, we're doing Tensor Parallel with sequence parallelism: + we do an all_gather of x before doing the matmul. + If not, then the input is already gathered. + device (Optional[Union[str, torch.device]]): The device will be used. + dtype (Optional[torch.dtype]): The type of data. + weight_scale (int): For training stability. 1 by default. + """ + + def __init__( + self, + in_features: int, + out_features: int, + process_group: Optional[torch.distributed.ProcessGroup], + bias: bool = True, + sequence_parallel: bool = True, + device: Optional[torch.device] = None, + dtype: Optional[torch.dtype] = None, + weight_scale: int = 1, + ) -> None: + world_size = torch.distributed.get_world_size(process_group) + if out_features % world_size != 0: + raise ValueError(f"out_features ({out_features}) must be divisible by " f"world_size ({world_size})") + super().__init__(in_features, out_features // world_size, bias=bias, device=device, dtype=dtype) + self.process_group = process_group + self.sequence_parallel = sequence_parallel + self.weight_scale = weight_scale + + def forward(self, input): # pylint: disable=W0622 + # If self.sequence_parallel is True, we're doing Tensor Parallel with sequence parallelism: + # we do an all_gather of x before doing the matmul. + # If not, then the input is already gathered. + if self.weight_scale != 1: + weight = self.weight * self.weight_scale + (1 - self.weight_scale) * self.weight.detach() + else: + weight = self.weight + return fused_dense_func( + input, weight, self.bias, process_group=self.process_group, sequence_parallel=self.sequence_parallel + ) + + +class RewardModelLinear(ScaleColumnParallelLinear): + """ + RewardModelLinear. + Args: + in_features (int): size of each input sample + out_features (int): size of each output sample + process_group (Optional[torch.distributed.ProcessGroup]): The group of the current device for `parallel_mode`. + bias (bool): Whether the bias is needed for linears. True by default. But it is typically set to False + in the config. + sequence_parallel (bool): If sequence_parallel is True, we're doing Tensor Parallel with sequence parallelism: + we do an all_gather of x before doing the matmul. + If not, then the input is already gathered. + device (Optional[Union[str, torch.device]]): The device will be used. + dtype (Optional[torch.dtype]): The type of data. + weight_scale (int): For training stability. 1 by default. + """ + + def __init__( + self, + in_features: int, + out_features: int, + process_group: Optional[torch.distributed.ProcessGroup], + bias: bool = True, + sequence_parallel: bool = True, + device: Optional[torch.device] = None, + dtype: Optional[torch.dtype] = None, + weight_scale: int = 1, + ) -> None: + super().__init__(in_features, out_features, process_group, bias, sequence_parallel, device, dtype, weight_scale) + torch.distributed.broadcast(self.weight, gpc.get_ranks_in_group(ParallelMode.TENSOR)[0], process_group) + if bias: + torch.distributed.broadcast(self.bias, gpc.get_ranks_in_group(ParallelMode.TENSOR)[0], process_group) + + def forward(self, input): # pylint: disable=W0622 + # If self.sequence_parallel is True, we're doing Tensor Parallel with sequence parallelism: + # we do an all_gather of x before doing the matmul. + # If not, then the input is already gathered. + if self.weight_scale != 1: + weight = self.weight * self.weight_scale + (1 - self.weight_scale) * self.weight.detach() + else: + weight = self.weight + return fused_dense_func( + input, weight, self.bias, process_group=self.process_group, sequence_parallel=self.sequence_parallel + ) + + +class FeedForward(nn.Module): + """ + FeedForward. + + Args: + in_features (int): size of each input sample + hidden_features (int): size of hidden state of FFN + out_features (int): size of each output sample + process_group (Optional[torch.distributed.ProcessGroup]): The group of the current device for `parallel_mode`. + bias (bool): Whether the bias is needed for linears. True by default. But it is typically set to False + in the config. + device (Optional[Union[str, torch.device]]): The device will be used. + dtype (Optional[torch.dtype]): The type of data. + multiple_of (int): For efficient training. Reset the size of hidden feature. 256 by default. + """ + + def __init__( + self, + in_features: int, + hidden_features: int, + out_features: int = None, + process_group: Optional[torch.distributed.ProcessGroup] = None, + bias: bool = True, + device: Optional[torch.device] = None, + dtype: Optional[torch.dtype] = None, + multiple_of: int = 256, + ): + super().__init__() + + hidden_features = multiple_of * ((hidden_features + multiple_of - 1) // multiple_of) + + self.w1 = ColumnParallelLinear( + in_features, + hidden_features, + process_group, + bias, + sequence_parallel=False, + device=device, + dtype=dtype, + ) + self.w2 = ColumnParallelLinear( + in_features, hidden_features, process_group, bias, sequence_parallel=False, device=device, dtype=dtype + ) + self.w3 = RowParallelLinear( + hidden_features, + out_features, + process_group, + bias=bias, + sequence_parallel=False, + device=device, + dtype=dtype, + ) + # need to assign tp attribute so that colossalai know it is tensor parallel module + + if gpc.get_world_size(ParallelMode.TENSOR) > 1: + for name in ["w1", "w2", "w3"]: + for param in getattr(self, name).parameters(): + setattr(param, IS_TENSOR_PARALLEL, True) + + def forward(self, x): + out = self.w3(F.silu(self.w1(x)) * self.w2(x)) + return out diff --git a/internlm/model/loss.py b/internlm/model/loss.py new file mode 100644 index 0000000..ac92b4b --- /dev/null +++ b/internlm/model/loss.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from flash_attn.losses.cross_entropy import CrossEntropyLoss as FlashCrossEntropyLoss +from torch import nn + +from internlm.core.context import ParallelMode +from internlm.core.context import global_context as gpc + + +class FlashGPTLMLoss(nn.Module): + """ + Loss function for flash GPT Language Model. + """ + + def __init__(self, parallel_output=True, label_smoothing=0): + super().__init__() + + if label_smoothing is not None: + if label_smoothing != 0: + if gpc.is_rank_for_log(): + print(f"use label_smoothing: {label_smoothing}") + else: + label_smoothing = 0 + self.label_smoothing = label_smoothing + + if parallel_output: + self.loss_fn = FlashCrossEntropyLoss( + reduction="mean", + inplace_backward=True, + process_group=gpc.get_group(ParallelMode.TENSOR), + label_smoothing=label_smoothing, + ) # The loss in this place is bound to the gather_output initialized by VocabParallelClassifier1D + else: + # Here, the output will gather output is set in the model, so use ordinary loss + self.loss_fn = nn.CrossEntropyLoss(reduction="mean", label_smoothing=label_smoothing) + + def forward(self, *args): + if len(args) == 3: + # residual is to match prenorm + logits, _, labels = args + elif len(args) == 2: + # When using postnorm + logits, labels = args + else: + raise RuntimeError(f"The number of criterion inputs are:{len(args)}") + shift_logits = logits.contiguous().view(-1, logits.size(-1)) + shift_labels = labels.contiguous().view(-1) + loss = self.loss_fn( + shift_logits, shift_labels + ) # There is no need to consider the ignore_index problem here, because the loss calculation will be + # calculated through the calculation range, and -100 must be outside this range, so there is no problem + + return loss diff --git a/internlm/model/modeling_internlm.py b/internlm/model/modeling_internlm.py new file mode 100644 index 0000000..e8cc2a9 --- /dev/null +++ b/internlm/model/modeling_internlm.py @@ -0,0 +1,511 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import math +from typing import Optional + +import torch +from apex.normalization.fused_layer_norm import MixedFusedRMSNorm as RMSNorm +from flash_attn.modules.embedding import ParallelGPT2Embeddings +from flash_attn.modules.mlp import ParallelFusedMLP +from torch import nn + +from internlm.core.context import IS_TENSOR_PARALLEL, ParallelMode +from internlm.core.context.parallel_context import global_context as gpc +from internlm.initialize.initialize_tensor import normal_, scaled_init_method_normal +from internlm.model.embedding import Embedding1D +from internlm.model.linear import ( + FeedForward, + RewardModelLinear, + ScaleColumnParallelLinear, +) +from internlm.model.multi_head_attention import MHA +from internlm.model.utils import gather_forward_split_backward +from internlm.solver.pipeline_utils import partition_uniform +from internlm.utils.checkpoint import activation_checkpoint +from internlm.utils.common import filter_kwargs +from internlm.utils.logger import get_logger +from internlm.utils.registry import MODEL_INITIALIZER + +MODEL_TYPE = "INTERNLM" + +logger = get_logger(__file__) + + +class PackedFlashBaseLayer1D(nn.Module): + """ + 1D Packed Flash Base Layer. + + Args: + hidden_size (int): The hidden size of model. 768 by default. + num_attention_heads (int): The number of attention heads. 12 by default. + mlp_ratio (int): The ratio of MLP layers. 4 by default. + attn_drop_rate (float): The dropout rate of attention module. 0 by default. + drop_rate (float): The dropout rate of the input hidden state. 0.0 by default. + dtype (torch.dtype): Type of data. torch.float by default. + layer_norm_epsilon (float): A value added to the denominator for numerical stability. 1e-5 by default. + checkpoint (bool): Whether to use checkpointing to save VRAM. True by default. + layer_idx (int): The index of current layer. 0 by default. + residual_in_fp32 (bool): Whether to use residual in fp32. False by default. + device (Optional[Union[str, torch.device]]): The device will be used. + norm_type (str): Use RMS norm or layernorm."rmsnorm" by default. + """ + + def __init__( + self, + hidden_size: int = 768, + num_attention_heads: int = 12, + mlp_ratio: int = 4, + attn_drop_rate: float = 0, + drop_rate: float = 0.0, + dtype: torch.dtype = torch.float, + layer_norm_epsilon: float = 1e-6, + checkpoint: bool = False, + layer_idx: int = 0, + residual_in_fp32: bool = False, + device: Optional[torch.device] = None, + norm_type: str = "rmsnorm", + dropout_selective_checkpoint: bool = True, + use_scaled_init: bool = True, + use_swiglu: bool = True, + ): + super().__init__() + self.checkpoint = checkpoint + # dropout selective checkpoint can only be enabled when checkpoint is disabled. + self.dropout_selective_checkpoint = dropout_selective_checkpoint is True and checkpoint is False + self.layer_idx = layer_idx + + head_dim = hidden_size // num_attention_heads + self.mixer = MHA( + embed_dim=hidden_size, + num_heads=num_attention_heads, + process_group=gpc.get_group(ParallelMode.TENSOR), + dropout=attn_drop_rate, + softmax_scale=1 / math.sqrt(head_dim), + causal=True, + layer_idx=layer_idx, + rotary_emb_dim=head_dim, + rotary_emb_scale_base=0, + use_flash_attn=True, + sequence_parallel=False, + device=device, + dtype=dtype, + ) + + self.dropout1 = nn.Dropout(drop_rate) + if norm_type == "rmsnorm": + self.norm1 = RMSNorm(hidden_size, eps=layer_norm_epsilon) + self.norm2 = RMSNorm(hidden_size, eps=layer_norm_epsilon) + else: + self.norm1 = nn.LayerNorm(hidden_size, eps=layer_norm_epsilon) + self.norm2 = nn.LayerNorm(hidden_size, eps=layer_norm_epsilon) + + if use_swiglu: + self.mlp = FeedForward( + hidden_size, + int(hidden_size * mlp_ratio), + out_features=hidden_size, + process_group=gpc.get_group(ParallelMode.TENSOR), + bias=False, + device=device, + dtype=dtype, + ) + else: + self.mlp = ParallelFusedMLP( + hidden_size, + int(hidden_size * mlp_ratio), + out_features=hidden_size, + activation="gelu_approx", + process_group=gpc.get_group(ParallelMode.TENSOR), + bias1=False, + bias2=False, + sequence_parallel=False, + checkpoint_lvl=0, + heuristic="auto", + device=device, + dtype=dtype, + ) + self.dropout2 = nn.Dropout(drop_rate) + self.use_swiglu = use_swiglu + self.use_scaled_init = use_scaled_init + self.residual_in_fp32 = residual_in_fp32 # only make sense when using prenorm + self.return_residual = False + self.reset_parameters() + + def reset_parameters(self): + with torch.no_grad(): + for name, param in self.mixer.named_parameters(): + if param.ndim == 1: + param.data.zero_() + elif "Wqkv" in name: + normal_(std=0.006)(param.data) + elif self.use_scaled_init: + scaled_init_method_normal(sigma=0.006, num_layers=self.layer_idx + 1)(param.data) + else: + normal_(std=0.0015)(param.data) + + for name, param in self.mlp.named_parameters(): + if param.ndim == 1 and "bias" in name: + param.data.zero_() + elif self.use_swiglu: + if self.use_scaled_init and "w2" in name: + scaled_init_method_normal(sigma=0.006, num_layers=self.layer_idx + 1)(param.data) + else: + normal_(std=0.006 if "w1" in name or "w2" in name else 0.0015)(param.data) + else: + if self.use_scaled_init and "fc1" not in name: + scaled_init_method_normal(sigma=0.006, num_layers=self.layer_idx + 1)(param.data) + else: + normal_(std=0.006 if "fc1" in name else 0.0015)(param.data) + + def forward(self, hidden_states, cu_seqlens=None, indexes=None, inference_params=None, max_seqlen=None): + if self.checkpoint and self.training: + return activation_checkpoint( + self._forward, False, hidden_states, cu_seqlens, indexes, inference_params, max_seqlen + ) + else: + return self._forward(hidden_states, cu_seqlens, indexes, inference_params, max_seqlen) + + def _forward(self, hidden_states=None, cu_seqlens=None, indexes=None, inference_params=None, max_seqlen=None): + r"""Pass the input through the encoder layer. + + Args: + hidden_states: the sequence to the encoder layer (required). + residual: hidden_states = Attn/MLP(LN(residual)) + cu_seqlens: 1d LongTensor, len(cu_seqlens) = hidden_states + 1 + indexes: the length of index is same as hidden states, which stand for the current position + """ + mixer_kwargs = { + "cu_seqlens": cu_seqlens, + "max_seqlen": max_seqlen, + "indexes": indexes, + "inference_params": inference_params, + } + + def _dropout_and_norm_attn(_hidden_states): + _dropped = self.dropout1(_hidden_states) + _residual = _dropped + _hidden_states = self.norm1(_residual.float()) + return _residual, _hidden_states + + if self.dropout_selective_checkpoint: + residual, hidden_states = activation_checkpoint(_dropout_and_norm_attn, False, hidden_states) + else: + residual, hidden_states = _dropout_and_norm_attn(hidden_states) + + if self.residual_in_fp32: + residual = residual.to(torch.float32) + + hidden_states = self.mixer(hidden_states, **mixer_kwargs) + + def _dropout_and_norm_ffn(_residual, _hidden_states): + _dropped = self.dropout2(_hidden_states) + _residual = (_dropped + _residual) if _residual is not None else _dropped + _hidden_states = self.norm2(_residual.float()) + return _residual, _hidden_states + + if self.dropout_selective_checkpoint: + residual, hidden_states = activation_checkpoint(_dropout_and_norm_ffn, False, residual, hidden_states) + else: + residual, hidden_states = _dropout_and_norm_ffn(residual, hidden_states) + + if self.residual_in_fp32: + residual = residual.to(torch.float32) + + hidden_states = self.mlp(hidden_states) + + return hidden_states + residual + + +class PackedFlashInternLm1D(nn.Module): + """ + 1D Packed Flash InternLm. + + Args: + num_layers (int): The number of layer. 12 by default. + hidden_size (int): The size of hidden state. 768 by default. + num_attention_heads (int): The number of attention head. 12 by default. + vocab_size (int): The size of vocabulary. 50304 by default. + mlp_ratio (int): The ratio of MLP layers. 4 by default. + attn_drop_rate (float): The dropout rate of attention module. 0.0 by default. + drop_rate (float): The dropout rate of input hidden state. 0.0 by default. + dtype (torch.dtype): The type of data. torch.float by default. + checkpoint (bool): Whether to use checkpointing to save VRAM. True by default. + checkpoint_fraction (float): The proportion of layers that need to be checkpointed compared to the total number + of layers. 1.0 by default. + layer_norm_epsilon (float): A value added to the denominator for numerical stability. 1e-6 by default. + first (bool): Whether input embedding layer or not. False by default. + last (bool): Whether output embedding layer or not. False by default. + embed_split_hidden (bool): Split the embedding layer in the hidden state dimention or vocabulary dimention. + True by default. + embed_grad_scale (float): Refer to GLM-130B, for training stability. 0.1 by default. + parallel_output (bool): If it is necessary to collect the output of parallel computing. True by default. + start_layer_idx (int): The index of start layer in the pipeline. 0 by default. + device (Optional[Union[str, torch.device]]): The device will be used. None by default. + residual_in_fp32 (bool): Whether to use residual in fp32. False by default. + norm_type (str): Normalization type. Use RMSNorm or LayerNorm. "rmsnorm" by default. + + """ + + def __init__( + self, + num_layers: int = 12, + hidden_size: int = 768, + num_attention_heads: int = 12, + vocab_size: int = 50304, + mlp_ratio: int = 4.0, + attn_drop_rate: float = 0.0, + drop_rate: float = 0.0, + dtype: torch.dtype = torch.float, + checkpoint: bool = False, + checkpoint_fraction: float = 1.0, + layer_norm_epsilon: float = 1e-5, + first: bool = False, + last: bool = False, + embed_split_hidden: bool = False, + embed_grad_scale: float = 0.1, + parallel_output: bool = True, + start_layer_idx: int = 0, + device: Optional[torch.device] = None, + residual_in_fp32: bool = False, + norm_type: str = "rmsnorm", + is_reward: bool = False, + dropout_selective_checkpoint: bool = True, + use_scaled_init: bool = True, + use_swiglu: bool = True, + ): + super().__init__() + + if checkpoint_fraction <= 0: + checkpoint = False + if not checkpoint: + checkpoint_fraction = 0 + checkpoint_layer_num = num_layers * checkpoint_fraction + if is_reward: + head_cls = RewardModelLinear + else: + head_cls = ScaleColumnParallelLinear + if first: + if embed_split_hidden: + self.embedding = Embedding1D(num_embeddings=vocab_size, embedding_dim=hidden_size) + else: + self.embedding = ParallelGPT2Embeddings( + embed_dim=hidden_size, + vocab_size=vocab_size, + max_position_embeddings=-1, + process_group=gpc.get_group(ParallelMode.TENSOR), + padding_idx=None, + sequence_parallel=False, + device=device, + dtype=dtype, + ) + for _, param in self.embedding.named_parameters(): + normal_(std=0.0052)(param) + if gpc.get_world_size(ParallelMode.TENSOR) > 1: + setattr(param, IS_TENSOR_PARALLEL, True) + self.embed_grad_scale = embed_grad_scale + self.blocks = nn.ModuleList( + [ + PackedFlashBaseLayer1D( + hidden_size=hidden_size, + num_attention_heads=num_attention_heads, + mlp_ratio=mlp_ratio, + attn_drop_rate=attn_drop_rate, + drop_rate=drop_rate, + dtype=dtype, + layer_norm_epsilon=layer_norm_epsilon, + checkpoint=lid < checkpoint_layer_num, + layer_idx=lid + start_layer_idx, # This parameter is used for caching during generation + residual_in_fp32=residual_in_fp32, + device=device, + norm_type=norm_type, + dropout_selective_checkpoint=dropout_selective_checkpoint, + use_scaled_init=use_scaled_init, + use_swiglu=use_swiglu, + ) + for lid in range(num_layers) + ] + ) + if last: + if norm_type == "rmsnorm": + self.norm = RMSNorm(hidden_size, eps=layer_norm_epsilon) + else: + self.norm = nn.LayerNorm(hidden_size, eps=layer_norm_epsilon) + self.head = head_cls( + in_features=hidden_size, + out_features=gpc.get_world_size(ParallelMode.TENSOR) if is_reward else vocab_size, + process_group=gpc.get_group(ParallelMode.TENSOR), + bias=False, + sequence_parallel=False, + device=device, + dtype=dtype, + weight_scale=embed_grad_scale, + ) + for _, param in self.head.named_parameters(): + normal_(std=0.0052)(param) + if gpc.get_world_size(ParallelMode.TENSOR) > 1: + setattr(param, IS_TENSOR_PARALLEL, True) + self.parallel_output = parallel_output + + def forward(self, hidden_states=None, cu_seqlens=None, input_ids=None, indexes=None, inference_params=None): + # attention_mask: compute attention on the places where the value is 1 + if hasattr(self, "embedding"): + hidden_states = self.embedding(input_ids) + if self.embed_grad_scale != 1: + hidden_states = ( + self.embed_grad_scale * hidden_states + (1 - self.embed_grad_scale) * hidden_states.detach() + ) + if isinstance(cu_seqlens, list): + assert len(cu_seqlens) == 1 + cu_seqlens = cu_seqlens[0].to(hidden_states.device) + + if cu_seqlens is not None: + cu_seqlens = cu_seqlens.squeeze(0) + hidden_states = hidden_states.squeeze(0) # If cu_seqlens is passed in,it indicated a packed state, + # the batch dimension with a size of 1 should be directly squeezed off. + + if indexes is not None: + assert len(indexes) == 1 + # The indexes are used to indicate the actual position IDs of each token in the packed input. + indexes = indexes[0] + max_seqlen = (cu_seqlens[1:] - cu_seqlens[:-1]).max().item() if cu_seqlens is not None else None + + for _, block in enumerate(self.blocks): + hidden_states = block( + hidden_states, + cu_seqlens=cu_seqlens, + indexes=indexes, + inference_params=inference_params, + max_seqlen=max_seqlen, + ) + + if hasattr(self, "norm"): + hidden_states = self.norm(hidden_states.float()) + if hasattr(self, "head"): + hidden_states = self.head(hidden_states) + + if not self.parallel_output: + hidden_states = gather_forward_split_backward(hidden_states, ParallelMode.TENSOR, dim=-1) + return hidden_states + + +def _build_generic_model_1d(num_layers, num_chunks, device=torch.device("cuda"), **kwargs): + """ + build generic model 1d + + Args: + num_layers (int): The number of layer. + num_chunks (int): The number of partitions in pipeline parallel. + device (Optional[Union[str, torch.device]]): The device will be used. torch.device("cuda") by default. + + """ + pipeline_size = gpc.get_world_size(ParallelMode.PIPELINE) + pipeline_rank = gpc.get_local_rank(ParallelMode.PIPELINE) + + # all_parts = partition_uniform_with_embed2(num_layers, pipeline_size, num_chunks) + all_parts = partition_uniform(num_layers, pipeline_size, num_chunks) + parts = all_parts[pipeline_rank] + + models = [] + + if kwargs["checkpoint"] is True: + kwargs["checkpoint_fraction"] = 1.0 + else: + kwargs["checkpoint_fraction"] = 0 + + for start, end in parts: + kwargs["num_layers"] = end - start + kwargs["first"] = start == 0 + # If there is no content in the final layer, assign the last layer. + kwargs["last"] = end == num_layers and len(all_parts[-1]) != 0 + kwargs["device"] = device + kwargs["start_layer_idx"] = start + chunk = PackedFlashInternLm1D(**filter_kwargs(PackedFlashInternLm1D.__init__, kwargs)).to(device) + + models.append(chunk) + torch.distributed.barrier() + if len(models) == 1: + model = models[0] + else: + model = nn.ModuleList(models) + + return model + + +@MODEL_INITIALIZER.register_module(module_name=MODEL_TYPE) +def build_model_with_cfg( + num_chunks=1, + checkpoint=False, + dtype=torch.float, + embed_split_hidden=False, + num_layers=48, + hidden_size=2048, + vocab_size=50304, + embed_grad_scale=1, + parallel_output=True, + num_attention_heads=32, + mlp_ratio=4.0, + residual_in_fp32=False, + norm_type="rmsnorm", + drop_rate=0, + attn_drop_rate=0, + apply_post_layer_norm=False, # pylint: disable=W0613 + layer_norm_epsilon=1e-5, + is_reward=False, + dropout_selective_checkpoint=True, + use_scaled_init: bool = True, + use_swiglu: bool = True, +): + """ + Builde model with config + + Args: + num_chunks (int): The number of partitions in pipeline parallel. 1 by default. + checkpoint (bool): Whether to use checkpointing to save VRAM. False by default. + dtype (torch.dtype): The type of data. torch.float by default. + embed_split_hidden (bool): Split the embedding layer in the hidden state dimention or vocabulary dimention. + False by default. + num_layers (int): The number of layer. 48 by default. + hidden_size (int): The size of hidden state. 2048 by default. + vocab_size (int): The size of vocabulary. 50304 by default. + embed_grad_scale (float): Refer to GLM-130B, for training stability. 0.1 by default. + parallel_output (bool): If it is necessary to collect the output of parallel computing. True by default. + num_attention_heads (int): The number of attention head. 32 by default. + mlp_ratio (int): The ratio of MLP layers. 4.0 by default. + residual_in_fp32 (bool): Whether to use residual in fp32. False by default. It cannot be used temporarily + because this parameter requires inconsistent data types to be passed between pipelines, + which requires significant modifications to internlm. + norm_type (str): Normalization type. Use RMSNorm or LayerNorm. "rmsnorm" by default. + drop_rate (float): The dropout rate of input hidden state. 0 by default. + attn_drop_rate (float): The dropout rate of attention module. 0 by default. + apply_post_layer_norm (bool): Whether to apply post layer norm. False by default. + layer_norm_epsilon (float): A value added to the denominator for numerical stability. 1e-5 by default. + is_reward (bool): Whether to use reward model. False by default. + dropout_selective_checkpoint (bool): It can only be enabled when checkpoint is disabled. True by default. + use_scaled_init (bool): Whether to use scaled init. True by default. + use_swiglu (bool): Whether to use swiglu. True by default. + + """ + + cfg = dict( + hidden_size=hidden_size, + num_attention_heads=num_attention_heads, + checkpoint=checkpoint, + dtype=dtype, + embed_split_hidden=embed_split_hidden, + vocab_size=vocab_size, + embed_grad_scale=embed_grad_scale, + parallel_output=parallel_output, + mlp_ratio=mlp_ratio, + residual_in_fp32=residual_in_fp32, + norm_type=norm_type, + drop_rate=drop_rate, + attn_drop_rate=attn_drop_rate, + layer_norm_epsilon=layer_norm_epsilon, + is_reward=is_reward, + dropout_selective_checkpoint=dropout_selective_checkpoint, + use_scaled_init=use_scaled_init, + use_swiglu=use_swiglu, + ) + + return _build_generic_model_1d(num_layers=num_layers, num_chunks=num_chunks, **cfg) diff --git a/internlm/model/multi_head_attention.py b/internlm/model/multi_head_attention.py new file mode 100644 index 0000000..f9e14d7 --- /dev/null +++ b/internlm/model/multi_head_attention.py @@ -0,0 +1,170 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from typing import Optional + +import torch +from einops import rearrange +from flash_attn.modules.mha import ( + CrossAttention, + FlashCrossAttention, + FlashSelfAttention, + SelfAttention, + _update_kv_cache, +) +from flash_attn.ops.fused_dense import ColumnParallelLinear, RowParallelLinear +from torch import nn + +from internlm.core.context import IS_TENSOR_PARALLEL, ParallelMode +from internlm.core.context import global_context as gpc +from internlm.model.embedding import RotaryEmbedding + + +class MHA(nn.Module): + """ + Multi-head self-attention and cross-attention. + + Args: + embed_dim (int): The dimention of hidden state. + num_heads (int): The number of attention heads. + process_group (torch.distributed.ProcessGroup): The group of the current device for `parallel_mode`. + bias (boolean): Whether the bias is needed for linears. Will be used when initializing QKV matrix and + output projection. True by default. + dropout (float): The dropout rate for cross attention and self attention. 0.0 by default. + softmax_scale (float): The temperature to use for the softmax attention. + causal (boolean): Whether to apply causal attention mask. False by default. + layer_idx (int): The index of current layer. None by default. + rotary_emb_dim (int): The dimention of Rotary Embedding. 0 by default. + rotary_emb_scale_base (int): The scaling factor of Rotary Embedding. If scale_base > 0, this implements + XPos(Sun et al., https://arxiv.org/abs/2212.10554). 0 by default. + use_flash_attn (boolean): Whether to use flash attention or not.If False, vanilla attention module will be used. + False by default. + sequence_parallel (boolean): If True, we're doing Tensor Parallel with sequence parallelism. An all_gather_raw + of x will be done before doing the matmul. + device (Optional[Union[str, torch.device]]): The device will be used. + dtype (Optional[torch.dtype]): The type of data. + + """ + + def __init__( + self, + embed_dim: int, + num_heads: int, + process_group: Optional[torch.distributed.ProcessGroup], + dropout: float = 0.0, + softmax_scale: float = None, + causal: bool = False, + layer_idx: int = None, + rotary_emb_dim: int = 0, + rotary_emb_scale_base: int = 0, + use_flash_attn: bool = False, + sequence_parallel: bool = True, + device: Optional[torch.device] = None, + dtype: Optional[torch.dtype] = None, + ) -> None: + factory_kwargs = {"device": device, "dtype": dtype} + super().__init__() + self.embed_dim = embed_dim + self.causal = causal + self.layer_idx = layer_idx + self.rotary_emb_dim = rotary_emb_dim + self.use_flash_attn = use_flash_attn + self.num_heads = num_heads + assert self.embed_dim % num_heads == 0, "self.kdim must be divisible by num_heads" + self.head_dim = self.embed_dim // num_heads + + if self.rotary_emb_dim > 0: + self.rotary_emb = RotaryEmbedding(self.rotary_emb_dim, scale_base=rotary_emb_scale_base, device=device) + + # notice here should change bias=True + self.Wqkv = ColumnParallelLinear( + embed_dim, + 3 * embed_dim, + process_group, + bias=True, + sequence_parallel=sequence_parallel, + **factory_kwargs, + ) # according to https://spaces.ac.cn/archives/9577 + + inner_attn_cls = FlashSelfAttention if use_flash_attn else SelfAttention + inner_cross_attn_cls = FlashCrossAttention if use_flash_attn else CrossAttention + self.inner_attn = inner_attn_cls(causal=causal, softmax_scale=softmax_scale, attention_dropout=dropout) + self.inner_cross_attn = inner_cross_attn_cls( + causal=causal, softmax_scale=softmax_scale, attention_dropout=dropout + ) + + # output projection always have the bias (for now) + self.out_proj = RowParallelLinear( + embed_dim, embed_dim, process_group, sequence_parallel=sequence_parallel, **factory_kwargs + ) + # need to assign tp attribute so that internlm know it is tensor parallel module + if gpc.get_world_size(ParallelMode.TENSOR) > 1: + for name in ["out_proj", "Wqkv"]: + for param in getattr(self, name).parameters(): + setattr(param, IS_TENSOR_PARALLEL, True) + + def forward(self, x, seqlen=None, inference_params=None, **kwargs): + if kwargs.get("indexes", None) is not None: + return self._packed_forward(x=x, inference_params=inference_params, **kwargs) + else: + return self._forward(x=x, seqlen=seqlen, inference_params=inference_params) + + def _forward(self, x, seqlen=None, inference_params=None): + """ + Arguments: + x: (batch, seqlen, hidden_dim) (where hidden_dim = num heads * head dim) if seqlen=None. + If seqlen is not None, x is (batch * seqlen, hidden_dim). This is so that when we + split x during sequence parallel, we split the batch * seqlen dimension + (in case batch is small). + """ + qkv = self.Wqkv(x) + if seqlen is None: + qkv = rearrange(qkv, "b s (three h d) -> b s three h d", three=3, d=self.head_dim) + else: + qkv = rearrange(qkv, "(b s) (three h d) -> b s three h d", s=seqlen, three=3, d=self.head_dim) + + if self.rotary_emb_dim > 0: + if inference_params is None: + qkv = self.rotary_emb.eval_forward(qkv) + else: + qkv = self.rotary_emb.eval_forward(qkv, seqlen_offset=inference_params.sequence_len_offset) + + if inference_params is None: + context = self.inner_attn(qkv) + else: + q = qkv[:, :, 0] + assert self.layer_idx is not None, "Generation requires layer_idx in the constructor" + kv = _update_kv_cache(qkv[:, :, 1:], inference_params, self.layer_idx) + # If we're processing the prompt, causal=None (use self.causal). + # If we're decoding, then causal=False. + causal = None if inference_params.sequence_len_offset == 0 else False + context = self.inner_cross_attn(q, kv, causal=causal) + + if seqlen is None: + context = rearrange(context, "b s h d -> b s (h d)") + else: + context = rearrange(context, "b s h d -> (b s) (h d)") + + out = self.out_proj(context) + return out + + def _packed_forward(self, x, inference_params=None, **kwargs): + """ + Arguments: + x: (batch, seqlen, hidden_dim) (where hidden_dim = num heads * head dim) if seqlen=None. + If seqlen is not None, x is (batch * seqlen, hidden_dim). This is so that when we + split x during sequence parallel, we split the batch * seqlen dimension + (in case batch is small). + """ + qkv = self.Wqkv(x) # total x hsz' + qkv = rearrange(qkv, "t (three h d) -> t three h d", three=3, d=self.head_dim) # total x 3 x n_head x d + qkv = self.rotary_emb(qkv, kwargs.pop("indexes")) + + if inference_params is None: + context = self.inner_attn(qkv, **kwargs) + else: + raise RuntimeError("Not support this right now") + + context = rearrange(context, "b h d -> b (h d)") # recover the shape + out = self.out_proj(context) + return out diff --git a/internlm/model/utils.py b/internlm/model/utils.py new file mode 100644 index 0000000..b0d7264 --- /dev/null +++ b/internlm/model/utils.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import torch + +from internlm.core.context import global_context as gpc + + +def _split(input_, parallel_mode, dim=-1): + # skip if only one rank involved + world_size = gpc.get_world_size(parallel_mode) + if world_size == 1: + return input_ + + # Split along last dimension. + dim_size = input_.size(dim) + assert dim_size % world_size == 0, ( + f"The dimension to split ({dim_size}) is not a multiple of world size ({world_size}), " + f"cannot split tensor evenly" + ) + + tensor_list = torch.split(input_, dim_size // world_size, dim=dim) + rank = gpc.get_local_rank(parallel_mode) + output = tensor_list[rank].contiguous() + + return output + + +def _gather(input_, parallel_mode, dim=-1): + # skip if only one rank involved + world_size = gpc.get_world_size(parallel_mode) + if world_size == 1: + return input_ + + # all gather + rank = gpc.get_local_rank(parallel_mode) + tensor_list = [torch.empty_like(input_) for _ in range(world_size)] + tensor_list[rank] = input_ + group = gpc.get_cpu_group(parallel_mode) if input_.device.type == "cpu" else gpc.get_group(parallel_mode) + torch.distributed.all_gather(tensor_list, input_, group=group) + + # concat + output = torch.cat(tensor_list, dim=dim).contiguous() + + return output + + +class _GatherForwardSplitBackward(torch.autograd.Function): + """Gather the input from model parallel region and concatenate. + + Args: + input_: input matrix. + parallel_mode: parallel mode. + dim: dimension + """ + + @staticmethod + def symbolic(input_): + return _gather(input_, parallel_mode=None) + + @staticmethod + def forward(ctx, input_, parallel_mode, dim): + ctx.mode = parallel_mode + ctx.dim = dim + return _gather(input_, parallel_mode, dim) + + @staticmethod + def backward(ctx, grad_output): + return _split(grad_output, ctx.mode, ctx.dim), None, None + + +def gather_forward_split_backward(input_, parallel_mode, dim): + return _GatherForwardSplitBackward.apply(input_, parallel_mode, dim) diff --git a/internlm/solver/__init__.py b/internlm/solver/__init__.py new file mode 100644 index 0000000..773f2dc --- /dev/null +++ b/internlm/solver/__init__.py @@ -0,0 +1,8 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from .beta2_scheduler import Beta2Scheduler +from .lr_scheduler import FineTuneCosineAnnealingWarmupLR +from .optimizer import HybridZeroOptimizer + +__all__ = ["Beta2Scheduler", "FineTuneCosineAnnealingWarmupLR", "HybridZeroOptimizer"] diff --git a/internlm/solver/beta2_scheduler.py b/internlm/solver/beta2_scheduler.py new file mode 100644 index 0000000..904f4e0 --- /dev/null +++ b/internlm/solver/beta2_scheduler.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import torch + + +class Beta2Scheduler: + """ + Beta2Scheduler + """ + + def __init__(self, optimizer: torch.optim.Adam, init_beta2, c=0.8, cur_iter=-1): + self.cur_iter = 0 if cur_iter == -1 else cur_iter + self.init_beta2 = init_beta2 + self.c = c + self.optimizer = optimizer + assert isinstance( + optimizer, (torch.optim.Adam, torch.optim.AdamW) + ), "should use Adam optimzier, which has beta2" + + def step(self, cur_iter=None): + if cur_iter is None: + self.cur_iter += 1 + else: + self.cur_iter = cur_iter + + new_beta2 = self.get_beta2() + for pg in self.optimizer.param_groups: + beta1, _ = pg["betas"] + pg["betas"] = (beta1, new_beta2) + + def get_beta2(self): + if self.c <= 0: + return self.init_beta2 + scale = 1 - (1 / self.cur_iter**self.c) + return max(self.init_beta2, scale) diff --git a/internlm/solver/lr_scheduler.py b/internlm/solver/lr_scheduler.py new file mode 100644 index 0000000..2e228aa --- /dev/null +++ b/internlm/solver/lr_scheduler.py @@ -0,0 +1,135 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import json + +from torch.optim.lr_scheduler import CosineAnnealingLR as _CosineAnnealingLR +from torch.optim.lr_scheduler import _LRScheduler + + +class WarmupScheduler(_LRScheduler): + """Starts with a linear warmup lr schedule until it reaches N epochs then applies + the specific scheduler (For example: ReduceLROnPlateau). + + Args: + optimizer (:class:`torch.optim.Optimizer`): Wrapped optimizer. + warmup_epochs (int): Number of epochs to linearly warmup lr until starting applying the scheduler. + after_scheduler (:class:`torch.optim.lr_scheduler`): After target_epoch, use this scheduler. + last_epoch (int, optional): The index of last epoch, defaults to -1. When last_epoch=-1, + the schedule is started from the beginning or When last_epoch=-1, sets initial lr as lr. + """ + + def __init__(self, optimizer, warmup_epochs, after_scheduler, last_epoch=-1): + self.warmup_epochs = int(warmup_epochs) + self.after_scheduler = after_scheduler + self.finished = False + super().__init__(optimizer, last_epoch) + + def state_dict(self): + state_dict = {key: value for key, value in self.__dict__.items() if key not in "optimizer"} + if isinstance(state_dict["after_scheduler"], _LRScheduler): + state_dict["after_scheduler_type"] = type(state_dict["after_scheduler"]).__name__ + state_dict["after_scheduler_dict"] = state_dict["after_scheduler"].state_dict() + del state_dict["after_scheduler"] + else: + raise NotImplementedError() + return state_dict + + def load_state_dict(self, state_dict): + # state_dict = {key: value for key, value in self.__dict__.items() if key not in 'optimizer'} + for key in list(self.__dict__.keys()): + if key in state_dict: + self.__dict__[key] = state_dict[key] + if isinstance(self.after_scheduler, _LRScheduler): + assert type(self.after_scheduler).__name__ == state_dict["after_scheduler_type"] + # state_dict['after_scheduler_dict'] = state_dict['after_scheduler'].state_dict() + self.after_scheduler.load_state_dict(state_dict["after_scheduler_dict"]) + # del state_dict['after_scheduler'] + else: + raise NotImplementedError() + return state_dict + + def get_lr(self): + if self.last_epoch >= self.warmup_epochs: + if not self.finished: + self.after_scheduler.base_lrs = self.base_lrs + self.finished = True + return self.after_scheduler.get_lr() + + return [(self.last_epoch + 1) / self.warmup_epochs * lr for lr in self.base_lrs] + + def step(self, epoch=None): + if self.finished: + if epoch is None: + self.after_scheduler.step(None) + self._last_lr = self.after_scheduler.get_last_lr() + else: + self.after_scheduler.step(epoch - self.warmup_epochs) + self._last_lr = self.after_scheduler.get_last_lr() + else: + return super().step(epoch) + + +class CosineAnnealingWarmupLR(WarmupScheduler): + """Cosine annealing learning rate scheduler with learning rate warmup. A linear warmup schedule will be applied. + + Args: + optimizer (:class:`torch.optim.Optimizer`): Wrapped optimizer. + total_steps (int): Number of total training steps. + warmup_steps (int, optional): Number of warmup steps, defaults to 0. + eta_min (int, optional): Minimum learning rate, defaults to 0. + last_epoch (int, optional): The index of last epoch, defaults to -1. When last_epoch=-1, + the schedule is started from the beginning or When last_epoch=-1, sets initial lr as lr. + """ + + def __init__(self, optimizer, total_steps: int, warmup_steps: int = 0, eta_min: float = 0.0, last_epoch: int = -1): + base_scheduler = _CosineAnnealingLR( + optimizer, total_steps - warmup_steps, eta_min=eta_min, last_epoch=last_epoch + ) + super().__init__(optimizer, warmup_steps, base_scheduler) + + +class FineTuneCosineAnnealingWarmupLR(CosineAnnealingWarmupLR): + """ + FineTune Cosine Annealing Warmup LR. + + Args: + optimizer: The optimizer object. + total_steps (int): The number of total steps. + init_steps (int): The number of init steps, default is 0. + warmup_steps (int): The number of warm up steps, default is 0. + eta_min (float): The minimum learning rate, default is 0.0. + last_epoch: Last epoch, default is -1. + + """ + + def __init__( + self, + optimizer, + total_steps: int, + init_steps: int = 0, + warmup_ratio: float = 0.0, + eta_min: float = 0.0, + last_epoch: int = -1, + ): + self._init_steps = init_steps + self._warmup_steps = int(total_steps * warmup_ratio) + # Use this value to calculate the lr of warmup, because warmup_epochs = init_steps + warmup_steps + super().__init__(optimizer, total_steps, self._warmup_steps + init_steps, eta_min, last_epoch) + + def get_lr(self): + if self.last_epoch >= self.warmup_epochs: + if not self.finished: # pylint: disable=E0203 + # This True switch is to avoid warning when the warmup reaches the preset value switch + self.after_scheduler._get_lr_called_within_step = True + self.after_scheduler.base_lrs = self.base_lrs + self.finished = True + return self.after_scheduler.get_lr() + + elif self.last_epoch >= self._init_steps: + return [(self.last_epoch + 1 - self._init_steps) / self._warmup_steps * lr for lr in self.base_lrs] + else: + return [0 for lr in self.base_lrs] + + def __str__(self): + return json.dumps(self.state_dict(), indent=4, sort_keys=True) diff --git a/internlm/solver/optimizer/__init__.py b/internlm/solver/optimizer/__init__.py new file mode 100644 index 0000000..3da5bbe --- /dev/null +++ b/internlm/solver/optimizer/__init__.py @@ -0,0 +1,6 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from .hybrid_zero_optim import HybridZeroOptimizer + +__all__ = ["HybridZeroOptimizer"] diff --git a/internlm/solver/optimizer/hybrid_zero_optim.py b/internlm/solver/optimizer/hybrid_zero_optim.py new file mode 100644 index 0000000..7b19ecb --- /dev/null +++ b/internlm/solver/optimizer/hybrid_zero_optim.py @@ -0,0 +1,818 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from functools import partial + +import amp_C +import torch +import torch.distributed as dist +from apex.multi_tensor_apply import multi_tensor_applier +from torch._six import inf +from torch.optim import Optimizer + +from internlm.core.context import Config, ParallelMode +from internlm.core.context import global_context as gpc +from internlm.solver.optimizer.store import ( + BucketStore, + GradientStore, + ParameterStore, + TensorBucket, +) +from internlm.solver.optimizer.utils import ( + DynamicGradScaler, + flatten, + get_grad_accumulate_object, + has_inf_or_nan, + reduce_tensor, + release_param_grad, + split_half_float_double, + sync_param, +) +from internlm.utils.common import get_current_device, get_tensor_norm, move_norm_to_cuda +from internlm.utils.logger import get_logger +from internlm.utils.megatron_timers import megatron_timer as timer +from internlm.utils.parallel import is_model_parallel_parameter + +logger = get_logger(__file__) + + +def calc_l2_norm(grads): + norm = 0.0 + if len(grads) > 0: + dummy_overflow_buf = torch.cuda.IntTensor([0]) + norm, _ = multi_tensor_applier( + amp_C.multi_tensor_l2norm, dummy_overflow_buf, [grads], False # no per-parameter norm + ) + return norm + + +def calc_lp(grads, norm_type): + norm = 0.0 + for grad in grads: + grad_norm = torch.norm(grad, norm_type) + norm += grad_norm**norm_type + return norm + + +class BaseOptimizer(Optimizer): + """ + Base Optimizer. + """ + + def __init__(self, optim: Optimizer): # pylint: disable=W0231 + self.optim = optim + + @property + def param_groups(self): + return self.optim.param_groups + + @property + def defaults(self): + return self.optim.defaults + + def add_param_group(self, *args, **kwargs): + return self.optim.add_param_group(*args, **kwargs) + + def step(self, *args, **kwargs): + return self.optim.step(*args, **kwargs) + + def zero_grad(self, *args, **kwargs): + self.optim.zero_grad(*args, **kwargs) + + def load_state_dict(self, *args, **kwargs): + self.optim.load_state_dict(*args, **kwargs) + + def state_dict(self): + return self.optim.state_dict() + + def backward(self, loss): + loss.backward() + + def backward_by_grad(self, tensor, grad): + torch.autograd.backward(tensors=tensor, grad_tensors=grad) + + def clip_grad_norm(self): + pass + + +class HybridZeroOptimizer(BaseOptimizer): + """ + Hybrid Zero Optimizer. + """ + + def __init__( + self, + optimizer: Optimizer, + cpu_offload=False, + overlap_broadcast=False, + grad_scal_cfg: Config = None, + zero_cfg: Config = None, + ): + # DynamicGradScaler related args + initial_scale = grad_scal_cfg.fp16.initial_scale + min_scale = grad_scal_cfg.fp16.min_scale + growth_interval = grad_scal_cfg.fp16.growth_interval + growth_factor = grad_scal_cfg.growth_factor + backoff_factor = grad_scal_cfg.backoff_factor + hysteresis = grad_scal_cfg.hysteresis + max_scale = grad_scal_cfg.max_scale + + # Zero related args + overlap_communication = zero_cfg.zero_overlap_communication + reduce_bucket_size = zero_cfg.reduce_bucket_size + clip_grad_norm = zero_cfg.clip_grad_norm + + super().__init__(optim=optimizer) + + self._dtype = self.optim.param_groups[0]["params"][0].dtype + self._cpu_offload = cpu_offload + self._zero_local_rank = gpc.get_local_rank(ParallelMode.ZERO1) + self._zero_world_size = gpc.get_world_size(ParallelMode.ZERO1) + self._broadcast_parallel_mode = ParallelMode.ZERO1 + + # ParameterStore will manage the tensor buffers used for zero + # it will not manage the tensors used by mixed precision training + self._param_store = ParameterStore(ParallelMode.ZERO1) + self._grad_store = GradientStore(ParallelMode.DATA) + self._bucket_store = BucketStore(ParallelMode.DATA) + + # fp16 and fp32 params for mixed precision training + self._fp16_param_groups = dict() + self._fp32_flat_param_groups_of_current_rank = dict() + + # communication params + self._overlap_communication = overlap_communication + self._reduce_bucket_size = reduce_bucket_size + + # gradient scaler + self.grad_scaler = DynamicGradScaler( + initial_scale=initial_scale, + min_scale=min_scale, + growth_factor=growth_factor, + backoff_factor=backoff_factor, + growth_interval=growth_interval, + hysteresis=hysteresis, + max_scale=max_scale, + ) + self._found_overflow = torch.cuda.FloatTensor([0], device=get_current_device()) + + # gradient clipping + self._clip_grad_norm = clip_grad_norm + + # need to record the rank in which parameter groups are not assigned parameters. + self.param_group_has_params = [] + self.param_group_no_params_ranks = [] + self.padding_grad = torch.zeros([32], dtype=self._dtype, device=get_current_device()) + self.padding_tensor = torch.zeros([32], dtype=self._dtype, device=get_current_device()) + + self.rank_unique_id = ( + f"gpus-{gpc.get_world_size(ParallelMode.GLOBAL)}_" + + f"pp-{gpc.get_local_rank(ParallelMode.PIPELINE)}_" + + f"tp-{gpc.get_local_rank(ParallelMode.TENSOR)}_" + + f"zo-{self._zero_local_rank}.pt" + ) + self.params_per_rank_id_dict = [] + self.overlap_broadcast = overlap_broadcast + + # iterate over the param group in the optimizer + # partition these param groups for data parallel training + # and add buffers to parameter store for future access + for group_id, param_group in enumerate(self.optim.param_groups): + group_params = param_group["params"] + + # add the fp16 params to fp16_param_groups for bookkeeping + self._fp16_param_groups[group_id] = group_params + + # assign parameters to ranks the params in the list are sorted + params_per_rank, no_params_ranks = self._partition_param_list(group_params) + self.param_group_no_params_ranks.append(no_params_ranks) + self.param_group_has_params.append(self._zero_local_rank not in no_params_ranks) + + # store the mapping between param to rank each param should belong to only one rank + for rank, params in enumerate(params_per_rank): + # check whether any rank is not assigned params. + if len(params) != 0: + self._param_store.add_fp16_param_list_by_rank_group(rank, group_id, params) + for param in params: + self._param_store.set_param_to_rank(param, rank) + + # move to cpu to make room to create the flat tensor + for param in group_params: + param.data = param.data.cpu() + + # flatten the reordered tensors + for rank in range(self._zero_world_size): + # No flat fp16 buffer is allocated if the process has no parameters. + if rank not in self.param_group_no_params_ranks[group_id]: + tensor_list = self._param_store.get_fp16_params_by_rank_group(rank, group_id) + with torch.no_grad(): + flat_tensor = flatten(tensor_list) + flat_tensor = flat_tensor.data.cuda() + self._param_store.add_flat_fp16_param_by_rank_group(rank, group_id, flat_tensor) + sync_param(flat_tensor=flat_tensor, tensor_list=tensor_list) + + # create a copy of fp32 weights of the parameters for which this rank is responsible + # No flat fp32 buffer is allocated if the process has no parameters. + if self.param_group_has_params[group_id]: + fp16_flat_current_rank = self._param_store.get_flat_fp16_param_by_rank_group( + self._zero_local_rank, group_id + ) + fp32_flat_current_rank = fp16_flat_current_rank.float() + device = "cpu" if self._cpu_offload else get_current_device() + fp32_flat_current_rank = fp32_flat_current_rank.to(device) + fp32_flat_current_rank.requires_grad = True + self._fp32_flat_param_groups_of_current_rank[group_id] = fp32_flat_current_rank + + # need to replace the params in the `params` field in the optimizer + # so that when the optimizer calls step(), it only updates the tensors + # managed by this data parallel rank + param_group["params"] = [fp32_flat_current_rank] + + # set reduction state + for param in self._fp16_param_groups[group_id]: + self._param_store.set_param_reduction_state(param, False) + + assert len(self._fp16_param_groups) != 0 + + # If a rank is not assigned any arguments, 'has_params' is False. + self.has_params = sum(self.param_group_has_params) != 0 + # flag used to skip unnecessary gradient reduce operation when gradient accumulation is enabled. + self.skip_grad_reduce = False + + # intialize communication stream for + # communication-compuation overlapping + if self._overlap_communication: + self._comm_stream = torch.cuda.Stream() + + # reduction hook is only used if overlapping communication + # if it is stage 1 without overlapping, no hook will be attached + if self._overlap_communication: + self._attach_reduction_hook() + + @property + def zero_local_rank(self): + return self._zero_local_rank + + @property + def zero_world_size(self): + return self._zero_world_size + + @property + def dtype(self): + return self._dtype + + @property + def loss_scale(self): + return self.grad_scaler.scale + + @property + def num_param_groups(self): + return len(self._fp16_param_groups) + + def _partition_param_list(self, param_list): + no_params_ranks = [] + params_per_rank = [[] for _ in range(self._zero_world_size)] + numel_per_rank = [0 for _ in range(self._zero_world_size)] + self.params_per_rank_id_dict.append([[] for _ in range(self._zero_world_size)]) + + sorted_params = sorted(param_list, key=lambda x: x.numel(), reverse=True) + for i, param in enumerate(sorted_params): + global_id = str(i) + for j in range(len(param.size())): + global_id = "_".join([global_id, str(param.size()[j])]) + + rank_to_go = numel_per_rank.index(min(numel_per_rank)) + params_per_rank[rank_to_go].append(param) + self.params_per_rank_id_dict[-1][rank_to_go].append(global_id) + numel_per_rank[rank_to_go] += param.numel() + + # check whether any rank is not assigned to parameters. + for rank, params in enumerate(params_per_rank): + if len(params) == 0: + no_params_ranks.append(rank) + + if gpc.is_rank_for_log(): + logger.info(f"Number of elements on ranks: {numel_per_rank}, rank:{gpc.get_global_rank()}") + + return params_per_rank, set(no_params_ranks) + + def _attach_reduction_hook(self): + # we iterate over the fp16 params + # on each param, we register a hook to its AccumulateGrad object + for group_id in range(self.num_param_groups): + param_group = self._fp16_param_groups[group_id] + for param in param_group: + if param.requires_grad: + reduce_rank = None + + def _define_and_attach(param, reduce_rank=None): + # get the AccumulateGrad object of the param itself + # If these objects are not kept, reduction hooks may not be attached successfully. + accum_grad_obj = get_grad_accumulate_object(param) + self._grad_store.add_accumulate_grad_object(accum_grad_obj) + + reduction_func = partial( + self._store_and_try_reduce_grads_by_bucket, param=param, reduce_rank=reduce_rank + ) + + # define hook + # NOT IMPORTANT BUT GOOD TO KNOW: + # args here is not grad, but allow_unreacable and accumulate_grad + def reduce_grad_hook(*args): # pylint: disable=W0613 + if self.skip_grad_reduce is False: + reduction_func() + + accum_grad_obj.register_hook(reduce_grad_hook) + + _define_and_attach(param, reduce_rank) + + def _store_and_try_reduce_grads_by_bucket(self, param, reduce_rank=None): + param_size = param.numel() + + # check if the bucket is full + # if full, will reduce the grads already in the bucket + # after reduction, the bucket will be empty + if self._bucket_store.num_elements_in_bucket(reduce_rank) + param_size > self._reduce_bucket_size: + self._reduce_grads_stored_in_bucket(reduce_rank) + + # the param must not be reduced to ensure correctness + is_param_reduced = self._param_store.is_param_reduced(param) + if is_param_reduced: + msg = ( + f"Parameter of size ({param.size()}) has already been reduced, " + + "duplicate reduction will lead to arithmetic incorrectness" + ) + raise RuntimeError(msg) + + # the param must have grad for reduction + assert param.grad is not None, f"Parameter of size ({param.size()}) has None grad, cannot be reduced" + + self._bucket_store.add_num_elements_in_bucket(param_size, reduce_rank) + self._bucket_store.add_grad(param.grad, reduce_rank) + self._bucket_store.add_param(param, reduce_rank) + + def _reduce_grads_stored_in_bucket(self, reduce_rank=None): + # reduce grads + self._reduce_grads_by_rank( + reduce_rank=reduce_rank, + grads=self._bucket_store.get_grad(reduce_rank=reduce_rank), + bucket_size=self._bucket_store.num_elements_in_bucket(reduce_rank), + ) + + # use communication stream if overlapping + # communication with computation + if self._overlap_communication: + stream = self._comm_stream + else: + stream = torch.cuda.current_stream() + + with torch.cuda.stream(stream): + params_in_bucket = self._bucket_store.get_param(reduce_rank=reduce_rank) + + for param in params_in_bucket: + # the is_param_reduced flag should be False showing that + # this param is not reduced before calling self._reduce_grads_by_rank + is_param_reduced = self._param_store.is_param_reduced(param) + + if is_param_reduced: + msg = ( + f"Parameter of size ({param.size()}) has been reduced, " + + "duplicate reduction will lead to arithmetic incorrectness" + ) + raise RuntimeError(msg) + + # update the flag + self._param_store.set_param_reduction_state(param, True) + + self._bucket_store.reset_by_rank(reduce_rank) + + def _reduce_grads_by_rank(self, reduce_rank, grads, bucket_size): + grad_buckets_by_dtype = split_half_float_double(grads) + + for tensor_list in grad_buckets_by_dtype: + param_bucket = TensorBucket(size=bucket_size) + for tensor in tensor_list: + param_bucket.add_to_bucket(tensor, allow_oversize=True) + if param_bucket.is_full_or_oversized(): + self._reduce_and_copy(bucket=param_bucket, reduce_rank=reduce_rank) + param_bucket.empty() + if not param_bucket.is_empty(): + self._reduce_and_copy(bucket=param_bucket, reduce_rank=reduce_rank) + + def _reduce_and_copy(self, bucket: TensorBucket, reduce_rank): + if self._overlap_communication: + torch.cuda.synchronize() + self._param_store.clear_grads_of_previous_reduced_params() + stream = self._comm_stream + else: + stream = torch.cuda.current_stream() + + with torch.cuda.stream(stream): + flat = bucket.flatten() + reduced_flat = reduce_tensor( + tensor=flat, dtype=self.dtype, dst_rank=reduce_rank, parallel_mode=ParallelMode.DATA + ) + + # update the reduced tensor + if reduce_rank is None or reduce_rank == self._zero_local_rank: + bucket.unflatten_and_copy(reduced_flat) + + def _has_inf_or_nan(self, tensor): + try: + tensor_mean = float(tensor.mean()) + except RuntimeError as instance: + # We want to check if inst is actually an overflow exception. + # RuntimeError could come from a different error. + # If so, we still want the exception to propagate. + if "value cannot be converted" not in instance.args[0]: + raise + return True + else: + if tensor_mean == float("inf") or tensor_mean == -float("inf"): + return True + return False + + def _sync_grad(self): + # update param already reduced flag + reduction_states = self._param_store.get_param_reduction_states() + for tensor, _ in reduction_states.items(): + reduction_states[tensor] = False + + # accumulate gradient + avg_gradients = self._grad_store._averaged_gradients + for group_id in range(self.num_param_groups): + # the following operations are performed only on the rank to which parameters are assigned. + if self._zero_local_rank not in self.param_group_no_params_ranks[group_id]: + param_group = self._param_store.get_fp16_params_by_rank_group(self._zero_local_rank, group_id) + + if group_id not in avg_gradients: + avg_gradients[group_id] = [] + + param_idx = 0 + for param in param_group: + if param.grad is not None: + if len(avg_gradients[group_id]) == param_idx: + avg_gradients[group_id].append(param.grad) + else: + avg_gradients[group_id][param_idx].add_(param.grad) + param_idx += 1 + + # the gradients needed are stored in the avg_gradients buffer + # thus, can clear this + self.zero_grad() + + def zero_grad(self, set_to_none=True): + """ + Set parameter gradients to zero. If set_to_none = True, gradient + will be set to None to save memory. + + :param set_to_none: Whether set the gradient to None. Default value is True. + :type set_to_none: bool + """ + for _, param_group in self._fp16_param_groups.items(): + for param in param_group: + if set_to_none: + param.grad = None + elif param.grad is not None: + param.grad.detach() + param.grad.zero_() + else: + pass + + def backward(self, loss, retain_graph=False): + loss = self.loss_scale * loss + loss.backward(retain_graph=retain_graph) + + # Gradients may not be fully synchronized here. + + def step(self, closure=None): + """Performs a single optimization step. + + Args: + closure (Callable, optional): A closure that reevaluates the model + and returns the loss. + Returns: + Union[bool, float]: Whether the gradient is success updated, and the gradient. + """ + assert closure is None, "closure is not supported by step()" + + timer("sync_grad").start() + # if not overlapping communication (no reduction hook is attached) + # we need to manually reduce these gradients + if not self._overlap_communication: + for group_id in range(len(self._fp16_param_groups)): + for param in self._fp16_param_groups[group_id]: + if param.grad is not None: + self._store_and_try_reduce_grads_by_bucket(param) + + # we need to reduce the gradients left in the communication bucket + self._reduce_grads_stored_in_bucket() + + # clear reduced grads + if self._overlap_communication: + torch.cuda.synchronize() + self._param_store.clear_grads_of_previous_reduced_params() + + self._sync_grad() + timer("sync_grad").stop() + + return self._step(closure=closure) + + def _step(self, closure=None): + assert closure is None, "closure is not supported by step()" + + # check for overflow + found_inf = self._check_overflow() + # Because you may encounter inf when computing norm + timer("cal_norm").start() + norm_groups = [] + for group_id in range(self.num_param_groups): + # compute norm + if self._zero_local_rank not in self.param_group_no_params_ranks[group_id]: + gradients = self._grad_store.get_averaged_gradients_by_group(group_id) + parameters = self._param_store.get_fp16_params_by_rank_group( + group_id=group_id, rank=self._zero_local_rank + ) + else: + # in order to prevent collection communication from hanging, + # we need to involve rank that are not assigned parameters in compute_norm(), + # so we give them a fp16 vector of 0 values. + gradients = [self.padding_grad] + parameters = [self.padding_tensor] + + if self._clip_grad_norm > 0: + # this norm is before scaling, it will be very large + norm_group = compute_norm( + gradients=gradients, + parameters=parameters, + ) + if norm_group == -1: + timer("cal_norm").stop() + found_inf = True + break + norm_groups.append(norm_group) + + loss_scale = float(self.loss_scale.item()) # backup + self.grad_scaler.update(found_inf) + # update loss scale if overflow occurs + if found_inf: + if gpc.is_rank_for_log(): + logger.warning("Overflow occurs, please check it.") + self._grad_store._averaged_gradients = dict() + self.zero_grad() + return False, None + + # copy the grad of fp16 param to fp32 param + single_grad_partition_groups = [] + global_norm = 0 + for group_id in range(self.num_param_groups): + # compute norm + # The following operations are performed only on the rank to which parameters are assigned. + if not self.param_group_has_params[group_id]: + continue + gradients = self._grad_store.get_averaged_gradients_by_group(group_id) + + # create flat gradient for the flat fp32 params + fp16_avg_grads = gradients + flat_fp16_avg_grads = flatten(fp16_avg_grads) + + dtype = self._fp32_flat_param_groups_of_current_rank[group_id].dtype + flat_fp32_avg_grads = flat_fp16_avg_grads.to(dtype) + + param_shape = self._fp32_flat_param_groups_of_current_rank[group_id].shape + assert ( + param_shape == flat_fp32_avg_grads.shape + ), f"fp32 param and grad have different shape {param_shape} vs {flat_fp32_avg_grads.shape}" + + single_grad_partition_groups.append(flat_fp32_avg_grads) + device = self._fp32_flat_param_groups_of_current_rank[group_id].device + self._fp32_flat_param_groups_of_current_rank[group_id].grad = flat_fp32_avg_grads.to(device) + self._grad_store._averaged_gradients[group_id] = [] + self._grad_store._averaged_gradients[group_id] = [] + + # unscale and clip grads + # get the global norm + if self._clip_grad_norm > 0: + global_norm = sum(norm_groups) ** 0.5 + + # the following operations are performed only on the rank to which parameters are assigned. + if len(single_grad_partition_groups) != 0: + self._unscale_and_clip_grads(single_grad_partition_groups, global_norm, loss_scale) + + timer("cal_norm").stop() + # update the parameters + timer("step").start() + + # For those ranks that are not assigned parameters, we just wait for other ranks + # to send them updated their own parameters. + if self.has_params: + self.optim.step() + # release the fp32 grad + release_param_grad(self._fp32_flat_param_groups_of_current_rank.values()) + # update fp16 partition updated by the current rank + for group_id in range(len(self._fp16_param_groups)): + if self.param_group_has_params[group_id]: + fp16_param = self._param_store.get_flat_fp16_param_by_rank_group( + rank=self._zero_local_rank, group_id=group_id + ) + fp32_param = self._fp32_flat_param_groups_of_current_rank[group_id] + fp16_param.data.copy_(fp32_param) + + # TODO: support broadcast overlap + self.broadcast_params(overlap=False) + + timer("step").stop() + # update gradients may not be needed here, because the sync_params function is used in initialization, + # so synchronization is maintained + return True, global_norm / loss_scale + + def broadcast_params(self, overlap=False): + handles = [] + + for group_id in range(self.num_param_groups): + for rank in range(self._zero_world_size): + # The following operations are performed only on the rank to which parameters are assigned. + if rank not in self.param_group_no_params_ranks[group_id]: + fp16_param = self._param_store.get_flat_fp16_param_by_rank_group(rank=rank, group_id=group_id) + # grank = gpc.get_ranks_in_group(group_type)[rank] # need to convert to the global rank + # assert grank == rank, f"{grank} == {rank}" + g_rank = gpc.get_ranks_in_group(self._broadcast_parallel_mode)[rank] + handle = dist.broadcast( + fp16_param, src=g_rank, group=gpc.get_group(ParallelMode.ZERO1), async_op=True + ) + handles.append(handle) + + if not overlap: + for handle in handles: + handle.wait() + else: + return handles + + ################## + # FP16 Utilities # + ################## + + def _check_overflow(self): + # clear previous overflow record + self._found_overflow.fill_(0.0) + + # check for overflow + for group_id in range(len(self._fp16_param_groups)): + # The following operations are performed only on the rank to which parameters are assigned. + if self._zero_local_rank not in self.param_group_no_params_ranks[group_id]: + for avg_grad in self._grad_store.get_averaged_gradients_by_group(group_id): + if avg_grad is not None and has_inf_or_nan(avg_grad): + self._found_overflow.fill_(1.0) + break + dist.all_reduce(self._found_overflow, op=dist.ReduceOp.MAX, group=gpc.get_group(ParallelMode.GLOBAL)) + + return self._found_overflow.item() > 0 + + def _unscale_and_clip_grads(self, grad_groups_flat, total_norm, loss_scale): + # compute combined scale factor for this group + combined_scale = loss_scale + + if self._clip_grad_norm > 0.0: + # norm is in fact norm*scale + clip = ((total_norm / loss_scale) + 1e-6) / self._clip_grad_norm + if clip > 1.0: + combined_scale = clip * loss_scale + + for grad in grad_groups_flat: + grad.data.mul_(1.0 / combined_scale) + + def clip_grad_norm(self, model, max_norm): + # will conduct in the step() + pass + + def state_dict(self): + states = {} + grad_scaler = self.grad_scaler.state_dict() + states["grad_scaler"] = grad_scaler + optim_states = self.optim.state_dict() + states["base_optim_states"] = optim_states + + flat_fp32_weights = {} + for group_id, param in self._fp32_flat_param_groups_of_current_rank.items(): + if self._zero_local_rank not in self.param_group_no_params_ranks[group_id]: + assert param.grad is None + flat_fp32_weights[group_id] = param + states["flat_fp32_weights"] = flat_fp32_weights + states["zero_devide_optim_plan"] = self.params_per_rank_id_dict + + return states + + def load_state_dict(self, states): + # TODO: Need to take into account the change in the number of DP. + assert "grad_scaler" in states, "Not found grad_scaler state!" + grad_scaler = states["grad_scaler"] + self.grad_scaler.load_state_dict(grad_scaler) + optim_states = states["base_optim_states"] + self.optim.load_state_dict(optim_states) + + # load fp32 model weight. + flat_fp32_weights = states["flat_fp32_weights"] + assert set(flat_fp32_weights.keys()) == set(self._fp32_flat_param_groups_of_current_rank) + for group_id, param in flat_fp32_weights.items(): + if self._zero_local_rank not in self.param_group_no_params_ranks[group_id]: + self_param = self._fp32_flat_param_groups_of_current_rank[group_id] + assert ( + self_param.shape == param.shape + ), f"The loaded parameter shape is inconsistent, {self_param.shape} != {param.shape}" + self_param.data.copy_(param.data) + + # Load the fp16 model weights. + for group_id in range(len(self._fp16_param_groups)): + if self._zero_local_rank not in self.param_group_no_params_ranks[group_id]: + fp16_param = self._param_store.get_flat_fp16_param_by_rank_group( + rank=self._zero_local_rank, group_id=group_id + ) + fp32_param = self._fp32_flat_param_groups_of_current_rank[group_id] + fp16_param.data.copy_(fp32_param) + + if "zero_devide_optim_plan" in states: + self.params_per_rank_id_dict = states["zero_devide_optim_plan"] + + +def compute_norm(gradients, parameters, norm_type=2): + """Get the norm + Arguments: + gradients (Iterable[Tensor]): The gradient value. + parameters (Iterable[Tensor]): The parameter each gradient corresponds to. + norm_type (float or int): type of the used p-norm. Can be ``'inf'`` for + infinity norm. + + Returns: + Total norm of the parameters, need total_norm**(1/norm) before using. + """ + + enable_cuda_kernels = gradients[0].device.type == "cuda" + # Norm parameters. + norm_type = float(norm_type) + + # Calculate norm. + if norm_type == inf: + total_norm = max(g.data.abs().max() for g in gradients) + total_norm_cuda = torch.FloatTensor([float(total_norm)], device=gradients[0].device) + # Take max across all model-parallel GPUs. + if gpc.get_world_size(ParallelMode.MODEL) > 1: + dist.all_reduce(total_norm_cuda, op=dist.ReduceOp.MAX, group=gpc.get_group(ParallelMode.MODEL)) + total_norm = total_norm_cuda[0].item() + else: + tensor_parallel_grads = [] + for g, p in zip(gradients, parameters): + # TODO: consider the pipeline shared parameter + if ( + gpc.is_initialized(ParallelMode.PIPELINE) + and hasattr(p, "pipeline_shared_module_pg") + and dist.get_rank(p.pipeline_shared_module_pg) == 0 + ): # if shared between different pipe, only count o + tensor_parallel_grads.append(g.data.float()) + elif ( + gpc.is_initialized(ParallelMode.PIPELINE) + and hasattr(p, "pipeline_shared_module_pg") + and dist.get_rank(p.pipeline_shared_module_pg) != 0 + ): + continue + elif ( + gpc.is_initialized(ParallelMode.TENSOR) + and not is_model_parallel_parameter(p) + and gpc.get_local_rank(ParallelMode.TENSOR) == 0 + ): # if not used in each chunk, such as layernorm + tensor_parallel_grads.append(g.data.float()) + elif is_model_parallel_parameter(p): + tensor_parallel_grads.append(g.data.float()) + elif gpc.get_local_rank(ParallelMode.TENSOR) != 0: + continue + else: + raise RuntimeError("Should not arrive here") + + if norm_type == 2.0 and enable_cuda_kernels: + tensor_parallel_norm = calc_l2_norm(tensor_parallel_grads) ** norm_type + else: + tensor_parallel_norm = calc_lp(tensor_parallel_grads, norm_type) + + # If norm is type of float, then we convert them into torch.Tensor. + tensor_parallel_norm = get_tensor_norm(tensor_parallel_norm, enable_cuda_kernels) + # If grads are on CPU, the norms is also on CPU. Cast them to CUDA tensors + if not enable_cuda_kernels: + tensor_parallel_norm = move_norm_to_cuda(tensor_parallel_norm) + + total_norm = tensor_parallel_norm + + # Sum across all model-parallel GPUs. + if gpc.is_initialized(ParallelMode.MODEL): + dist.all_reduce(total_norm, op=dist.ReduceOp.SUM, group=gpc.get_group(ParallelMode.MODEL)) + + # This is because we use zero1, so we need to use this reduction. + # TODO: Check zero group to be a subset of dp group. + dist.all_reduce(total_norm, op=dist.ReduceOp.SUM, group=gpc.get_group(ParallelMode.ZERO1)) + + if torch.is_tensor(total_norm): + total_norm = total_norm.item() + + # Scale. + if total_norm == float("inf") or total_norm == -float("inf"): + total_norm = -1 + + return total_norm diff --git a/internlm/solver/optimizer/store.py b/internlm/solver/optimizer/store.py new file mode 100644 index 0000000..2ef2e4f --- /dev/null +++ b/internlm/solver/optimizer/store.py @@ -0,0 +1,284 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from typing import List + +from torch import Tensor +from torch._utils import _flatten_dense_tensors, _unflatten_dense_tensors + +from internlm.core.context import ParallelMode +from internlm.core.context import global_context as gpc + + +class BaseStore: + """ + Base Store + """ + + def __init__(self, dp_parallel_mode=ParallelMode.DATA): + self._world_size = gpc.get_world_size(dp_parallel_mode) + self._local_rank = gpc.get_local_rank(dp_parallel_mode) + + @property + def world_size(self): + return self._world_size + + @property + def local_rank(self): + return self._local_rank + + +class BucketStore(BaseStore): + """ + Bucket Store + """ + + def __init__(self, dp_parallel_mode): + super().__init__(dp_parallel_mode) + self._grads = dict() + self._params = dict() + self._num_elements_in_bucket = dict() + + self.reset() + + def num_elements_in_bucket(self, reduce_rank: int = None): + return self._num_elements_in_bucket[reduce_rank] + + def add_num_elements_in_bucket(self, num_elements, reduce_rank: int = None): + self._num_elements_in_bucket[reduce_rank] += num_elements + + def add_grad(self, tensor, reduce_rank: int = None): + self._grads[reduce_rank].append(tensor) + + def add_param(self, tensor, reduce_rank: int = None): + self._params[reduce_rank].append(tensor) + + def reset(self): + keys = [None] + list(range(self._world_size)) + self._grads = {rank: [] for rank in keys} + self._params = {rank: [] for rank in keys} + self._num_elements_in_bucket = {rank: 0 for rank in keys} + + def reset_by_rank(self, reduce_rank=None): + self._grads[reduce_rank] = [] + self._params[reduce_rank] = [] + self._num_elements_in_bucket[reduce_rank] = 0 + + def get_grad(self, reduce_rank: int = None): + return self._grads[reduce_rank] + + def get_param(self, reduce_rank: int = None): + return self._params[reduce_rank] + + +class GradientStore(BaseStore): + """ + Gradient Store + """ + + def __init__(self, *args): + super().__init__(*args) + # bookkeeping data structures + self._averaged_gradients = dict() + + # for backward reduction hooks + self._grad_acc_objs = [] + + def add_accumulate_grad_object(self, obj): + """ + Keep :class:`AccumulateGrad` objects. If these objects are not kept, reduction hooks may not + be attached successfully. + + :param obj: An object of :class:`AccumulateGrad` class + :type obj: :class:`AccumulateGrad` + """ + + self._grad_acc_objs.append(obj) + + def get_averaged_gradients_by_group(self, group_id: int) -> List[Tensor]: + """ + Return average gradients of a parameter group + + :param group_id: The index of parameter group + :type group_id: int + + :return: Return the list of averaged gradients of a parameter group. Each element is a gradient, + not a parameter. + :rtype: List[torch.Tensor] + """ + + return self._averaged_gradients[group_id] + + def add_average_gradient_by_group(self, group_id: int, tensor: Tensor) -> None: + """ + Append an average gradient to the list of averaged gradients of a parameter group + + :param group_id: The index of a parameter group + :param tensor: A :class:`torch.Tensor` object + :type group_id: int + :type tensor: torch.Tensor + + """ + + if group_id in self._averaged_gradients: + self._averaged_gradients[group_id].append(tensor) + else: + self._averaged_gradients[group_id] = [tensor] + + def reset_average_gradients_by_group(self, group_id: int) -> None: + """ + Reset the bookkeeping data structure for averaged gradients to an empty list + + :param group_id: The index of a parameter group + :type group_id: int + """ + + self._averaged_gradients[group_id] = [] + + +class ParameterStore(BaseStore): + """ + Parameter Store + """ + + def __init__(self, dp_paralle_mode): + super().__init__(dp_paralle_mode) + # param partitioning data structures + self._fp16_param_to_rank = dict() + self._rank_groupid_to_fp16_param_list = dict() + self._rank_group_id_to_flat_fp16_param = dict() + + # param reduction data structures + self._is_param_reduced = dict() + self._reduced_param = [] + + def set_param_to_rank(self, tensor: Tensor, rank: int) -> None: + """ + Set the mapping between parameter to rank, each parameter should be owned by a rank. + + :param tensor: A :class:`torch.Tensor` object + :type tensor: torch.Tensor + :param rank: The rank of which the process is responsible for updating the parameter + :type rank: int + """ + + self._fp16_param_to_rank[tensor] = rank + + def get_param_rank(self, tensor: Tensor) -> int: + """ + Gives the rank which the parameter belongs to + + :param tensor: A :class:`torch.Tensor` object + :type tensor: torch.Tensor + """ + return self._fp16_param_to_rank[tensor] + + def belongs_to_current_rank(self, tensor) -> bool: + """ + Check whether a parameter is supposed to be updated by the process of the current rank + + :param tensor: A :class:`torch.Tensor` object + :type tensor: torch.Tensor + + :return: True if the parameter should be updated by the current rank. Otherwise false. + :rtype: bool + """ + + tensor_rank = self._fp16_param_to_rank[tensor] + return tensor_rank == self._local_rank + + def add_fp16_param_list_by_rank_group(self, rank, group_id, tensor_list) -> None: + if rank not in self._rank_groupid_to_fp16_param_list: + self._rank_groupid_to_fp16_param_list[rank] = dict() + + if group_id not in self._rank_groupid_to_fp16_param_list[rank]: + self._rank_groupid_to_fp16_param_list[rank][group_id] = [] + + self._rank_groupid_to_fp16_param_list[rank][group_id].extend(tensor_list) + + def get_fp16_params_by_rank_group(self, rank, group_id) -> List[Tensor]: + return self._rank_groupid_to_fp16_param_list[rank][group_id] + + def add_flat_fp16_param_by_rank_group(self, rank, group_id, tensor) -> None: + if rank not in self._rank_group_id_to_flat_fp16_param: + self._rank_group_id_to_flat_fp16_param[rank] = dict() + + self._rank_group_id_to_flat_fp16_param[rank][group_id] = tensor + + def get_flat_fp16_param_by_rank_group(self, rank, group_id) -> Tensor: + return self._rank_group_id_to_flat_fp16_param[rank][group_id] + + def is_param_reduced(self, tensor): + return self._is_param_reduced[tensor] + + def set_param_reduction_state(self, tensor, state): + self._is_param_reduced[tensor] = state + + def get_param_reduction_states(self): + return self._is_param_reduced + + def reset_previous_reduced_params(self): + self._reduced_param = [] + + def add_previous_reduced_param(self, tensor): + self._reduced_param.append(tensor) + + def clear_grads_of_previous_reduced_params(self): + if len(self._reduced_param) > 0: + for param in self._reduced_param: + param.grad = None + self.reset_previous_reduced_params() + + +class TensorBucket: + """ + Tensor Bucket + """ + + def __init__(self, size): + self._max_size = size + self._current_size = 0 + self._bucket = [] + + @property + def max_size(self): + return self._max_size + + @property + def current_size(self): + return self._current_size + + def is_full_or_oversized(self): + return self._current_size >= self._max_size + + def is_empty(self): + return len(self._bucket) == 0 + + def add_to_bucket(self, tensor, allow_oversize=False): + tensor_size = tensor.numel() + + if not allow_oversize and self.will_exceed_max_size(tensor_size): + msg = f"The param bucket max size {self._max_size} is exceeded" + f"by tensor (size {tensor_size})" + raise RuntimeError(msg) + + self._bucket.append(tensor) + self._current_size += tensor_size + + def will_exceed_max_size(self, tensor_size): + expected_size = self._current_size + tensor_size + return expected_size > self._max_size + + def get_bucket(self): + return self._bucket + + def empty(self): + self._bucket = [] + self._size = 0 + + def flatten(self): + return _flatten_dense_tensors(self._bucket) + + def unflatten_and_copy(self, flat_tensor): + unflattened_tensor_list = _unflatten_dense_tensors(flat_tensor, self._bucket) + for old, new in zip(self._bucket, unflattened_tensor_list): + old.copy_(new) diff --git a/internlm/solver/optimizer/utils.py b/internlm/solver/optimizer/utils.py new file mode 100644 index 0000000..f28cb8f --- /dev/null +++ b/internlm/solver/optimizer/utils.py @@ -0,0 +1,315 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from abc import ABC, abstractmethod +from typing import Dict, Optional + +import torch +import torch.distributed as dist +from torch import Tensor +from torch._utils import _flatten_dense_tensors, _unflatten_dense_tensors + +from internlm.core.context import ParallelMode +from internlm.core.context import global_context as gpc +from internlm.utils.logger import get_logger + +logger = get_logger(__file__) + + +def flatten(input_): + return _flatten_dense_tensors(input_) + + +def unflatten(flat, tensors): + return _unflatten_dense_tensors(flat, tensors) + + +def get_grad_accumulate_object(tensor): + """ + Return the AccumulateGrad of the input tensor + """ + + # grad_fn reference: + # https://discuss.pytorch.org/t/in-the-grad-fn-i-find-a-next-functions-but-i-dont-understand-the-meaning-of-the-attribute/24463 + # expand_as reference: https://pytorch.org/docs/stable/generated/torch.Tensor.expand.html#torch.Tensor.expand + # + # `next_functions` will return the backward graph where + # the first element is the AccumulateGrad of the leaf nodes. + # we want to get the AccumulateGrad of the input tensor instead of the leaf + # node in the whole computation graph. + # Therefore, we call expand_as to create a dummy graph + # where tensor_tmp and tensor indeed point to the same object. + # You can check this by print(tensor.data_ptr() == tensor_tmp.data_ptr()) + tensor_tmp = tensor.expand_as(tensor) + grad_acc_obj = tensor_tmp.grad_fn.next_functions[0][0] + return grad_acc_obj + + +def split_half_float_double(tensor_list): + dtypes = ["torch.cuda.HalfTensor", "torch.cuda.FloatTensor", "torch.cuda.DoubleTensor", "torch.cuda.BFloat16Tensor"] + buckets = [] + for _, dtype in enumerate(dtypes): + bucket = [t for t in tensor_list if t.type() == dtype] + if bucket: + buckets.append(bucket) + return buckets + + +def reduce_tensor(tensor, dtype=None, dst_rank=None, parallel_mode=ParallelMode.DATA): + """ + Reduce the tensor in the data parallel process group + + :param tensor: A tensor object to reduce/all-reduce + :param dtype: The data type used in communication + :param dst_rank: The source rank for reduce. If dst_rank is None, + :param parallel_mode: Communication parallel mode + all-reduce will be used instead of reduce. Default is None. + + :type tensor: torch.Tensor + :type dtype: torch.dtype, optional + :type dst_rank: int, optional + :type parallel_mode: ParallelMode, optional + """ + # use the original dtype + if dtype is None: + dtype = tensor.dtype + + # cast the data to specified dtype for reduce/all-reduce + if tensor.dtype != dtype: + tensor_to_reduce = tensor.to(dtype) + else: + tensor_to_reduce = tensor + + world_size = gpc.get_world_size(parallel_mode) + group = gpc.get_group(parallel_mode) + tensor_to_reduce.div_(world_size) + + # if rank is None, all reduce will be used + # else, reduce is used + use_all_reduce = dst_rank is None + + if use_all_reduce: + dist.all_reduce(tensor_to_reduce, group=group) + else: + ranks_in_group = gpc.get_ranks_in_group(parallel_mode) + global_rank = ranks_in_group[dst_rank] + dist.reduce(tensor=tensor_to_reduce, dst=global_rank, group=group) + + # recover the original dtype + if tensor.dtype != dtype and tensor is not tensor_to_reduce: + local_rank = gpc.get_local_rank(parallel_mode) + if use_all_reduce or dst_rank == local_rank: + tensor.copy_(tensor_to_reduce) + + return tensor + + +def has_inf_or_nan(tensor): + try: + # if tensor is half, the .float() incurs an additional deep copy, but it's necessary if + # Pytorch's .sum() creates a one-element tensor of the same type as tensor + # (which is true for some recent version of pytorch). + tensor_sum = float(tensor.float().sum()) + # More efficient version that can be used if .sum() returns a Python scalar + # tensor_sum = float(tensor.sum()) + except RuntimeError as instance: + # We want to check if inst is actually an overflow exception. + # RuntimeError could come from a different error. + # If so, we still want the exception to propagate. + if "value cannot be converted" not in instance.args[0]: + raise + return True + else: + if tensor_sum == float("inf") or tensor_sum == -float("inf"): + return True + return False + + +def release_param_grad(tensor_list): + for tensor in tensor_list: + tensor.grad = None + + +def sync_param(flat_tensor, tensor_list): + """ + Synchronize the flattened tensor and unflattened tensor list. When + a list of tensor are flattened with `torch._utils._unflatten_dense_tensors`, + a new tensor is created. Thus, the flat tensor and original tensor list do not + share the same memory space. This function will update the tensor list so that + they point to the same value. + + :param flat_tensor: A flat tensor obtained by calling `torch._utils._unflatten_dense_tensors` on a tensor lsit + :param tensor_list: A list of tensors corresponding to the flattened tensor + :type flat_tensor: torch.Tensor + :type tensor_list: List[torch.Tensor] + """ + updated_params = unflatten(flat_tensor, tensor_list) + + # update the tensor data + for p, q in zip(tensor_list, updated_params): + p.data = q.data + + +class BaseGradScaler(ABC): + """A base class for the gradient scaler. + + Args: + initial_scale (float): the initial loss scale + """ + + def __init__(self, initial_scale: float): + assert initial_scale > 0 + self._scale = torch.cuda.FloatTensor([initial_scale]) + + @property + def scale(self) -> Tensor: + """Returns the loss scale.""" + + return self._scale + + @property + def inv_scale(self) -> Tensor: + """Returns the inverse of the loss scale.""" + + return self._scale.double().reciprocal().float() + + def state_dict(self) -> Dict: + """Returns the states of the gradient scaler as a dict object.""" + + state_dict = dict() + state_dict["scale"] = self.scale + return state_dict + + def load_state_dict(self, state_dict: Dict) -> None: + """Load the states of the gradient scaler from a dict object. + + Args: + state_dict (dict): the states of the gradient scaler + """ + + self._scale = state_dict["scale"] + + @abstractmethod + def update(self, overflow: bool) -> None: + """Update the loss scale. + + Args: + overflow (bool): whether overflow occurs + """ + + pass + + +class DynamicGradScaler(BaseGradScaler): + """A gradient scaler which uses dynamic loss scale + + Args: + initial_scale (float): the initial loss scale, defaults to 2**16 + growth_factor (float): the multiplication factor for increasing loss scale, defaults to 2 + backoff_factor (float): the multiplication factor for decreasing loss scale, defaults to 0.5 + growth_interval (int): the number of steps to increase loss scale when no overflow occurs, defaults to 1000 + min_scale (float): the minimum loss scale, defaults to None + max_scale (float): the maximum loss scale, defaults to None + hysteresis (int): the number of overflows before decreasing loss scale, defaults to 2 + """ + + def __init__( + self, + initial_scale: float = 2**16, + growth_factor: float = 2, + backoff_factor: float = 0.5, + growth_interval: int = 1000, + min_scale: Optional[float] = None, + max_scale: Optional[float] = None, + hysteresis: int = 2, + ): + super().__init__(initial_scale) + if min_scale: + self._min_scale = torch.cuda.FloatTensor([min_scale]) + else: + self._min_scale = None + + if max_scale: + self._max_scale = torch.cuda.FloatTensor([max_scale]) + else: + self._max_scale = None + + self._growth_factor = growth_factor + self._backoff_factor = backoff_factor + self._growth_interval = growth_interval + self._growth_step = 0 + self._hysteresis = hysteresis + self._hysteresis_step = 0 + self._sanity_checks() + + def _sanity_checks(self) -> None: + """Check if the arguments are correct.""" + + if self._min_scale: + assert self._min_scale > 0, "The minimum gradient scale cannot be zero or negative" + if self._max_scale: + assert self._min_scale > 0, "The maximum gradient scale cannot be zero or negative" + assert self._growth_factor > 1, "The growth factor cannot be equal or smaller than 1" + assert self._backoff_factor < 1 and self._backoff_factor > 0, "The backoff factor must be between 0 and 1" + assert self._hysteresis >= 0, "The hysteresis cannot be negative" + + def update(self, overflow: bool) -> None: + """Update the loss scale. + + Args: + overflow (bool): whether overflow occurs + """ + if overflow: + self._hysteresis_step += 1 + self._growth_step = 0 + + if self._hysteresis_step >= self._hysteresis: + self._backoff_scale() + if gpc.is_rank_for_log(): + logger.warning(f"Overflow occurs, the loss scale is adjusted to {self.scale.item()}") + else: + self._growth_step += 1 + if self._growth_step == self._growth_interval: + self._growth_step = 0 + self._hysteresis_step = 0 + self._grow_scale() + if gpc.is_rank_for_log(): + logger.warning( + f"No overflow for consecutive {self._growth_interval} steps, " + f"the loss scale is adjusted to {self.scale.item()}", + ) + + def _backoff_scale(self) -> None: + """Decrease the loss scale""" + + self._scale = self._scale * self._backoff_factor + if self._min_scale: + self._scale = torch.max(self._scale, self._min_scale) + + def _grow_scale(self) -> None: + """Increase the loss scale""" + + self._scale = self._scale * self._growth_factor + if self._max_scale: + self._scale = torch.min(self._scale, self._max_scale) + + def state_dict(self): + """Returns the states of the gradient scaler as a dict object.""" + + state_dict = dict() + state_dict["_scale"] = self._scale.item() + state_dict["_growth_step"] = self._growth_step + state_dict["_hysteresis_step"] = self._hysteresis_step + + return state_dict + + def load_state_dict(self, state_dict): + """Load the states of the gradient scaler from a dict object. + + Args: + state_dict (dict): the states of the gradient scaler + """ + + self._scale = self._scale.fill_(state_dict["_scale"]) + self._growth_step = state_dict["_growth_step"] + self._hysteresis_step = state_dict["_hysteresis_step"] diff --git a/internlm/solver/pipeline_utils.py b/internlm/solver/pipeline_utils.py new file mode 100644 index 0000000..c57765e --- /dev/null +++ b/internlm/solver/pipeline_utils.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +from internlm.utils.logger import get_logger + +logger = get_logger(__file__) + + +def partition_uniform(num_items, pipeline_parallel_size, num_chunks): + assert ( + num_items % num_chunks == 0 + ), "Layer length should be divided by the number of chunks, otherwise parameter method is recomended" + + parts = [[] for _ in range(pipeline_parallel_size)] + partition_items = num_items // num_chunks + for idx in range(num_chunks): + base_idx = idx * partition_items + chunk_size = partition_items // pipeline_parallel_size + left = pipeline_parallel_size - partition_items % pipeline_parallel_size + if chunk_size == 0: + raise ValueError("Some nodes in Pipeline have no requests") + + for p in range(pipeline_parallel_size): + st = base_idx + base_idx += chunk_size + (p >= left) + parts[p].append((st, base_idx)) + + indexes = [] + for _parts in parts: + for s, e in _parts: + indexes.extend(list(range(s, e))) + assert len(indexes) == len(set(indexes)), indexes # should have no duplicates + assert set(indexes) == set(list(range(num_items))), (indexes, num_items) # should have the same indexes as expected + return parts diff --git a/internlm/utils/__init__.py b/internlm/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/internlm/utils/checkpoint.py b/internlm/utils/checkpoint.py new file mode 100644 index 0000000..31a97af --- /dev/null +++ b/internlm/utils/checkpoint.py @@ -0,0 +1,269 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import weakref + +import torch +from torch.utils.checkpoint import check_backward_validity, detach_variable + +from internlm.core.context.random import ( + get_current_mode, + get_states, + set_mode, + set_seed_states, + sync_states, +) + +from .common import get_current_device + + +def copy_to_device(obj, device): + if torch.is_tensor(obj): + # Notice: + # When in no_grad context, requires_gard is False after movement + ret = obj.to(device).detach() + ret.requires_grad = obj.requires_grad + return ret + elif isinstance(obj, list): + return [copy_to_device(i, device) for i in obj] + elif isinstance(obj, tuple): + return tuple([copy_to_device(v, device) for v in obj]) + elif isinstance(obj, dict): + return {k: copy_to_device(v, device) for k, v in obj.items()} + else: + return obj + + +class CheckpointFunction(torch.autograd.Function): + """ + Checkpoint Function + """ + + @staticmethod + def forward(ctx, run_function, activation_offload=False, *args): # pylint: disable=W1113 + check_backward_validity(args) + ctx.run_function = run_function + ctx.activation_offload = activation_offload + ctx.device = get_current_device() + + # preserve rng states + ctx.fwd_cpu_rng_state = torch.get_rng_state() + sync_states() + ctx.fwd_seed_states = get_states(copy=True) + ctx.fwd_current_mode = get_current_mode() + + if hasattr(torch, "is_autocast_enabled"): + ctx.had_autocast_in_fwd = torch.is_autocast_enabled() + else: + ctx.had_autocast_in_fwd = False + + if activation_offload: + inputs_cuda = copy_to_device(args, ctx.device) + else: + inputs_cuda = args + + with torch.no_grad(): + outputs = run_function(*inputs_cuda) + # Save non-tensor inputs in ctx, keep a placeholder None for tensors + # to be filled out during the backward. + ctx.inputs = [] + ctx.tensor_indices = [] + tensor_inputs = [] + for i, arg in enumerate(args): + if torch.is_tensor(arg): + if activation_offload: + tensor_inputs.append(copy_to_device(arg, "cpu")) + else: + tensor_inputs.append(arg) + ctx.tensor_indices.append(i) + ctx.inputs.append(None) + else: + ctx.inputs.append(arg) + + if activation_offload: + ctx.tensor_inputs = tensor_inputs + else: + ctx.save_for_backward(*tensor_inputs) + return outputs + + @staticmethod + def backward(ctx, *args): + if not torch.autograd._is_checkpoint_valid(): + raise RuntimeError( + "Checkpointing is not compatible with .grad() or when an `inputs` parameter is " + "passed to .backward(). Please use .backward() and do not pass its `inputs` argument." + ) + # Copy the list to avoid modifying original list. + inputs = list(ctx.inputs) + tensor_indices = ctx.tensor_indices + + if ctx.activation_offload: + tensors = ctx.tensor_inputs + else: + tensors = ctx.saved_tensors + + # store the current states + bwd_cpu_rng_state = torch.get_rng_state() + sync_states() + bwd_seed_states = get_states(copy=True) + bwd_current_mode = get_current_mode() + + # set the states to what it used to be + torch.set_rng_state(ctx.fwd_cpu_rng_state) + for parallel_mode, state in ctx.fwd_seed_states.items(): + set_seed_states(parallel_mode, state) + set_mode(ctx.fwd_current_mode) + if ctx.activation_offload: + tensors = copy_to_device(tensors, ctx.device) + + # Fill in inputs with appropriate saved tensors. + for i, idx in enumerate(tensor_indices): + inputs[idx] = tensors[i] + detached_inputs = detach_variable(tuple(inputs)) + if ctx.had_autocast_in_fwd: + with torch.enable_grad(), torch.cuda.amp.autocast(): + outputs = ctx.run_function(*detached_inputs) + else: + with torch.enable_grad(): + outputs = ctx.run_function(*detached_inputs) + + if isinstance(outputs, torch.Tensor): + outputs = (outputs,) + # recover the rng states + torch.set_rng_state(bwd_cpu_rng_state) + for parallel_mode, state in bwd_seed_states.items(): + set_seed_states(parallel_mode, state) + set_mode(bwd_current_mode) + + # run backward() with only tensor that requires grad + outputs_with_grad = [] + args_with_grad = [] + for i in range(len(outputs)): + if torch.is_tensor(outputs[i]) and outputs[i].requires_grad: + outputs_with_grad.append(outputs[i]) + args_with_grad.append(args[i]) + if len(outputs_with_grad) == 0: + raise RuntimeError("none of output has requires_grad=True," " this checkpoint() is not necessary") + torch.autograd.backward(outputs_with_grad, args_with_grad) + grads = tuple(inp.grad if isinstance(inp, torch.Tensor) else None for inp in detached_inputs) + return (None, None) + grads + + +def activation_checkpoint(function, activation_offload, *args, use_reentrant: bool = True): + """Checkpoint the computation while preserve the rng states, modified from Pytorch torch.utils.checkpoint. + Args: + function: Describe the forward pass function. It should know how to handle the input tuples. + activation_offload: The variable to check whether we should offload activation to cpu + args (list): Tuple containing the parameters of the function + use_reentrant: Bool type to check if we need to use_reentrant, if use_reentrant=False, there + might be more flexibility for user to define there checkpoint function + Returns: + Output of running function with provided args. + """ + if use_reentrant: + return CheckpointFunction.apply(function, activation_offload, *args) + else: + return _checkpoint_without_reentrant( + function, + activation_offload, + *args, + ) + + +def _checkpoint_without_reentrant(function, activation_offload=False, *args): # pylint: disable=W1113 + # store rng_state + fwd_cpu_state = torch.get_rng_state() + sync_states() + fwd_seed_states = get_states(copy=True) + fwd_current_mode = get_current_mode() + + # check if use autocast + if hasattr(torch, "is_autocast_enabled"): + has_autocast_in_fwd = torch.is_autocast_enabled() + else: + has_autocast_in_fwd = False + + # using WeakKeyDictionary to store all the activation the first time we call unpack + storage: weakref.WeakKeyDictionary = weakref.WeakKeyDictionary() + weak_holder_list = [] + + # class for weakref.ref + class Holder: + pass + + # return a Holder object for later unpack process + def pack(): + res = Holder() + weak_holder_list.append(weakref.ref(res)) + return res + + # unpack hook + def unpack(x): + unpack_counter = 0 + + # re-compute all the activation inside the function when we first call unpack + if len(storage) == 0: + + def inner_pack(inner): + nonlocal unpack_counter + unpack_counter += 1 + + # If the holder went out of scope, the SavedVariable is dead and so + # the value will never be read from the storage. Skip filling it. + if weak_holder_list[unpack_counter - 1]() is None: + return + + # Use detach here to ensure we don't keep the temporary autograd + # graph created during the second forward + storage[weak_holder_list[unpack_counter - 1]()] = inner.detach() + return + + def inner_unpack(packed): + raise RuntimeError("You are calling backwards on a tensor that is never exposed. Please open an issue.") + + # restore rng state + torch.set_rng_state(fwd_cpu_state) + for parallel_mode, state in fwd_seed_states.items(): + set_seed_states(parallel_mode, state) + set_mode(fwd_current_mode) + + # reload arg into device if needed + if activation_offload: + for arg in args: + if torch.is_tensor(arg): + arg = arg.to(device=device) + + # rerun forward, the inner_pack will store all the activations in storage + if has_autocast_in_fwd: + with torch.enable_grad(), torch.cuda.amp.autocast(), torch.autograd.graph.saved_tensors_hooks( + inner_pack, inner_unpack + ): + function(*args) + else: + with torch.enable_grad(), torch.autograd.graph.saved_tensors_hooks(inner_pack, inner_unpack): + function(*args) + + if x not in storage: + raise RuntimeError( + "Attempt to retrieve a tensor saved by autograd multiple times without checkpoint" + " recomputation being triggered in between, this is not currently supported. Please" + " open an issue with details on your use case so that we can prioritize adding this." + ) + + return storage[x] + + # get device if we need to offload the activation + if activation_offload: + device = get_current_device() + + # run function with pack and unpack as saved_tensors_hooks + with torch.autograd.graph.saved_tensors_hooks(pack, unpack): + output = function(*args) + + # offload activation if needed + if activation_offload: + for arg in args: + if torch.is_tensor(arg): + arg = arg.to(device="cpu") + + return output diff --git a/internlm/utils/common.py b/internlm/utils/common.py new file mode 100644 index 0000000..7c069ee --- /dev/null +++ b/internlm/utils/common.py @@ -0,0 +1,248 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import bisect +import inspect +import os +import random +from contextlib import contextmanager +from datetime import datetime +from typing import Union + +import numpy as np +import torch + +import internlm + +CURRENT_TIME = None + + +def parse_args(): + parser = internlm.get_default_parser() + args = parser.parse_args() + + return args + + +def get_master_node(): + import subprocess + + if os.getenv("SLURM_JOB_ID") is None: + raise RuntimeError("get_master_node can only used in Slurm launch!") + result = subprocess.check_output('scontrol show hostnames "$SLURM_JOB_NODELIST" | head -n 1', shell=True) + result = result.decode("utf8").strip() + return result + + +def get_process_rank(): + proc_rank = -1 + if os.getenv("SLURM_PROCID") is not None: + proc_rank = int(os.getenv("SLURM_PROCID")) + elif os.getenv("RANK") is not None: + # In k8s env, we use $RANK. + proc_rank = int(os.getenv("RANK")) + + # assert proc_rank != -1, "get_process_rank cant't get right process rank!" + return proc_rank + + +def move_norm_to_cuda(norm: Union[float, torch.Tensor]) -> Union[float, torch.Tensor]: + if torch.is_tensor(norm) and norm.device.type != "cuda": + norm = norm.to(torch.cuda.current_device()) + return norm + + +def _move_tensor(element): + if not torch.is_tensor(element): + # we expecte the data type if a list of dictionaries + for item in element: + if isinstance(item, dict): + for key, value in item.items(): + assert not value.is_cuda, "elements are already on devices." + item[key] = value.to(get_current_device()).detach() + elif isinstance(item, list): + for index, value in enumerate(item): + assert not value.is_cuda, "elements are already on devices." + item[index] = value.to(get_current_device()).detach() + elif torch.is_tensor(item): + if not item.is_cuda: + item = item.to(get_current_device()).detach() + else: + assert torch.is_tensor(element), f"element should be of type tensor, but got {type(element)}" + if not element.is_cuda: + element = element.to(get_current_device()).detach() + return element + + +def move_to_device(data): + if isinstance(data, torch.Tensor): + data = data.to(get_current_device()) + elif isinstance(data, (list, tuple)): + data_to_return = [] + for element in data: + if isinstance(element, dict): + data_to_return.append( + { + k: ( + _move_tensor(v) + if k != "inference_params" + else v._replace(attention_mask=_move_tensor(v.attention_mask)) + ) + for k, v in element.items() + } + ) + else: + data_to_return.append(_move_tensor(element)) + data = data_to_return + elif isinstance(data, dict): + data = { + k: ( + _move_tensor(v) + if k != "inference_params" + else v._replace(attention_mask=_move_tensor(v.attention_mask)) + ) + for k, v in data.items() + } + else: + raise TypeError(f"Expected batch data to be of type torch.Tensor, list, tuple, or dict, but got {type(data)}") + return data + + +def get_tensor_norm(norm: Union[float, torch.Tensor], move_to_cuda) -> torch.Tensor: + if isinstance(norm, float): + norm = torch.Tensor([norm]) + if move_to_cuda: + norm = norm.to(torch.cuda.current_device()) + return norm + + +def get_current_device() -> torch.device: + """ + Returns currently selected device (gpu/cpu). + If cuda available, return gpu, otherwise return cpu. + """ + if torch.cuda.is_available(): + return torch.device(f"cuda:{torch.cuda.current_device()}") + else: + return torch.device("cpu") + + +def get_batch_size(data): + if isinstance(data, torch.Tensor): + return data.size(0) + elif isinstance(data, (list, tuple)): + if isinstance(data[0], dict): + return data[0][list(data[0].keys())[0]].size(0) + return data[0].size(0) + elif isinstance(data, dict): + return data[list(data.keys())[0]].size(0) + + +def filter_kwargs(func, kwargs): + sig = inspect.signature(func) + return {k: v for k, v in kwargs.items() if k in sig.parameters} + + +def launch_time(): + global CURRENT_TIME + if not CURRENT_TIME: + CURRENT_TIME = datetime.now().strftime("%b%d_%H-%M-%S") + return CURRENT_TIME + + +def set_random_seed(seed): + """Set random seed for reproducability.""" + # It is recommended to use this only when inference. + if seed is not None: + assert seed > 0 + random.seed(seed) + np.random.seed(seed) + torch.manual_seed(seed) + torch.cuda.manual_seed(seed) + # if you are using multi-GPU. + torch.cuda.manual_seed_all(seed) + + +@contextmanager +def conditional_context(context_manager, enable=True): + if enable: + with context_manager: + yield + else: + yield + + +class BatchSkipper: + """ + BatchSkipper is used to determine whether to skip the current batch_idx. + """ + + def __init__(self, skip_batches): + if skip_batches == "": + pass + intervals = skip_batches.split(",") + spans = [] + if skip_batches != "": + for interval in intervals: + if "-" in interval: + start, end = map(int, interval.split("-")) + else: + start, end = int(interval), int(interval) + if spans: + assert spans[-1] <= start + spans.extend((start, end + 1)) + self.spans = spans + + def __call__(self, batch_count): + index = bisect.bisect_right(self.spans, batch_count) + return index % 2 == 1 + + +class SingletonMeta(type): + """ + Singleton Meta. + """ + + _instances = {} + + def __call__(cls, *args, **kwargs): + if cls not in cls._instances: + cls._instances[cls] = super().__call__(*args, **kwargs) + else: + assert ( + len(args) == 0 and len(kwargs) == 0 + ), f"{cls.__name__} is a singleton class and a instance has been created." + return cls._instances[cls] + + +def get_megatron_flops( + elapsed_time_per_iter, + checkpoint=False, + seq_len=2048, + hidden_size=12, + num_layers=32, + vocab_size=12, + global_batch_size=4, + global_world_size=1, + mlp_ratio=4, + use_swiglu=True, +): + """ + Calc flops based on the paper of Megatron https://deepakn94.github.io/assets/papers/megatron-sc21.pdf + """ + + checkpoint_activations_factor = 4 if checkpoint else 3 + + if use_swiglu: + mlp_ratio = mlp_ratio * 3 / 2 + + flops_per_iteration = ( + checkpoint_activations_factor + * ( + (8 + mlp_ratio * 4) * global_batch_size * seq_len * hidden_size**2 + + 4 * global_batch_size * seq_len**2 * hidden_size + ) + ) * num_layers + 6 * global_batch_size * seq_len * hidden_size * vocab_size + + tflops = flops_per_iteration / (elapsed_time_per_iter * global_world_size * (10**12)) + return tflops diff --git a/internlm/utils/logger.py b/internlm/utils/logger.py new file mode 100644 index 0000000..a4a9f03 --- /dev/null +++ b/internlm/utils/logger.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import logging + +LOGGER_NAME = "internlm" +LOGGER_FORMAT = "%(asctime)s\t%(levelname)s %(filename)s:%(lineno)s in %(funcName)s -- %(message)s" +LOGGER_LEVEL = "info" +LOGGER_LEVEL_CHOICES = ["debug", "info", "warning", "error", "critical"] +LOGGER_LEVEL_HELP = ( + "The logging level threshold, choices=['debug', 'info', 'warning', 'error', 'critical'], default='info'" +) + + +def get_logger(logger_name: str = LOGGER_NAME, logging_level: str = LOGGER_LEVEL) -> logging.Logger: + """Configure the logger that is used for uniscale framework. + + Args: + logger_name (str): used to create or get the correspoding logger in + getLogger call. It will be "internlm" by default. + logging_level (str, optional): Logging level in string or logging enum. + + Returns: + logger (logging.Logger): the created or modified logger. + + """ + logger = logging.getLogger(logger_name) + + if logging_level not in LOGGER_LEVEL_CHOICES: + logging_level = LOGGER_LEVEL + print(LOGGER_LEVEL_HELP) + + logging_level = logging.getLevelName(logging_level.upper()) + + handler = logging.StreamHandler() + handler.setLevel(logging_level) + logger.setLevel(logging_level) + handler.setFormatter(logging.Formatter(LOGGER_FORMAT)) + logger.addHandler(handler) + + return logger diff --git a/internlm/utils/megatron_timers.py b/internlm/utils/megatron_timers.py new file mode 100644 index 0000000..6c4ed11 --- /dev/null +++ b/internlm/utils/megatron_timers.py @@ -0,0 +1,111 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import time + +import torch + + +class _Timer: + """Timer.""" + + def __init__(self, name): + self.name_ = name + self.elapsed_ = 0.0 + self.started_ = False + self.start_time = time.time() + + def start(self): + """Start the timer.""" + assert not self.started_, "timer has already been started" + torch.cuda.synchronize() + self.start_time = time.time() + self.started_ = True + + def stop(self): + """Stop the timer.""" + assert self.started_, "timer is not started" + torch.cuda.synchronize() + self.elapsed_ += time.time() - self.start_time + self.started_ = False + + def reset(self): + """Reset timer.""" + self.elapsed_ = 0.0 + self.started_ = False + + def elapsed(self, reset=True): + """Calculate the elapsed time.""" + started_ = self.started_ + # If the timing in progress, end it first. + if self.started_: + self.stop() + # Get the elapsed time. + elapsed_ = self.elapsed_ + # Reset the elapsed time + if reset: + self.reset() + # If timing was in progress, set it back. + if started_: + self.start() + return elapsed_ + + +class Timers: + """Group of timers.""" + + def __init__(self): + self.timers = {} + + def __call__(self, name): + if name not in self.timers: + self.timers[name] = _Timer(name) + return self.timers[name] + + def write(self, names, writer, iteration, normalizer=1.0, reset=False): + """Write timers to a tensorboard writer""" + # currently when using add_scalars, + # torch.utils.add_scalars makes each timer its own run, which + # polutes the runs list, so we just add each as a scalar + assert normalizer > 0.0 + for name in names: + if name in self.timers: + value = self.timers[name].elapsed(reset=reset) / normalizer + writer.add_scalar(f"time/{name}-time", value, iteration) + + def log(self, names, logger, normalizer=1.0, reset=True): + """Log a group of timers.""" + assert normalizer > 0.0 + string = "" + for name in names: + if name in self.timers: + elapsed_time = self.timers[name].elapsed(reset=reset) * 1000.0 / normalizer + string += " | {}: {:.2f}".format(name, elapsed_time) + if not len(string): # pylint: disable=C1802 + return + string = "time (ms)" + string + + logger.info(string) + return string + + def debug(self, names, logger, normalizer=1.0, reset=True): + """Log a group of timers.""" + assert normalizer > 0.0 + string = "" + for name in names: + if name in self.timers: + elapsed_time = self.timers[name].elapsed(reset=reset) * 1000.0 / normalizer + string += " | {}: {:.2f}".format(name, elapsed_time) + if not len(string): # pylint: disable=C1802 + return + string = "time (ms)" + string + + logger.debug(string) + return string + + def reset(self): + for _, t in self.timers.items(): + t.reset() + + +megatron_timer = Timers() diff --git a/internlm/utils/model_checkpoint.py b/internlm/utils/model_checkpoint.py new file mode 100644 index 0000000..687399e --- /dev/null +++ b/internlm/utils/model_checkpoint.py @@ -0,0 +1,289 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import copy +import os +import time +from typing import Dict + +import torch + +from internlm.core.context import ParallelMode +from internlm.core.context import global_context as gpc +from internlm.core.trainer import TrainState +from internlm.solver.optimizer import HybridZeroOptimizer +from internlm.utils.common import get_current_device +from internlm.utils.logger import get_logger +from internlm.utils.megatron_timers import megatron_timer as timer +from internlm.utils.storage_manager import get_fns, llm_load, llm_save + +logger = get_logger(__file__) + + +def get_model_topology(model): + """ + Returns: + { + '{name}': {'dim': int} + } + where name is the name of the module, and all parameters under this module are + concatenated along the dimension 'dim'. + """ + + from flash_attn.modules.embedding import VocabParallelEmbedding + + topos = {} + for name, module in model.named_modules(): + # If it does not meet these conditions, it is shared between various tp/dp, and it is necessary to assert + # that they are consistent. + if isinstance(module, VocabParallelEmbedding): + topos[name] = {"dim": 0} + return topos + + +def save_model_checkpoint(folder, model): + """ + Save the model according to the relationship between tp and dp. The principle is that the data of each tp + will not be gathered and saved separately, which is equivalent to actual sharding. The saved weight is named + - folder + - model_tp{tp_rank}_pp{pp_rank}.pt + + If the tp is inconsistent with the saved one in the future use, the weight needs to be converted before loading. + + Args: + folder: The folder to save the model + model: The model to be saved + """ + + states = model.state_dict() + topo = get_model_topology(model) + + if folder is not None: + dp_size = gpc.get_world_size(ParallelMode.DATA) + tp_size = gpc.get_world_size(ParallelMode.TENSOR) + dp_rank = gpc.get_local_rank(ParallelMode.DATA) + tp_rank = gpc.get_local_rank(ParallelMode.TENSOR) + pp_rank = gpc.get_local_rank(ParallelMode.PIPELINE) + + # TODO In theory, we should also consider pp level, but since pp is generally a state across machines, + # even if pp is not considered, it will definitely not be written on the same machine. + should_save_rank_pair = set() # (tp_rank, dp_rank) + for i in range(tp_size): + should_save_rank_pair.add((i, i % dp_size)) + + if (tp_rank, dp_rank) in should_save_rank_pair: + fn = f"model_tp{tp_rank}_pp{pp_rank}.pt" + fp = os.path.join(folder, fn) + llm_save(fp, saved_obj=states) + topo_fn = f"topo_tp{tp_rank}_pp{pp_rank}.json" + topo_fp = os.path.join(folder, topo_fn) + llm_save(topo_fp, saved_obj=topo) + + torch.distributed.barrier() + + +def load_model_checkpoint(folder, model): + """ + There should be weights with names similar to the following under the folder. + - folder + - model_tp{tp_rank}_pp{pp_rank}.pt + + If the tp is inconsistent with the saved one in the future use, the weight needs to be converted before loading. + """ + + tp_size = gpc.get_world_size(ParallelMode.TENSOR) + pp_size = gpc.get_world_size(ParallelMode.PIPELINE) + tp_rank = gpc.get_local_rank(ParallelMode.TENSOR) + pp_rank = gpc.get_local_rank(ParallelMode.PIPELINE) + + fns = get_fns(folder) + max_pp, max_tp = 0, 0 + for fn in fns: + if fn.startswith("model_t") and not fn.endswith(".md5"): + segements = os.path.splitext(fn)[0].split("_") + max_pp = max(max_pp, int(segements[-1][2:])) + max_tp = max(max_tp, int(segements[-2][2:])) + + assert ( + pp_size == max_pp + 1 + ), f"The weights are save for {max_pp+1} pipelines, while current has {pp_size} pipelines" + assert ( + tp_size == max_tp + 1 + ), f"The weights are save for {max_tp+1} parallelism, while current has {tp_size} tensor parallelism" + + should_load_name = f"model_tp{tp_rank}_pp{pp_rank}.pt" + fp = os.path.join(folder, should_load_name) + states = llm_load(fp, map_location=get_current_device()) + + missing_k, unexpected_keys = model.load_state_dict(states, strict=False) + if len(missing_k) != 0: + logger.warning(f"Warning: missing keys {missing_k}") + if len(unexpected_keys) != 0: + logger.warning(f"Warning: unexpected keys {unexpected_keys}") + + # avoid to cuda oom, Ref: https://discuss.pytorch.org/t/load-state-dict-causes-memory-leak/36189/11 + del states + torch.cuda.empty_cache() + + +def save_optimizer_checkpoint(optim, state_path): + """Store the state of the optimizer to the local file system or remote OSS. + + Args: + optim (Optimizer) + state_path (str): The state loading path of optimizer. + """ + + # TODO sanity check for optimizer type + zero_rank = gpc.get_local_rank(ParallelMode.ZERO1) + tp_rank = gpc.get_local_rank(ParallelMode.TENSOR) + pp_rank = gpc.get_local_rank(ParallelMode.PIPELINE) + fp = f"optimizer_tp{tp_rank}_pp{pp_rank}_zo{zero_rank}.pt" + + states = optim.state_dict() + if isinstance(optim, HybridZeroOptimizer): + if gpc.get_global_rank() < optim.zero_world_size: + llm_save(os.path.join(state_path, fp), states) + if "zero_devide_optim_plan" in states: + params_per_rank_id_dict = states.pop("zero_devide_optim_plan") + fp_meta = os.path.join(state_path, optim.rank_unique_id) + llm_save(fp_meta, params_per_rank_id_dict) + else: + llm_save(os.path.join(state_path, fp), states) + + +def save_checkpoint(folder, model, optimizer, scheduler, train_state: TrainState, model_config: Dict = None): + """ + Save checkpoint to the given folder path. + """ + + start = time.time() + torch.distributed.barrier() + folder = os.path.join(folder, str(train_state.step_count)) + logger.info( + f"Saving checkpoint to `{folder}` at batch count:{train_state.step_count} from rank:{gpc.get_global_rank()}..." + ) + + timer("save-model").start() + save_model_checkpoint(folder=folder, model=model) + timer("save-model").stop() + + timer("save-optimizer").start() + save_optimizer_checkpoint(optim=optimizer, state_path=folder) + timer("save-optimizer").stop() + + if gpc.is_rank_for_log(): + scheduler_states = scheduler.state_dict() + llm_save(os.path.join(folder, "schedulder.pt"), saved_obj=scheduler_states) + + sampler_state = train_state.batch_sampler.state_dict() + llm_save(os.path.join(folder, "sampler.pt"), saved_obj=sampler_state) + llm_save(os.path.join(folder, "context.pt"), saved_obj=train_state.state_dict()) + + if model_config is not None: + llm_save(os.path.join(folder, "model_config.pt"), saved_obj=model_config) + + torch.distributed.barrier() + + if gpc.is_rank_for_log(): + timer.log(["save-model", "save-optimizer"], logger=logger) + logger.info(f"Step: {train_state.step_count}, rank 0 save ckpt use {time.time() - start:.3f} s") + + +def load_optimizer_checkpoint(folder, optim): + """Load the optimizer state from the local file system or remote + object storage Service (OSS). + + Args: + optim (Optimizer): optimizer + folder (str): The FS/OSS path where the optimizer will be stored. + """ + + fns = get_fns(folder) + max_tp, max_pp, max_zero = 0, 0, 0 + for fn in fns: + if fn.startswith("optimizer_") and not fn.endswith(".md5"): + _, tp, pp, zero = os.path.splitext(fn)[0].split("_") + max_zero = max(max_zero, int(zero[2:])) + max_tp = max(max_tp, int(tp[2:])) + max_pp = max(max_pp, int(pp[2:])) + + zero_size = gpc.get_world_size(ParallelMode.ZERO1) + zero_rank = gpc.get_local_rank(ParallelMode.ZERO1) + tp_size = gpc.get_world_size(ParallelMode.TENSOR) + pp_size = gpc.get_world_size(ParallelMode.PIPELINE) + + assert ( + zero_size == max_zero + 1 + ), f"The weights are save for {max_zero+1} data parallel, while current has {zero_size} zero broadcast range." + assert ( + pp_size == max_pp + 1 + ), f"The weights are save for {max_pp+1} pipelines, while current has {pp_size} pipelines" + assert ( + tp_size == max_tp + 1 + ), f"The weights are save for {max_tp+1} parallelism, while current has {tp_size} tensor parallelism" + + fp = f"optimizer_tp{gpc.get_local_rank(ParallelMode.TENSOR)}_" + fp += f"pp{gpc.get_local_rank(ParallelMode.PIPELINE)}_" + fp += f"zo{zero_rank}.pt" + states = llm_load(os.path.join(folder, fp), map_location=get_current_device()) + + if isinstance(optim, HybridZeroOptimizer): + fp_meta = os.path.join(folder, optim.rank_unique_id) + try: + zero_devide_optim_plan = llm_load(fp_meta) + states.update({"zero_devide_optim_plan": zero_devide_optim_plan}) + except Exception as e: + logger.warning( + f"Read zero optimzer split file '{fp_meta}', for '{e}'" + f"Please check whether loading ckpts are saved with the HybridZeroOptimizer." + ) + + optim.load_state_dict(states) + del states + torch.cuda.empty_cache() + + +def load_sampler(ckpt_path: str, sampler): + sampler_states = llm_load(os.path.join(ckpt_path, "sampler.pt")) + sampler.load_state_dict(sampler_states) + if gpc.is_rank_for_log(): + pstate = copy.deepcopy(sampler_states) + pstate.pop("indices") + pstate.pop("rng_state") + logger.info(f"reload sampler_states:{pstate}") + torch.cuda.empty_cache() + + +def load_context(ckpt_path: str, train_dl, train_state: TrainState): + context_stuffs = llm_load(os.path.join(ckpt_path, "context.pt")) + train_state.load_state_dict(context_stuffs, train_dl) + if gpc.is_rank_for_log(): + logger.info(f"reload train_state:{train_state}") + torch.cuda.empty_cache() + + +def load_scheduler(ckpt_path: str, lr_scheduler, optimizer, learning_rate, train_state: TrainState): + scheduler_states = llm_load(os.path.join(ckpt_path, "schedulder.pt")) + if learning_rate != scheduler_states["base_lrs"][0] and gpc.is_rank_for_log(): + logger.warning( + f"Using new learning rate {learning_rate} to replace old learn rate {scheduler_states['base_lrs'][0]}." + ) + + base_lrs = copy.deepcopy(scheduler_states["base_lrs"]) + scheduler_states["base_lrs"] = [learning_rate] * len(scheduler_states["base_lrs"]) + if "after_scheduler_dict" in scheduler_states: + scheduler_states["after_scheduler_dict"]["base_lrs"] = [learning_rate] * len( + scheduler_states["after_scheduler_dict"]["base_lrs"] + ) + + lr_scheduler.load_state_dict(scheduler_states) + lr_scheduler.last_epoch = train_state.step_count + 1 + + ratios = [learning_rate / lr for lr in base_lrs] + for idx, param_group in enumerate(optimizer.param_groups): + param_group["lr"] = param_group["lr"] * ratios[idx] + torch.cuda.empty_cache() + + if gpc.is_rank_for_log(): + logger.info(f"reload load_scheduler:{lr_scheduler}") diff --git a/internlm/utils/parallel.py b/internlm/utils/parallel.py new file mode 100644 index 0000000..87ea3a6 --- /dev/null +++ b/internlm/utils/parallel.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import torch.distributed as dist + +from internlm.core.context import IS_TENSOR_PARALLEL, ParallelMode +from internlm.core.context import global_context as gpc + + +def is_model_parallel_parameter(p): + return hasattr(p, IS_TENSOR_PARALLEL) and getattr(p, IS_TENSOR_PARALLEL) + + +def sync_model_param(model, parallel_mode): + r"""Make sure data parameters are consistent during Data Parallel Mode. + + Args: + model (:class:`torch.nn.Module`): A pyTorch model on whose parameters you check the consistency. + parallel_mode (:class:`internlm.core.context.ParallelMode`): Parallel mode to be checked. + """ + if gpc.is_initialized(parallel_mode) and gpc.get_world_size(parallel_mode) > 1: + for param in model.parameters(): + ranks = gpc.get_ranks_in_group(parallel_mode) + dist.broadcast(param, src=ranks[0], group=gpc.get_group(parallel_mode)) + + +def sync_model_param_within_tp(model): + r"""This function is changed from colossalai, which is ``sync_model_param``. + + We modified this function to make sure it only sync parameters within tensor parallelism + but they are not splitted by tensor parallelism. + This function is used to make sure parameters that are not splitted by tensor parallelism + are the same across each tensor parallelism. + For example, parameters like RMSNorm, LayerNorm... + + Args: + model (:class:`torch.nn.Module`): A pyTorch model on whose parameters you check the consistency. + """ + parallel_mode = ParallelMode.TENSOR + if gpc.is_initialized(parallel_mode) and gpc.get_world_size(parallel_mode) > 1: + for param in model.parameters(): + if not is_model_parallel_parameter(param): + ranks = gpc.get_ranks_in_group(parallel_mode) + dist.broadcast(param, src=ranks[0], group=gpc.get_group(parallel_mode)) + + +def is_no_pp_or_last_stage(): + return not gpc.is_initialized(ParallelMode.PIPELINE) or gpc.is_last_rank(ParallelMode.PIPELINE) diff --git a/internlm/utils/registry.py b/internlm/utils/registry.py new file mode 100644 index 0000000..f2da5a5 --- /dev/null +++ b/internlm/utils/registry.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + + +class Registry: + """This is a registry class used to register classes and modules so that a universal + object builder can be enabled. + + Args: + name (str): The name of the registry. + """ + + def __init__(self, name: str): + self._name = name + self._registry = dict() + + @property + def name(self): + return self._name + + def register_module(self, module_name: str): + """Registers a module represented in `module_class`. + + Args: + module_class (class): The module to be registered. + Returns: + class: The module to be registered, so as to use it normally if via importing. + Raises: + AssertionError: Raises an AssertionError if the module has already been registered before. + """ + + assert module_name not in self._registry, f"{module_name} not found in {self.name}" + + def decorator_wrapper(original_func): + self._registry[module_name] = original_func + return original_func + + return decorator_wrapper + + def get_module(self, module_name: str): + """Retrieves a module with name `module_name` and returns the module if it has + already been registered before. + + Args: + module_name (str): The name of the module to be retrieved. + Returns: + :class:`object`: The retrieved module or None. + Raises: + NameError: Raises a NameError if the module to be retrieved has neither been + registered directly nor as third party modules before. + """ + if module_name in self._registry: + return self._registry[module_name] + raise NameError(f"Module {module_name} not found in the registry {self.name}") + + def has(self, module_name: str): + """Searches for a module with name `module_name` and returns a boolean value indicating + whether the module has been registered directly or as third party modules before. + + Args: + module_name (str): The name of the module to be searched for. + Returns: + bool: A boolean value indicating whether the module has been registered directly or + as third party modules before. + """ + found_flag = module_name in self._registry + + return found_flag + + +MODEL_INITIALIZER = Registry("model_initializer") diff --git a/internlm/utils/storage_manager.py b/internlm/utils/storage_manager.py new file mode 100644 index 0000000..8bd7c88 --- /dev/null +++ b/internlm/utils/storage_manager.py @@ -0,0 +1,351 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import hashlib +import io +import os +import re +import socket +from enum import Enum +from typing import Any, Dict, List, Union + +import boto3 +import botocore +import torch + +from internlm.utils.common import SingletonMeta +from internlm.utils.logger import get_logger + +logger = get_logger(__file__) + +boto3_url_re = re.compile(r"([^\.]+)\.([\d\.]+)") + +MB = 1024**2 + +storage_manager = None + + +def check_folder(fp: str): + storage_manager.assert_fp_exists(fp) + + +def get_fns(fp: str): + return storage_manager.get_fns(fp) + + +def llm_load(fp: str, *args, **kwargs): + return storage_manager.load(fp, *args, **kwargs) + + +def llm_save(save_path: str, saved_obj: Any, *args, **kwargs): + storage_manager.save(save_path, *args, saved_obj=saved_obj, **kwargs) + + +class CheckpointType(Enum): + NORMAL_CHECKPOINT = 1 + + +class StorageClient: + """ + StorageClient as a client for s3 storage access. + """ + + def __init__(self, handler) -> None: + self.handler = handler + + @staticmethod + def load(client, load_path: str, map_location): + raise NotImplementedError + + @staticmethod + def sync_upload_fileobj(*args, saved_obj=None, **kwargs): + raise NotImplementedError + + @staticmethod + def assert_fp_exists(client): + raise NotImplementedError + + @staticmethod + def get_fns(client): + raise NotImplementedError + + +class Boto3MetaInfo: + def __init__(self, client: StorageClient, bucket_name: str, endpoint: str, file_path: str) -> None: + self.client = client + self.bucket_name = bucket_name + self.endpoint = endpoint + self.file_path = file_path + + +class LocalMetaInfo: + def __init__(self, client: StorageClient, dest_path: str) -> None: + self.client = client + self.dest_path = dest_path + + +def unpack_meta(meta): + args = [] + for k, v in meta.__dict__.items(): + if k == "endpoint": + continue + args.append(v) + return args + + +def compute_file_md5_by_chunk(file_name: str): + hash_md5 = hashlib.md5() + with open(file_name, "rb") as f: + for chunk in iter(lambda: f.read(4096), b""): + hash_md5.update(chunk) + return hash_md5.hexdigest() + + +def get_boto3_meta(fp: str) -> Boto3MetaInfo: + assert fp.startswith("s3://"), f"Path '{fp}' is not a boto3 url" + parts = fp.lstrip("s3://").split(os.path.sep) + match = boto3_url_re.match(parts[0]) + assert match is not None, f"url '{fp}' is not a valid boto3 url" + bucket_name, endpoint = match.group(1), match.group(2) + endpoint = "http://" + endpoint + ":80" + return Boto3MetaInfo(None, bucket_name, endpoint, os.path.sep.join(parts[1:])) + + +def get_local_meta(fp: str) -> LocalMetaInfo: + assert not fp.startswith("s3://"), f"Path '{fp}' is not a local path" + return LocalMetaInfo(None, fp) + + +class Boto3Client(StorageClient): + """ + Boto3Client + """ + + def __init__( + self, + s3_endpoint_url: str, + use_threads: int = True, + multipart_chunksize=8 * MB, + max_concurrency: int = 10, + multipart_threshold=100 * MB, + ) -> None: + """S3 object/file storage management class + + Args: + s3_access_keys_id (str): S3 access key ID. + s3_secret_access_key (str): S3 secret access key. + use_threads (bool, optional): Whether to enable multipart. Defaults to True. + multipart_chunksize (_type_, optional): Defaults to 8*MB. + max_concurrency (int, optional): Defaults to 10. + + Raises: + RuntimeError: Connection failures caused by misconfiguration or network problems. + """ + super().__init__(boto3) + self.botocore = botocore + try: + s3_access_key_id = os.environ["S3_ACCESS_KEY_ID"] + s3_secret_access_key = os.environ["S3_SECRET_ACCESS_KEY_ID"] + except KeyError as exc: + raise RuntimeError( + "Please set boto3 bucket 'S3_ACCESS_KEY_ID' and 'S3_SECRET_ACCESS_KEY_ID' using environment variable!" + ) from exc + + self.client = self.handler.client( + "s3", + "", + use_ssl=False, + verify=False, + endpoint_url=s3_endpoint_url, + aws_access_key_id=s3_access_key_id, + aws_secret_access_key=s3_secret_access_key, + ) + + self.config = self.handler.s3.transfer.TransferConfig( + multipart_threshold=multipart_threshold, + max_concurrency=max_concurrency, + multipart_chunksize=multipart_chunksize, + use_threads=use_threads, + ) + + @staticmethod + def sync_upload_fileobj(handler, bucket_name: str, fp: str, *args, saved_obj=None, **kwargs): + assert saved_obj is not None, "saved_obj is None!" + try: + with io.BytesIO() as f: + torch.save(saved_obj, f, *args, **kwargs) + f.seek(0) + handler.client.upload_fileobj(f, bucket_name, fp, Config=handler.config) + except handler.botocore.exceptions.EndpointConnectionError as exc: + raise RuntimeError( + f"Boto3 Network Error: Please Check your Internet Connection in {socket.gethostname()}" + ) from exc + + @staticmethod + def load(handler, bucket_name: str, fp: str, *args, map_location="cpu", **kwargs) -> Dict: + """ + Args: + fp (str): Path to save, eg. s3://opennlplab/model_weights/xxx/ddd.pt + """ + try: + with io.BytesIO() as f: + handler.client.download_fileobj(bucket_name, fp, f, Config=handler.config) + f.seek(0) + states = torch.load(f, *args, map_location=map_location, **kwargs) + except handler.botocore.exceptions.EndpointConnectionError as exc: + raise RuntimeError( + f"Boto3 Network Error: Please Check your Internet Connection in {socket.gethostname()}" + ) from exc + return states + + @staticmethod + def assert_fp_exists( + handler, + bucket_name: str, + fp: str, + ): + assert len(list(handler.client.list_objects(Bucket=bucket_name, Prefix=fp)["Contents"])) > 0, fp + + @staticmethod + def get_fns(handler, bucket_name: str, fp: str): + """ + Ref: https://stackoverflow.com/questions/54314563/ + how-to-get-more-than-1000-objects-from-s3-by-using-list-objects-v2 + """ + paginator = handler.client.get_paginator("list_objects_v2") + pages = paginator.paginate(Bucket=bucket_name, Prefix=fp) + + folder_name_list = [] + for page in pages: + for obj in page["Contents"]: + fp: str = obj["Key"] + folder_name_list.append(fp.rsplit("/", maxsplit=1)[1]) + return folder_name_list + + +class LocalClient(StorageClient): + """ + Storage Client for local NFS. + """ + + def __init__(self, *args, **kwargs) -> None: # pylint: disable=W0613 + super().__init__(None) + + @staticmethod + def sync_upload_fileobj(handler, fp: str, *args, saved_obj=None, **kwargs): + assert isinstance(handler, LocalClient) + assert saved_obj is not None + fp_dirname = os.path.dirname(fp) + if not os.path.exists(fp_dirname): + os.makedirs(fp_dirname, exist_ok=True) + torch.save(saved_obj, fp, *args, **kwargs) + + @staticmethod + def load(handler, fp: str, *args, map_location="cpu", **kwargs): + assert isinstance(handler, LocalClient) + assert os.path.exists(fp), f"{fp} is not found!" + with open(fp, "rb") as f: + states = torch.load(f, map_location=map_location, *args, **kwargs) + return states + + @staticmethod + def assert_fp_exists(handler, folder): + assert isinstance(handler, LocalClient) + assert os.path.exists(folder), folder + + @staticmethod + def get_fns(handler, folder): + assert isinstance(handler, LocalClient) + assert os.path.exists(folder), f"folder '{folder}' not exists!" + fns = os.listdir(folder) + return fns + + @staticmethod + def delete_obj(handler, fp: str): + assert isinstance(handler, LocalClient) + if not os.path.isdir(fp): + os.remove(fp) + + +class StorageManager(metaclass=SingletonMeta): + """ + Storage Manager for saving or loading checkpoint. + """ + + BACKEND_TYPE = {"boto3", "local"} + BACKEND_INIT_METHOD = { + "boto3": Boto3Client, + "local": LocalClient, + } + CLI_DICT = {} + + def __init__(self) -> None: + pass + + def _get_client(self, path=str) -> Union[Boto3MetaInfo, LocalMetaInfo]: + """ + example: + local:/path/to/checkpoint + boto3:s3://model_weights/0331/120bi + + Args: + path (str): _description_ + """ + try: + backend, path = path.split(":", maxsplit=1) + except Exception as exc: + raise AttributeError(f"Given path '{path}' is not startwith backend prefix:'local/boto3'") from exc + + init_args = (None,) + if backend == "local": + meta_info = get_local_meta(path) + backend_key = backend + elif backend == "boto3": + meta_info = get_boto3_meta(path) + backend_key = backend + ":" + meta_info.endpoint + init_args = (meta_info.endpoint,) + if ( + "http_proxy" in os.environ + or "https_proxy" in os.environ + or "HTTP_PROXY" in os.environ + or "HTTPS_PROXY" in os.environ + ): + raise RuntimeWarning( + "HTTP/HTTPS proxy is detected when using boto3, incorrectly setting \ +the proxy may make boto3 unavailable or affect performance." + ) + + assert backend in StorageManager.BACKEND_TYPE, f"Unkown backend: {backend}" + + # boto3 backend need special treatment. + if backend_key not in StorageManager.CLI_DICT: + StorageManager.CLI_DICT.update({backend_key: StorageManager.BACKEND_INIT_METHOD[backend](*init_args)}) + + meta_info.client = StorageManager.CLI_DICT[backend_key] + + return meta_info + + def assert_fp_exists(self, folder) -> None: + meta = self._get_client(path=folder) + meta.client.assert_fp_exists(*unpack_meta(meta)) + + def get_fns(self, folder) -> List[str]: + meta = self._get_client(path=folder) + return meta.client.get_fns(*unpack_meta(meta)) + + def save(self, save_path: str, saved_obj: Any, *args, **kwargs): + meta = self._get_client(path=save_path) + + meta.client.sync_upload_fileobj(*unpack_meta(meta), *args, saved_obj=saved_obj, **kwargs) + + def load(self, load_path: str, *args, map_location="cpu", **kwargs) -> Any: + + meta = self._get_client(path=load_path) + return meta.client.load(*unpack_meta(meta), map_location=map_location, *args, **kwargs) + + def delete_obj(self, fp: str): + meta = self._get_client(path=fp) + meta.client.delete_obj(*unpack_meta(meta)) + + +storage_manager = StorageManager() diff --git a/requirements/runtime.txt b/requirements/runtime.txt new file mode 100644 index 0000000..956ebdd --- /dev/null +++ b/requirements/runtime.txt @@ -0,0 +1,14 @@ +transformers>=4.25.1 +numpy +tqdm +psutil +packaging +pre-commit +ninja +gputil +pytest +packaging +boto3 +botocore +torch-scatter +-f https://data.pyg.org/whl/torch-1.13.0+cu117.html \ No newline at end of file diff --git a/requirements/torch.txt b/requirements/torch.txt new file mode 100644 index 0000000..3b428b0 --- /dev/null +++ b/requirements/torch.txt @@ -0,0 +1,4 @@ +--extra-index-url https://download.pytorch.org/whl/cu117 +torch==1.13.1+cu117 +torchvision==0.14.1+cu117 +torchaudio==0.13.1 \ No newline at end of file diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 0000000..065d527 --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,2 @@ +sonar.projectKey=InternLM +sonar.python.version=3.6,3.7,3.8,3.9,3.10 diff --git a/tools/README.md b/tools/README.md new file mode 100644 index 0000000..26dbe0a --- /dev/null +++ b/tools/README.md @@ -0,0 +1,53 @@ +本目录提供辅助模型训练的一些工具,文件结构如下所示: +```bash +├── transformers # 适配hugging face的transformers的一些工具 +│ ├── configuration_internlm.py # config适配工具 +│ ├── modeling_internlm.py # model适配工具 +│ └── tokenization_internlm.py # tokenizer适配工具 +├── convert2hf.py # 模型适配hugging face工具 +└── tokenizer.py # 将原始数据转换成bin和meta文件的工具 +``` + +# tokenizer.py +生成原始数据的`bin`和`meta`文件需要使用`tokenizer`,我们通过在`tools/tokenizer.py`中指定模型参数路径的方式来导入tokenizer模型。目前我们提供了`V7.model`来生成tokens。若想使用不同的模型,可直接修改`tokernizer.py`中的模型参数路径。 + +我们可以运行以下命令生成原始数据对应的`bin`和`meta`文件,其中参数`raw_data_name`表示原始数据集的文件名称,`input_file_type`表示原始数据集的文件格式,我们目前支持`txt`、`json`和`jsonl`这三种格式,`bin`表示生成的`bin`文件的保存路径。 +```bash +$ python tools/tokenizer.py --raw_data_name your_raw_data_file_name(without suffix) --input_file_type 'text' or 'json' or 'jsonl' --bin your_output_bin_path +``` + +下面是一个数据处理的例子(这里只给出了`txt`格式的数据处理例子,`json`和`jsonl`的数据处理流程和`txt`的完全一致): + +给定一个包含原始数据集的文件`raw_data.txt`,原始数据集如下所示: +```bash +感恩生活中的每一个细节,才能真正体会到幸福的滋味。 +梦想是人生的动力源泉,努力追逐,才能实现自己的目标。 +学会宽容和理解,才能建立真正和谐的人际关系。 +``` + +接下来,我们可以通过运行以下命令来生成`bin`和`meta`文件: +```bash +$ python tools/tokenizer.py --raw_data_name raw_data --input_file_type 'text' --bin cn/output.bin +``` + +需要注意的是,生成的`bin`文件需要保存在`cn`或者`en`或者`code`或者`ja`或者`ar`或者`kaoshi`这五个目录下,以区分数据集的类型。 + +其中,`cn`表示中文数据集;`en`表示英文数据集;`code`表示代码数据集;`ja`表示日语数据集;`ar`表示阿拉伯语数据集;`kaoshi`表示考试数据集。 + +生成的bin文件的格式如下: +```python +{"tokens": [73075, 75302, 69522, 69022, 98899, 67713, 68015, 81269, 74637, 75445, 99157]} +{"tokens": [69469, 60355, 73026, 68524, 60846, 61844, 98899, 67775, 79241, 98899, 67713, 67800, 67453, 67838, 99157]} +{"tokens": [68057, 79017, 60378, 68014, 98899, 67713, 67990, 68015, 70381, 67428, 61003, 67622, 99157]} +``` +`bin`文件中的每一行均对应原始数据集中的每一个句子,表示每个句子的`token`(下文将用sequence指定)。 + +生成的`meta`文件的格式如下: +```bash +(0, 11), (90, 15), (208, 13) +``` +在`meta`文件中,每个元组对应着`bin`文件中每一个`sequence`的元信息。其中,元组的第一个元素表示每个`sequence`在所有`sequence`中的`starting index`,第二个元素表示每个`sequence`中有多少个`tokens`。 + +例如,对于第一个`sequence`,`starting index`为 0,有 11 个`tokens`;对于第二个`sequence`,由于第一个`sequence`转换为`string`后的长度为`89`,因此它的`starting index`为 90,有 15 个`tokens`。 + +`json`和`jsonl`类型的文件的`bin`和`meta`文件格式和`txt`一致,此处不再赘叙。 \ No newline at end of file diff --git a/tools/README_EN.md b/tools/README_EN.md new file mode 100644 index 0000000..dde7469 --- /dev/null +++ b/tools/README_EN.md @@ -0,0 +1,50 @@ +This directory provide some tools for model training with the following file structure. +```bash +├── transformers # tools for adapting Hugging Face's transformers +│ ├── configuration_internlm.py # tools for adapting config +│ ├── modeling_internlm.py # tools for adapting model +│ └── tokenization_internlm.py # tools for adapting tokenizer +├── convert2hf.py # tools for adapting models to Hugging Face's format +└── tokenizer.py # tools for generating `bin` and `meta` file for raw data +``` + +# tokenizer.py +We need to use a `tokenizer` to generate `bin` and `meta` files for raw data. We import the tokenizer model by specifying the model weight path in `tools/tokenizer.py`. Currently, we provide `V7.model` to generate tokens. If you want to use a different model, you can modify the model weight path in `tokenizer.py` directly. + +We can run the following command to generate `bin` and `meta` files for raw data, where the parameter `raw_data_name` indicates the file name of raw data, `input_file_type` denotes the raw data format, which should be `txt`, `json` and `jsonl`, and `bin` indicates the path to save the generated `bin` file. +```bash +$ python tools/tokenizer.py --raw_data_name your_raw_data_file_name(without suffix) --input_file_type 'text' or 'json' or 'jsonl' --bin your_output_bin_path +``` + +An example of data processing in `txt` format is given here (the data processing for `json` and `jsonl` is identical to that for `txt`). + +Given a file `raw_data.txt` containg raw data with the following content. +```bash +Appreciate every detail in life to truly taste the flavor of happiness. +Dreams are the source of life’s motivation. Pursue them diligently to achieve your goals. +Learn to be tolerant and understanding to establish truly harmonious interpersonal relationships. +``` +Next, we can run the following command to generate `bin` and `meta` files for raw data. +```bash +$ python tools/tokenizer.py --raw_data_name raw_data --input_file_type 'text' --bin cn/output.bin +``` + +It should be noted that the generated `bin` files should be placed in one of the following directories to clarify the data type: `cn`(Chinese), `en`(English), `code`(code data), `ja`(Japanese), `ar`(Arabic) and `kaoshi`(kaoshi data). + +The format of generated `bin` file is as follows. +```python +{"tokens": [98655, 2317, 2922, 6649, 1595, 7856, 435, 2424, 442, 9556, 12807, 410, 17313, 446, 23331, 95746]} +{"tokens": [98655, 302, 1383, 269, 657, 410, 2687, 446, 2424, 98667, 269, 25220, 281, 523, 1874, 492, 1248, 38127, 4563, 442, 11227, 829, 8980, 95746]} +{"tokens": [98655, 24190, 442, 517, 15013, 649, 454, 8793, 442, 5849, 9556, 17917, 1369, 1084, 29890, 12021, 95746]} +``` +In the generated `bin` file, each line (`sequence`) corresponds to the `tokens` for each sentence in the raw data. + +The format of generated `meta` file in as follows. +```bash +(0, 16), (110, 24), (262, 17) +``` +Each tuple in the `meta` file represents the meta information of each `sequence` where the first element in the tuple indicates the `starting index` of each `sequence` among all `sequences` and the second element indicates the amount of `tokens` for each `sequence`. + +For example, the `starting index` is 0 for the first `sequence` with 16 `tokens`. Since the length of `sequence` in `string` format is 109, the `starting index` is 110. And the number of `tokens` of the sencond `sequence` is 24. + +The `bin` and `meta` file formats for `json` and `jsonl` type files are the same as for `txt`, so we won't go over them here. \ No newline at end of file diff --git a/tools/V7_sft.model b/tools/V7_sft.model new file mode 100644 index 0000000000000000000000000000000000000000..f7d52d62bfe294e8fee006f3217dcb252be0f257 GIT binary patch literal 1658691 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

?y^-B~>@eB5FybLNtnn^yfex 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

r9la;&qtcQi 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�b()dQ|A`0(J`aI)-_Z(8+t_=GQ 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:{instruction_str}\n{input_str}' + else: + data['user'] = f'<|User|>:{instruction_str}' + data['bot'] = f'<|Bot|>:{output_str}' + return data + + +def tokenize(sample, sp_model): + """Tokenize input dataset + + Args: + sample (dict): Input data sample. + sp_model (str): Path of tokenizer. + + Returns: + tuple: dumped processed data sample and length of tokens. + """ + special_tokens_map = {'': 103167, '': 103166, 'nl_id': 13} + token_ids = [sp_model.bos_id()] + human_s = sample['user'] + ass_s = sample['bot'] + + human_ids = sp_model.encode(human_s) + [ + special_tokens_map[""], special_tokens_map['nl_id'] + ] + human_ids_ignore = [-token_id for token_id in human_ids] + + ass_template_ids = sp_model.encode('<|Assistant|>:') + ass_template_ids_ignore = [-token_ids for token_ids in ass_template_ids] + ass_ids = ass_template_ids_ignore + sp_model.encode(ass_s[14:]) + [ + special_tokens_map[""], special_tokens_map['nl_id'] + ] + + token_ids += human_ids_ignore + ass_ids + if len(token_ids) > 2047: + token_ids = token_ids[:2047] + token_ids += [sp_model.eos_id()] + line = str.encode(json.dumps({'tokens': token_ids}) + '\n') + return line, len(token_ids) + + +def dump_bin_meta_bin(samples, path, split_ratio=0.1): + """Dump processed dataset + + Args: + samples (dict): Input data sample. + path (str): Path for output dataset. + split_ratio (float): Ratio for validation dataset splitting. + Default to: 0.1. + + Returns: + tuple: number of train/valid tokens of processed dataset, + number of train/valid samples of processed dataset. + """ + + train_path = osp.join(path, 'train/en/') + valid_path = osp.join(path, 'valid/en/') + train_dir = Path(train_path) + valid_dir = Path(valid_path) + train_dir.mkdir(exist_ok=True, parents=True) + valid_dir.mkdir(exist_ok=True, parents=True) + train_f = open(train_dir.joinpath('dataset.bin'), 'wb') + valid_f = open(valid_dir.joinpath('dataset.bin'), 'wb') + + train_tokens = 0 + valid_tokens = 0 + last_train_position = 0 + last_valid_position = 0 + train_samples = 0 + valid_samples = 0 + train_meta = [] + valid_meta = [] + + sample_length = len(samples) + np.random.seed(0) + valid_indices = np.random.choice( + range(sample_length), int(sample_length * split_ratio)).tolist() + + count = -1 + for line, token_num in samples: + count += 1 + if count in valid_indices: + valid_tokens += token_num + valid_f.write(line) + valid_meta.append((last_valid_position, token_num)) + last_valid_position += len(line) + valid_samples += 1 + else: + train_tokens += token_num + train_f.write(line) + train_meta.append((last_train_position, token_num)) + last_train_position += len(line) + train_samples += 1 + + train_f.close() + valid_f.close() + np.save(open(train_dir.joinpath('dataset.bin.meta'), 'wb'), train_meta) + np.save(open(valid_dir.joinpath('dataset.bin.meta'), "wb"), valid_meta) + + return train_tokens, valid_tokens, train_samples, valid_samples + + +if __name__ == '__main__': + + parser = argparse.ArgumentParser() + parser.add_argument( + 'dataset_path', type=str, help='path of dataset json file') + parser.add_argument( + 'output_path', type=str, help='path of processed dataset') + parser.add_argument('tokenizer_path', type=str, help='path of tokenizer') + parser.add_argument( + '--split_ratio', + type=float, + default=0.1, + help='ratio for validation dataset splitting') + + args = parser.parse_args() + sp_model = spm.SentencePieceProcessor(model_file=args.tokenizer_path) + split_ratio = args.split_ratio + samples = [] + + dataset = process(args.dataset_path, sp_model) + for sample in tqdm(dataset): + samples.append(sample) + + train_tokens, valid_tokens, train_samples, valid_samples = \ + dump_bin_meta_bin(samples, args.output_path, args.split_ratio) + print(f'number of train dataset: {train_samples}, ' + 'number of train dataset token: {train_tokens}') + print(f'number of validation dataset: {valid_samples}, ' + 'number of validation dataset token: {valid_tokens}') diff --git a/tools/convert2hf.py b/tools/convert2hf.py new file mode 100644 index 0000000..49ee1f6 --- /dev/null +++ b/tools/convert2hf.py @@ -0,0 +1,174 @@ +import argparse +import math +import os +import random +import re +import shutil + +import torch +from modeling_internlm import InternLMConfig, InternLMForCausalLM +from tokenization_internlm import InternLMTokenizer + +NUM_SHARDS = { + "7B": 1, +} + + +def convert2hf(model_config, states_tp_pps): + folder = f"/dev/shm/wait_to_upload_weight_tmp_{random.random()}/" + os.makedirs(folder, exist_ok=True) + + try: + states = merge_pp(states_tp_pps)[0] + + if "embedding.word_embeddings.weight" in states: + embedding_key = "embedding.word_embeddings.weight" + elif "embedding.weight" in states: + embedding_key = "embedding.weight" + else: + print("Check embedding states'names in below:", flush=True) + print(list(states.keys()), flush=True) + + dims_per_head = model_config["hidden_size"] // model_config["num_attention_heads"] + base = 10000.0 + inv_freq = 1.0 / (base ** (torch.arange(0, dims_per_head, 2).float() / dims_per_head)) + + current_states = {} + + current_states["model.embed_tokens.weight"] = states.pop(embedding_key) + current_states["model.norm.weight"] = states.pop("norm.weight") + current_states["lm_head.weight"] = states.pop("head.weight") + + for i in range(model_config["num_layers"]): + states.pop(f"blocks.{i}.mixer.rotary_emb.inv_freq") + + wqkv = states.pop(f"blocks.{i}.mixer.Wqkv.weight").reshape( + 3, model_config["num_attention_heads"], -1, model_config["hidden_size"] + ) + bqkv = states.pop(f"blocks.{i}.mixer.Wqkv.bias").reshape(3, model_config["num_attention_heads"], -1) + + current_states[f"model.layers.{i}.self_attn.q_proj.weight"] = wqkv[0].reshape( + -1, model_config["hidden_size"] + ) + current_states[f"model.layers.{i}.self_attn.q_proj.bias"] = bqkv[0].reshape(-1) + current_states[f"model.layers.{i}.self_attn.k_proj.weight"] = wqkv[1].reshape( + -1, model_config["hidden_size"] + ) + current_states[f"model.layers.{i}.self_attn.k_proj.bias"] = bqkv[1].reshape(-1) + current_states[f"model.layers.{i}.self_attn.v_proj.weight"] = wqkv[2].reshape( + -1, model_config["hidden_size"] + ) + current_states[f"model.layers.{i}.self_attn.v_proj.bias"] = bqkv[2].reshape(-1) + + current_states[f"model.layers.{i}.self_attn.o_proj.weight"] = states.pop( + f"blocks.{i}.mixer.out_proj.weight" + ) + current_states[f"model.layers.{i}.self_attn.o_proj.bias"] = states.pop(f"blocks.{i}.mixer.out_proj.bias") + + current_states[f"model.layers.{i}.mlp.gate_proj.weight"] = states.pop(f"blocks.{i}.mlp.w1.weight") + current_states[f"model.layers.{i}.mlp.down_proj.weight"] = states.pop(f"blocks.{i}.mlp.w3.weight") + current_states[f"model.layers.{i}.mlp.up_proj.weight"] = states.pop(f"blocks.{i}.mlp.w2.weight") + + current_states[f"model.layers.{i}.input_layernorm.weight"] = states.pop(f"blocks.{i}.norm1.weight") + current_states[f"model.layers.{i}.post_attention_layernorm.weight"] = states.pop(f"blocks.{i}.norm2.weight") + current_states[f"model.layers.{i}.self_attn.rotary_emb.inv_freq"] = inv_freq + + config = InternLMConfig( + hidden_size=model_config["hidden_size"], + intermediate_size=compute_intermediate_size(model_config["hidden_size"]), + num_attention_heads=model_config["num_attention_heads"], + num_hidden_layers=model_config["num_layers"], + rms_norm_eps=1e-06, + bias=True, + ) + + if model_config["vocab_size"] != -1: + config.vocab_size = model_config["vocab_size"] + + config.save_pretrained(folder) + torch.save(current_states, os.path.join(folder, "pytorch_model.bin")) + + model = InternLMForCausalLM.from_pretrained(folder, torch_dtype=torch.float16, low_cpu_mem_usage=True) + del model.config._name_or_path + + finally: + shutil.rmtree(folder) + + return config, model + + +def compute_intermediate_size(n): + return int(math.ceil(n * 8 / 3) + 255) // 256 * 256 + + +def merge_pp(states_tp_pp): + max_tp = len(states_tp_pp) + max_pp = len(states_tp_pp[0]) + + full_states = [] + for tp in range(max_tp): + layer_shift = 0 + + tp_states = {} + for pp in range(max_pp): + _layer_shift = 0 + states = states_tp_pp[tp][pp] + keys = list(states.keys()) + for key in keys: + match = re.search("\.\d+\.", key) + if match is not None: + s, e = match.span() + layer_idx = int(key[s + 1 : e - 1]) + layer_shift + _layer_shift = max(_layer_shift, int(key[s + 1 : e - 1])) + name = key[:s] + f".{layer_idx}." + key[e:] + tp_states[name] = states[key] + else: + tp_states[key] = states[key] + layer_shift += _layer_shift + 1 + full_states.append({(key[6:] if key.startswith("model.") else key): value for key, value in tp_states.items()}) + return full_states + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument('--src_folder', type=str, default='~/test/') # 需要转换为hf格式的checkpoint文件夹 + parser.add_argument('--tgt_folder', type=str, default='~/output/') # 存放转换后checkpoint的目标文件夹 + parser.add_argument('--tokenizer', type=str, default='~/test/tokenizer.model') # Tokenizer 文件的路径 + args = parser.parse_args() + + def load(fp): + with open(fp, "rb") as f: + pt_data = torch.load(f, map_location="cpu") + return pt_data + + folder = args.src_folder + target_folder = args.tgt_folder + model_config = load(os.path.join(folder, "model_config.pt")) + + fns = list(os.listdir(folder)) + + model_fns = [] + for fn in fns: + if fn.startswith("model_t") and not fn.endswith("md5"): + model_fns.append(fn) + + max_tp, max_pp = -1, -1 + for fn in model_fns: + _, tp, pp = os.path.splitext(fn)[0].split("_") + max_pp = max(max_pp, int(pp[2:]) + 1) + max_tp = max(max_tp, int(tp[2:]) + 1) + + states_tp_pps = [[]] + + for pp in range(max_pp): + model_name = f"model_tp0_pp{pp}.pt" + states = load(os.path.join(folder, model_name)) + states_tp_pps[0].append(states) + + config, model = convert2hf(model_config, states_tp_pps) + + os.makedirs(target_folder, exist_ok=True) + model.save_pretrained(target_folder, max_shard_size="20GB") + + tokenizer = InternLMTokenizer(args.tokenizer) + tokenizer.save_pretrained(target_folder) diff --git a/tools/tokenizer.py b/tools/tokenizer.py new file mode 100644 index 0000000..44211a1 --- /dev/null +++ b/tools/tokenizer.py @@ -0,0 +1,194 @@ +import argparse +import json +import os +import warnings + +import numpy as np +from sentencepiece import SentencePieceProcessor +from termcolor import colored + +current_dir = os.path.dirname(os.path.abspath(__file__)) +model_path = os.path.join(current_dir, "V7.model") +tokenizer = SentencePieceProcessor(model_file=model_path) + + +def write_bin(context: str, path: str) -> None: + """ + Write bin file. + + Args: + context (str): the context of raw file. + path (str): the path for output bin file. + + Example: + >>> write_bin("今天天气晴朗适合出门散步", "out.bin") # the output file format is 'txt' + >>> out.bin + >>> {"tokens": [67577, 69095, 63010, 61770, 67783, 69301, 74732]} + """ + # encode the context into tokens, which is a list, eg. [67577, 69095, 63010, 61770, 67783, 69301, 74732] + tokens = tokenizer.encode(context) + # transfer the list into dic, key is str 'tokens', value is tokens. + # eg. {"tokens": [67577, 69095, 63010, 61770, 67783, 69301, 74732]} + data = dict(tokens=tokens) + # encode the data into bytes to save + saved_bin = str.encode(json.dumps(data) + "\n") + + # write bytes into bin path + with open(path, "ab") as f: + f.write(saved_bin) + + +def prepare_meta(bin_file_path: str): + """ + Prepare metadata for the given bin file. + + Args: + bin_file_path (str): the bin file path. + """ + meta = [] + cur = 0 + with open(bin_file_path, "rb") as f: + while True: + # read lines + line = f.readline() + # if line is empty, then break + if line == b"": + break + # obtain the token amount of each line + length = len(json.loads(line)["tokens"]) + # meta is a list of tuple(cur, length) + # cur: the start index of each line + # length: the token amount of each line + meta.append((cur, length)) + # update the cur to generate the meta information of next line + cur += len(line) + print(meta) + # define path of the generated meta file + meta_fp = bin_file_path + ".meta" + # save the generated meta information + with open(meta_fp, "wb") as f: + meta = np.array(meta, dtype=np.int32) + np.save(f, meta) + + +def txt2bin(txt_file_path: str, bin_file_path: str): + """ + Read content from txt file and write to bin file + + Args: + txt_file_path (str): txt file path. + bin_file_path (str): output bin file path. + """ + # Check if the txt file exists + if not os.path.isfile(txt_file_path): + warnings.warn(colored(f"{txt_file_path} does not exist.", "red")) + return + + try: + # Open the text file + with open(txt_file_path, "r") as txt_file: + for line in txt_file: + # Strip any leading/trailing whitespace + stripped_line = line.strip() + if stripped_line: + # Pass each line to the write_bin function + write_bin(stripped_line, bin_file_path) + + print(colored(f"Successfully converted {txt_file_path} to {bin_file_path}", "green")) + + except Exception as e: + print(colored(f"Error while converting {txt_file_path} to {bin_file_path}: {str(e)}", "red")) + + +def json2bin(json_file_path: str, bin_file_path: str): + """ + Read content from json file and write to bin file + + Args: + json_file_path (str): json file path. + bin_file_path (str): output bin file path. + """ + + if not os.path.isfile(json_file_path): + warnings.warn(colored(f"{json_file_path} does not exist.", "red")) + return + + try: + # load json file + with open(json_file_path, "r") as json_file: + data = json.load(json_file) + # assuming data is a list of dictionaries + for record in data: + # the type of record is dict, transfer the dict into str + context = json.dumps(record) + # encode the str and write into bin + write_bin(context, bin_file_path) + + print(colored(f"Successfully converted {json_file_path} to {bin_file_path}", "green")) + + except Exception as e: + print(colored(f"Error while converting {json_file_path} to {bin_file_path}: {str(e)}", "red")) + + +def jsonl2bin(jsonl_file_path: str, bin_file_path: str): + """ + Read content from jsonl file and write to bin file + + Args: + jsonl_file_path: jsonl file path. + bin_file_path: bin file path. + """ + + if not os.path.isfile(jsonl_file_path): + warnings.warn(colored(f"{jsonl_file_path} does not exist.", "red")) + return + + try: + with open(jsonl_file_path, "r") as jsonl_file: + for line in jsonl_file: + # encode the str and write into bin + write_bin(line, bin_file_path) + + print(colored(f"Successfully converted {jsonl_file_path} to {bin_file_path}", "green")) + + except Exception as e: + print(colored(f"Error while converting {jsonl_file_path} to {bin_file_path}: {str(e)}", "red")) + + +def parse_args(): + parser = argparse.ArgumentParser() + parser.add_argument("--raw_data_name", required=True, help="Input file name") + parser.add_argument( + "--input_file_type", + choices=["txt", "json", "jsonl"], + required=True, + help="Input file format (either txt, json or jsonl)", + ) + parser.add_argument("--bin", required=True, help="Path to the output bin file") + + return parser.parse_args() + + +def main(): + # parse arguments + args = parse_args() + + # obtain the raw data path + input_file_path = f"{args.raw_data_name}.{args.input_file_type}" + + # different methods for different raw data type, we only support "txt", "json" and "jsonl" data type. + if args.input_file_type == "txt": + txt2bin(input_file_path, args.bin) + elif args.input_file_type == "json": + json2bin(input_file_path, args.bin) + elif args.input_file_type == "jsonl": + jsonl2bin(input_file_path, args.bin) + else: + print(colored("Invalid input file type. Use --help for more information.", "red")) + + # To avoid potential read/write errors, the metadata preparation follows after creating the .bin file. + prepare_meta(args.bin) + + +if __name__ == "__main__": + main() diff --git a/tools/transformers/README.md b/tools/transformers/README.md new file mode 100644 index 0000000..9010716 --- /dev/null +++ b/tools/transformers/README.md @@ -0,0 +1,22 @@ +# InternLM Transformers + +该文件夹下包含了 transformers 格式的 `InternLM` 模型。 + +## 权重转换 + +`../tools/convert2hf.py` 可以将训练保存的权重一键转换为 transformers 格式。 + +```bash +python convert2hf.py --src_folder origin_ckpt/ --tgt_folder hf_ckpt/ --tokenizer tokenizes/tokenizer.model +``` + +然后可以使用 `from_pretrained` 接口加载: + +```python +from modeling_internlm import InternLMForCausalLM + +model = InternForCausalLM.from_pretrained("hf_ckpt/") +``` + + +`moss_example.py` 展示了如何使用 LoRA 来在 `fnlp/moss-moon-002-sft` 数据集上进行微调的样例。 diff --git a/tools/transformers/configuration_internlm.py b/tools/transformers/configuration_internlm.py new file mode 100644 index 0000000..298f913 --- /dev/null +++ b/tools/transformers/configuration_internlm.py @@ -0,0 +1,120 @@ +# coding=utf-8 +# Copyright 2022 EleutherAI and the HuggingFace Inc. team. All rights reserved. +# +# This code is based on EleutherAI's GPT-NeoX library and the GPT-NeoX +# and OPT implementations in this library. It has been modified from its +# original forms to accommodate minor architectural differences compared +# to GPT-NeoX and OPT used by the Meta AI team that trained the model. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" InternLM model configuration""" + +from transformers.utils import logging +from transformers.configuration_utils import PretrainedConfig + + +logger = logging.get_logger(__name__) + +INTERNLM_PRETRAINED_CONFIG_ARCHIVE_MAP = {} + + +class InternLMConfig(PretrainedConfig): + r""" + This is the configuration class to store the configuration of a [`InternLMModel`]. It is used to instantiate an InternLM + model according to the specified arguments, defining the model architecture. Instantiating a configuration with the + defaults will yield a similar configuration to that of the InternLM-7B. + + Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the + documentation from [`PretrainedConfig`] for more information. + + + Args: + vocab_size (`int`, *optional*, defaults to 32000): + Vocabulary size of the InternLM model. Defines the number of different tokens that can be represented by the + `inputs_ids` passed when calling [`InternLMModel`] + hidden_size (`int`, *optional*, defaults to 4096): + Dimension of the hidden representations. + intermediate_size (`int`, *optional*, defaults to 11008): + Dimension of the MLP representations. + num_hidden_layers (`int`, *optional*, defaults to 32): + Number of hidden layers in the Transformer encoder. + num_attention_heads (`int`, *optional*, defaults to 32): + Number of attention heads for each attention layer in the Transformer encoder. + hidden_act (`str` or `function`, *optional*, defaults to `"silu"`): + The non-linear activation function (function or string) in the decoder. + max_position_embeddings (`int`, *optional*, defaults to 2048): + The maximum sequence length that this model might ever be used with. Typically set this to something large + just in case (e.g., 512 or 1024 or 2048). + initializer_range (`float`, *optional*, defaults to 0.02): + The standard deviation of the truncated_normal_initializer for initializing all weight matrices. + rms_norm_eps (`float`, *optional*, defaults to 1e-12): + The epsilon used by the rms normalization layers. + use_cache (`bool`, *optional*, defaults to `True`): + Whether or not the model should return the last key/values attentions (not used by all models). Only + relevant if `config.is_decoder=True`. + tie_word_embeddings(`bool`, *optional*, defaults to `False`): + Whether to tie weight embeddings + Example: + + ```python + >>> from transformers import InternLMModel, InternLMConfig + + >>> # Initializing a InternLM internlm-7b style configuration + >>> configuration = InternLMConfig() + + >>> # Initializing a model from the internlm-7b style configuration + >>> model = InternLMModel(configuration) + + >>> # Accessing the model configuration + >>> configuration = model.config + ```""" + model_type = "internlm" + _auto_class = "AutoConfig" + + def __init__( + self, + vocab_size=103168, + hidden_size=4096, + intermediate_size=11008, + num_hidden_layers=32, + num_attention_heads=32, + hidden_act="silu", + max_position_embeddings=2048, + initializer_range=0.02, + rms_norm_eps=1e-6, + use_cache=True, + pad_token_id=0, + bos_token_id=1, + eos_token_id=2, + tie_word_embeddings=False, + bias=True, + **kwargs, + ): + self.vocab_size = vocab_size + self.max_position_embeddings = max_position_embeddings + self.hidden_size = hidden_size + self.intermediate_size = intermediate_size + self.num_hidden_layers = num_hidden_layers + self.num_attention_heads = num_attention_heads + self.hidden_act = hidden_act + self.initializer_range = initializer_range + self.rms_norm_eps = rms_norm_eps + self.use_cache = use_cache + self.bias = bias + super().__init__( + pad_token_id=pad_token_id, + bos_token_id=bos_token_id, + eos_token_id=eos_token_id, + tie_word_embeddings=tie_word_embeddings, + **kwargs, + ) diff --git a/tools/transformers/intern_moss_example.py b/tools/transformers/intern_moss_example.py new file mode 100644 index 0000000..d8cf675 --- /dev/null +++ b/tools/transformers/intern_moss_example.py @@ -0,0 +1,69 @@ +import torch +from torch.utils.data import DataLoader +from peft import get_peft_model, LoraConfig, TaskType +from transformers import get_linear_schedule_with_warmup +from transformers import AutoModelForCausalLM, AutoTokenizer +from tqdm import tqdm + +from moss_002_sft import get_dataset, collate_fn + +model_path = "model_path" +data_dir = "moss_002_sft" +data_num = -1 +test_size = 10 +train_batch_size = 1 +epochs = 5 +val_per_steps = 1000 +lr = 9e-6 +peft_config = LoraConfig( + task_type=TaskType.CAUSAL_LM, r=32, lora_alpha=32, lora_dropout=0.1, + target_modules=["gate_proj", "down_proj", "up_proj", "q_proj", "k_proj", "v_proj", "o_proj"] +) + + +# model +model = AutoModelForCausalLM.from_pretrained(model_path, trust_remote_code=True) +tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True) +model = get_peft_model(model, peft_config) +model.cuda() + +# dataset +train_dataset, val_dataset = get_dataset(tokenizer, data_dir, num=data_num, test_size=test_size) +train_dataloader = DataLoader(train_dataset, batch_size=train_batch_size, shuffle=True, collate_fn=lambda x: collate_fn(x, tokenizer)) + +optimizer = torch.optim.AdamW(model.parameters(), lr) +scheduler = get_linear_schedule_with_warmup( + optimizer, 1000, epochs * len(train_dataloader) +) + +# train +fp = open("output", "w") +model.train() +for epoch in tqdm(range(epochs), desc="Traning Epoch"): + batch_bar = tqdm(train_dataloader, desc="Training Batch") + for step, batch in enumerate(batch_bar): + batch = {k:v.cuda() for k, v in batch.items()} + with torch.amp.autocast(device_type="cuda", dtype=torch.bfloat16): + output = model(**batch) + + loss = output.loss + loss.backward() + optimizer.step() + scheduler.step() + optimizer.zero_grad() + batch_bar.set_postfix({"loss": loss.item()}) + if (step + 1) % val_per_steps == 0: + fp.write(f"Epoch {epoch} Batch {step}: Loss={loss.item()}\n") + for i in tqdm(range(len(val_dataset)), desc="Generating"): + data, label = val_dataset[i] + prefix = tokenizer.decode(data.tolist(), skip_special_tokens=True) + try: + generate = model.generate(input_ids=data.unsqueeze(0).cuda(), temperature=0.7, top_k=50, do_sample=True, repetition_penalty=1.02, max_new_tokens=100, top_p=0.9) + text = tokenizer.decode(generate[0].tolist(), skip_special_tokens=True) + text = text.replace(prefix, "") + fp.write(f"Prefix: {prefix}\nGenerated: {text}" + "\n---------------------------------\n") + except Exception as e: + fp.write(f"Prefix: {prefix}\nError: {e}" + "\n---------------------------------\n") + fp.write("\n==============================\n") + model.train() + torch.cuda.empty_cache() diff --git a/tools/transformers/internlm_sft_on_moss.py b/tools/transformers/internlm_sft_on_moss.py new file mode 100644 index 0000000..1638cf1 --- /dev/null +++ b/tools/transformers/internlm_sft_on_moss.py @@ -0,0 +1,105 @@ +import os +import copy + +import torch +from torch.utils.data import Dataset +from datasets import load_dataset, Dataset as HFDataset + +class SFTDataset(Dataset): + # https://github.com/OpenLMLab/MOSS/blob/main/finetune_moss.py + def __init__(self, dataset): + super().__init__() + self.dataset = dataset + + def __len__(self): + return len(self.dataset) + + def __getitem__(self, index): + data = copy.deepcopy(self.dataset[index]["input_ids"]) + no_loss_spans = copy.deepcopy(self.dataset[index]["no_loss_spans"]) + + data = torch.tensor(data, dtype=torch.long) + label = copy.deepcopy(data) + + for no_loss_span in no_loss_spans: + label[no_loss_span[0] : no_loss_span[1]] = -100 + + return data, label + +def collate_fn(batch, tokenizer): + batch_input_ids, batch_labels = [], [] + for input_ids, label in batch: + batch_input_ids.append(input_ids) + batch_labels.append(label) + + batch_input_ids = torch.nn.utils.rnn.pad_sequence(batch_input_ids, batch_first=True, padding_value=tokenizer.eos_token_id) + batch_labels = torch.nn.utils.rnn.pad_sequence(batch_labels, batch_first=True, padding_value=-100) + + return { + "input_ids": batch_input_ids, + "attention_mask": (batch_input_ids == tokenizer.eos_token_id).long(), + "labels": batch_labels + } + +def process(sample, tokenizer, max_len): + chat = sample["plain_text"].split("")[:-1] + num_turns = sample["num_turns"] + meta_instruction = sample["prefix"] + + # encode instruction + instruction_ids = tokenizer.encode(meta_instruction) + assert isinstance(instruction_ids, list), instruction_ids + assert len(instruction_ids) > 0, len(instruction_ids) + input_ids = copy.deepcopy(instruction_ids) + # We do not calculate loss for instruction. + no_loss_spans = [(0, len(instruction_ids))] + + for i in range(num_turns): + # Collect dialogues + cur_turn_ids = [] + cur_no_loss_spans = [] + # Add to cur_turn_ids + cur_turn_ids.extend(tokenizer.encode(chat[i] + "")) + # if key == 'Tool Responses': + # # The format tokens (<|Results|>:...\n) should have losses. + # cur_no_loss_spans.append((len(input_ids + cur_turn_ids) + 5, len(input_ids + cur_turn_ids + cur_ids) - 2)) + if len(input_ids + cur_turn_ids) > max_len: + # Too long, break + break + # Extend input_ids + input_ids.extend(cur_turn_ids) + no_loss_spans.extend(cur_no_loss_spans) + + if len(input_ids) == len(instruction_ids): + # No dialogue, return + return {"input_ids": [], "no_loss_spans": []} + else: + return {"input_ids": input_ids, "no_loss_spans": no_loss_spans} + + +def load_data(save_dir, tokenizer, max_len, num=-1) -> HFDataset: + if os.path.exists(save_dir): + print(f"Loading moss-002-sft from {save_dir}") + else: + print(f"Loading moss-002-sft from datasets") + moss_sft = load_dataset("fnlp/moss-002-sft-data", split="train") + moss_sft = moss_sft.map(lambda x:process(x, tokenizer, max_len), num_proc=10) + moss_sft = moss_sft.filter(lambda x:len(x["input_ids"]) != 0) + moss_sft.save_to_disk(save_dir) + + moss_sft = HFDataset.load_from_disk(save_dir) + if num != -1: + moss_sft = moss_sft.select(range(num)) + print( + f"Load successfully, total {len(moss_sft)} samples.") + + return moss_sft + +def get_dataset(tokenizer, save_dir, max_len=1024, num=-1, test_size=0.1): + moss_sft_data = load_data(save_dir, tokenizer, max_len, num) + moss_sft_split = moss_sft_data.train_test_split(test_size=test_size) + train_dataset = SFTDataset(moss_sft_split["train"]) + val_dataset = SFTDataset(moss_sft_split["test"]) + + return train_dataset, val_dataset + diff --git a/tools/transformers/modeling_internlm.py b/tools/transformers/modeling_internlm.py new file mode 100644 index 0000000..21eb7f5 --- /dev/null +++ b/tools/transformers/modeling_internlm.py @@ -0,0 +1,962 @@ +# coding=utf-8 +# Copyright 2022 EleutherAI and the HuggingFace Inc. team. All rights reserved. +# +# This code is based on EleutherAI's GPT-NeoX library and the GPT-NeoX +# and OPT implementations in this library. It has been modified from its +# original forms to accommodate minor architectural differences compared +# to GPT-NeoX and OPT used by the Meta AI team that trained the model. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" PyTorch InternLM model.""" +import math +from typing import List, Optional, Tuple, Union + +import torch +import torch.utils.checkpoint +from torch import nn +from torch.nn import BCEWithLogitsLoss, CrossEntropyLoss, MSELoss + +from transformers.activations import ACT2FN +from transformers.modeling_outputs import BaseModelOutputWithPast, CausalLMOutputWithPast, SequenceClassifierOutputWithPast +from transformers.modeling_utils import PreTrainedModel +from transformers.generation.streamers import BaseStreamer +from transformers.utils import add_start_docstrings, add_start_docstrings_to_model_forward, logging, replace_return_docstrings +from .configuration_internlm import InternLMConfig + + +logger = logging.get_logger(__name__) + +_CONFIG_FOR_DOC = "InternLMConfig" + +# Copied from transformers.models.bart.modeling_bart._make_causal_mask +def _make_causal_mask( + input_ids_shape: torch.Size, dtype: torch.dtype, device: torch.device, past_key_values_length: int = 0 +): + """ + Make causal mask used for bi-directional self-attention. + """ + bsz, tgt_len = input_ids_shape + mask = torch.full((tgt_len, tgt_len), torch.tensor(torch.finfo(dtype).min, device=device), device=device) + mask_cond = torch.arange(mask.size(-1), device=device) + mask.masked_fill_(mask_cond < (mask_cond + 1).view(mask.size(-1), 1), 0) + mask = mask.to(dtype) + + if past_key_values_length > 0: + mask = torch.cat([torch.zeros(tgt_len, past_key_values_length, dtype=dtype, device=device), mask], dim=-1) + return mask[None, None, :, :].expand(bsz, 1, tgt_len, tgt_len + past_key_values_length) + + +# Copied from transformers.models.bart.modeling_bart._expand_mask +def _expand_mask(mask: torch.Tensor, dtype: torch.dtype, tgt_len: Optional[int] = None): + """ + Expands attention_mask from `[bsz, seq_len]` to `[bsz, 1, tgt_seq_len, src_seq_len]`. + """ + bsz, src_len = mask.size() + tgt_len = tgt_len if tgt_len is not None else src_len + + expanded_mask = mask[:, None, None, :].expand(bsz, 1, tgt_len, src_len).to(dtype) + + inverted_mask = 1.0 - expanded_mask + + return inverted_mask.masked_fill(inverted_mask.to(torch.bool), torch.finfo(dtype).min) + + +class InternLMRMSNorm(nn.Module): + def __init__(self, hidden_size, eps=1e-6): + """ + InternLMRMSNorm is equivalent to T5LayerNorm + """ + super().__init__() + self.weight = nn.Parameter(torch.ones(hidden_size)) + self.variance_epsilon = eps + + def forward(self, hidden_states): + variance = hidden_states.to(torch.float32).pow(2).mean(-1, keepdim=True) + hidden_states = hidden_states * torch.rsqrt(variance + self.variance_epsilon) + + # convert into half-precision if necessary + if self.weight.dtype in [torch.float16, torch.bfloat16]: + hidden_states = hidden_states.to(self.weight.dtype) + + return self.weight * hidden_states + + +class InternLMRotaryEmbedding(torch.nn.Module): + def __init__(self, dim, max_position_embeddings=2048, base=10000, device=None): + super().__init__() + inv_freq = 1.0 / (base ** (torch.arange(0, dim, 2).float().to(device) / dim)) + self.register_buffer("inv_freq", inv_freq) + + # Build here to make `torch.jit.trace` work. + self.max_seq_len_cached = max_position_embeddings + t = torch.arange(self.max_seq_len_cached, device=self.inv_freq.device, dtype=self.inv_freq.dtype) + freqs = torch.einsum("i,j->ij", t, self.inv_freq) + # Different from paper, but it uses a different permutation in order to obtain the same calculation + emb = torch.cat((freqs, freqs), dim=-1) + self.register_buffer("cos_cached", emb.cos()[None, None, :, :], persistent=False) + self.register_buffer("sin_cached", emb.sin()[None, None, :, :], persistent=False) + + def forward(self, x, seq_len=None): + # x: [bs, num_attention_heads, seq_len, head_size] + # This `if` block is unlikely to be run after we build sin/cos in `__init__`. Keep the logic here just in case. + if seq_len > self.max_seq_len_cached: + self.max_seq_len_cached = seq_len + t = torch.arange(self.max_seq_len_cached, device=x.device, dtype=self.inv_freq.dtype) + freqs = torch.einsum("i,j->ij", t, self.inv_freq) + # Different from paper, but it uses a different permutation in order to obtain the same calculation + emb = torch.cat((freqs, freqs), dim=-1).to(x.device) + self.register_buffer("cos_cached", emb.cos()[None, None, :, :], persistent=False) + self.register_buffer("sin_cached", emb.sin()[None, None, :, :], persistent=False) + return ( + self.cos_cached[:, :, :seq_len, ...].to(dtype=x.dtype), + self.sin_cached[:, :, :seq_len, ...].to(dtype=x.dtype), + ) + + +def rotate_half(x): + """Rotates half the hidden dims of the input.""" + x1 = x[..., : x.shape[-1] // 2] + x2 = x[..., x.shape[-1] // 2 :] + return torch.cat((-x2, x1), dim=-1) + + +def apply_rotary_pos_emb(q, k, cos, sin, position_ids): + # The first two dimensions of cos and sin are always 1, so we can `squeeze` them. + cos = cos.squeeze(1).squeeze(0) # [seq_len, dim] + sin = sin.squeeze(1).squeeze(0) # [seq_len, dim] + cos = cos[position_ids].unsqueeze(1) # [bs, 1, seq_len, dim] + sin = sin[position_ids].unsqueeze(1) # [bs, 1, seq_len, dim] + q_embed = (q * cos) + (rotate_half(q) * sin) + k_embed = (k * cos) + (rotate_half(k) * sin) + return q_embed, k_embed + + +class InternLMMLP(nn.Module): + def __init__( + self, + hidden_size: int, + intermediate_size: int, + hidden_act: str, + ): + super().__init__() + self.gate_proj = nn.Linear(hidden_size, intermediate_size, bias=False) + self.down_proj = nn.Linear(intermediate_size, hidden_size, bias=False) + self.up_proj = nn.Linear(hidden_size, intermediate_size, bias=False) + self.act_fn = ACT2FN[hidden_act] + + def forward(self, x): + return self.down_proj(self.act_fn(self.gate_proj(x)) * self.up_proj(x)) + + +class InternLMAttention(nn.Module): + """Multi-headed attention from 'Attention Is All You Need' paper""" + + def __init__(self, config: InternLMConfig): + super().__init__() + self.config = config + self.hidden_size = config.hidden_size + self.num_heads = config.num_attention_heads + self.head_dim = self.hidden_size // self.num_heads + self.max_position_embeddings = config.max_position_embeddings + + if (self.head_dim * self.num_heads) != self.hidden_size: + raise ValueError( + f"hidden_size must be divisible by num_heads (got `hidden_size`: {self.hidden_size}" + f" and `num_heads`: {self.num_heads})." + ) + self.q_proj = nn.Linear(self.hidden_size, self.num_heads * self.head_dim, bias=config.bias) + self.k_proj = nn.Linear(self.hidden_size, self.num_heads * self.head_dim, bias=config.bias) + self.v_proj = nn.Linear(self.hidden_size, self.num_heads * self.head_dim, bias=config.bias) + self.o_proj = nn.Linear(self.num_heads * self.head_dim, self.hidden_size, bias=config.bias) + self.rotary_emb = InternLMRotaryEmbedding(self.head_dim, max_position_embeddings=self.max_position_embeddings) + + def _shape(self, tensor: torch.Tensor, seq_len: int, bsz: int): + return tensor.view(bsz, seq_len, self.num_heads, self.head_dim).transpose(1, 2).contiguous() + + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.Tensor] = None, + position_ids: Optional[torch.LongTensor] = None, + past_key_value: Optional[Tuple[torch.Tensor]] = None, + output_attentions: bool = False, + use_cache: bool = False, + ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]: + bsz, q_len, _ = hidden_states.size() + + query_states = self.q_proj(hidden_states).view(bsz, q_len, self.num_heads, self.head_dim).transpose(1, 2) + key_states = self.k_proj(hidden_states).view(bsz, q_len, self.num_heads, self.head_dim).transpose(1, 2) + value_states = self.v_proj(hidden_states).view(bsz, q_len, self.num_heads, self.head_dim).transpose(1, 2) + + kv_seq_len = key_states.shape[-2] + if past_key_value is not None: + kv_seq_len += past_key_value[0].shape[-2] + cos, sin = self.rotary_emb(value_states, seq_len=kv_seq_len) + query_states, key_states = apply_rotary_pos_emb(query_states, key_states, cos, sin, position_ids) + # [bsz, nh, t, hd] + + if past_key_value is not None: + # reuse k, v, self_attention + key_states = torch.cat([past_key_value[0], key_states], dim=2) + value_states = torch.cat([past_key_value[1], value_states], dim=2) + + past_key_value = (key_states, value_states) if use_cache else None + + attn_weights = torch.matmul(query_states, key_states.transpose(2, 3)) / math.sqrt(self.head_dim) + + if attn_weights.size() != (bsz, self.num_heads, q_len, kv_seq_len): + raise ValueError( + f"Attention weights should be of size {(bsz, self.num_heads, q_len, kv_seq_len)}, but is" + f" {attn_weights.size()}" + ) + + if attention_mask is not None: + if attention_mask.size() != (bsz, 1, q_len, kv_seq_len): + raise ValueError( + f"Attention mask should be of size {(bsz, 1, q_len, kv_seq_len)}, but is {attention_mask.size()}" + ) + attn_weights = attn_weights + attention_mask + attn_weights = torch.max(attn_weights, torch.tensor(torch.finfo(attn_weights.dtype).min)) + + # upcast attention to fp32 + attn_weights = nn.functional.softmax(attn_weights, dim=-1, dtype=torch.float32).to(query_states.dtype) + attn_output = torch.matmul(attn_weights, value_states) + + if attn_output.size() != (bsz, self.num_heads, q_len, self.head_dim): + raise ValueError( + f"`attn_output` should be of size {(bsz, self.num_heads, q_len, self.head_dim)}, but is" + f" {attn_output.size()}" + ) + + attn_output = attn_output.transpose(1, 2) + attn_output = attn_output.reshape(bsz, q_len, self.hidden_size) + + attn_output = self.o_proj(attn_output) + + if not output_attentions: + attn_weights = None + + return attn_output, attn_weights, past_key_value + + +class InternLMDecoderLayer(nn.Module): + def __init__(self, config: InternLMConfig): + super().__init__() + self.hidden_size = config.hidden_size + self.self_attn = InternLMAttention(config=config) + self.mlp = InternLMMLP( + hidden_size=self.hidden_size, + intermediate_size=config.intermediate_size, + hidden_act=config.hidden_act, + ) + self.input_layernorm = InternLMRMSNorm(config.hidden_size, eps=config.rms_norm_eps) + self.post_attention_layernorm = InternLMRMSNorm(config.hidden_size, eps=config.rms_norm_eps) + + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.Tensor] = None, + position_ids: Optional[torch.LongTensor] = None, + past_key_value: Optional[Tuple[torch.Tensor]] = None, + output_attentions: Optional[bool] = False, + use_cache: Optional[bool] = False, + ) -> Tuple[torch.FloatTensor, Optional[Tuple[torch.FloatTensor, torch.FloatTensor]]]: + """ + Args: + hidden_states (`torch.FloatTensor`): input to the layer of shape `(batch, seq_len, embed_dim)` + attention_mask (`torch.FloatTensor`, *optional*): attention mask of size + `(batch, 1, tgt_len, src_len)` where padding elements are indicated by very large negative values. + output_attentions (`bool`, *optional*): + Whether or not to return the attentions tensors of all attention layers. See `attentions` under + returned tensors for more detail. + use_cache (`bool`, *optional*): + If set to `True`, `past_key_values` key value states are returned and can be used to speed up decoding + (see `past_key_values`). + past_key_value (`Tuple(torch.FloatTensor)`, *optional*): cached past key and value projection states + """ + + residual = hidden_states + + hidden_states = self.input_layernorm(hidden_states) + + # Self Attention + hidden_states, self_attn_weights, present_key_value = self.self_attn( + hidden_states=hidden_states, + attention_mask=attention_mask, + position_ids=position_ids, + past_key_value=past_key_value, + output_attentions=output_attentions, + use_cache=use_cache, + ) + hidden_states = residual + hidden_states + + # Fully Connected + residual = hidden_states + hidden_states = self.post_attention_layernorm(hidden_states) + hidden_states = self.mlp(hidden_states) + hidden_states = residual + hidden_states + + outputs = (hidden_states,) + + if output_attentions: + outputs += (self_attn_weights,) + + if use_cache: + outputs += (present_key_value,) + + return outputs + + +INTERNLM_START_DOCSTRING = r""" + This model inherits from [`PreTrainedModel`]. Check the superclass documentation for the generic methods the + library implements for all its model (such as downloading or saving, resizing the input embeddings, pruning heads + etc.) + + This model is also a PyTorch [torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module) subclass. + Use it as a regular PyTorch Module and refer to the PyTorch documentation for all matter related to general usage + and behavior. + + Parameters: + config ([`InternLMConfig`]): + Model configuration class with all the parameters of the model. Initializing with a config file does not + load the weights associated with the model, only the configuration. Check out the + [`~PreTrainedModel.from_pretrained`] method to load the model weights. +""" + + +@add_start_docstrings( + "The bare InternLM Model outputting raw hidden-states without any specific head on top.", + INTERNLM_START_DOCSTRING, +) +class InternLMPreTrainedModel(PreTrainedModel): + config_class = InternLMConfig + base_model_prefix = "model" + supports_gradient_checkpointing = True + _no_split_modules = ["InternLMDecoderLayer"] + _keys_to_ignore_on_load_unexpected = [r"decoder\.version"] + + def _init_weights(self, module): + std = self.config.initializer_range + if isinstance(module, nn.Linear): + module.weight.data.normal_(mean=0.0, std=std) + if module.bias is not None: + module.bias.data.zero_() + elif isinstance(module, nn.Embedding): + module.weight.data.normal_(mean=0.0, std=std) + if module.padding_idx is not None: + module.weight.data[module.padding_idx].zero_() + + def _set_gradient_checkpointing(self, module, value=False): + if isinstance(module, InternLMModel): + module.gradient_checkpointing = value + + +INTERNLM_INPUTS_DOCSTRING = r""" + Args: + input_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`): + Indices of input sequence tokens in the vocabulary. Padding will be ignored by default should you provide + it. + + Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and + [`PreTrainedTokenizer.__call__`] for details. + + [What are input IDs?](../glossary#input-ids) + attention_mask (`torch.Tensor` of shape `(batch_size, sequence_length)`, *optional*): + Mask to avoid performing attention on padding token indices. Mask values selected in `[0, 1]`: + + - 1 for tokens that are **not masked**, + - 0 for tokens that are **masked**. + + [What are attention masks?](../glossary#attention-mask) + + Indices can be obtained using [`AutoTokenizer`]. See [`PreTrainedTokenizer.encode`] and + [`PreTrainedTokenizer.__call__`] for details. + + If `past_key_values` is used, optionally only the last `decoder_input_ids` have to be input (see + `past_key_values`). + + If you want to change padding behavior, you should read [`modeling_opt._prepare_decoder_attention_mask`] + and modify to your needs. See diagram 1 in [the paper](https://arxiv.org/abs/1910.13461) for more + information on the default strategy. + + - 1 indicates the head is **not masked**, + - 0 indicates the head is **masked**. + position_ids (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*): + Indices of positions of each input sequence tokens in the position embeddings. Selected in the range `[0, + config.n_positions - 1]`. + + [What are position IDs?](../glossary#position-ids) + past_key_values (`tuple(tuple(torch.FloatTensor))`, *optional*, returned when `use_cache=True` is passed or when `config.use_cache=True`): + Tuple of `tuple(torch.FloatTensor)` of length `config.n_layers`, with each tuple having 2 tensors of shape + `(batch_size, num_heads, sequence_length, embed_size_per_head)`) and 2 additional tensors of shape + `(batch_size, num_heads, encoder_sequence_length, embed_size_per_head)`. + + Contains pre-computed hidden-states (key and values in the self-attention blocks and in the cross-attention + blocks) that can be used (see `past_key_values` input) to speed up sequential decoding. + + If `past_key_values` are used, the user can optionally input only the last `decoder_input_ids` (those that + don't have their past key value states given to this model) of shape `(batch_size, 1)` instead of all + `decoder_input_ids` of shape `(batch_size, sequence_length)`. + inputs_embeds (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`, *optional*): + Optionally, instead of passing `input_ids` you can choose to directly pass an embedded representation. This + is useful if you want more control over how to convert `input_ids` indices into associated vectors than the + model's internal embedding lookup matrix. + use_cache (`bool`, *optional*): + If set to `True`, `past_key_values` key value states are returned and can be used to speed up decoding (see + `past_key_values`). + output_attentions (`bool`, *optional*): + Whether or not to return the attentions tensors of all attention layers. See `attentions` under returned + tensors for more detail. + output_hidden_states (`bool`, *optional*): + Whether or not to return the hidden states of all layers. See `hidden_states` under returned tensors for + more detail. + return_dict (`bool`, *optional*): + Whether or not to return a [`~utils.ModelOutput`] instead of a plain tuple. +""" + + +@add_start_docstrings( + "The bare InternLM Model outputting raw hidden-states without any specific head on top.", + INTERNLM_START_DOCSTRING, +) +class InternLMModel(InternLMPreTrainedModel): + """ + Transformer decoder consisting of *config.num_hidden_layers* layers. Each layer is a [`InternLMDecoderLayer`] + + Args: + config: InternLMConfig + """ + _auto_class = "AutoModel" + + def __init__(self, config: InternLMConfig): + super().__init__(config) + self.padding_idx = config.pad_token_id + self.vocab_size = config.vocab_size + + self.embed_tokens = nn.Embedding(config.vocab_size, config.hidden_size, self.padding_idx) + self.layers = nn.ModuleList([InternLMDecoderLayer(config) for _ in range(config.num_hidden_layers)]) + self.norm = InternLMRMSNorm(config.hidden_size, eps=config.rms_norm_eps) + + self.gradient_checkpointing = False + # Initialize weights and apply final processing + self.post_init() + + def get_input_embeddings(self): + return self.embed_tokens + + def set_input_embeddings(self, value): + self.embed_tokens = value + + # Copied from transformers.models.bart.modeling_bart.BartDecoder._prepare_decoder_attention_mask + def _prepare_decoder_attention_mask(self, attention_mask, input_shape, inputs_embeds, past_key_values_length): + # create causal mask + # [bsz, seq_len] -> [bsz, 1, tgt_seq_len, src_seq_len] + combined_attention_mask = None + if input_shape[-1] > 1: + combined_attention_mask = _make_causal_mask( + input_shape, + inputs_embeds.dtype, + device=inputs_embeds.device, + past_key_values_length=past_key_values_length, + ) + + if attention_mask is not None: + # [bsz, seq_len] -> [bsz, 1, tgt_seq_len, src_seq_len] + expanded_attn_mask = _expand_mask(attention_mask, inputs_embeds.dtype, tgt_len=input_shape[-1]).to( + inputs_embeds.device + ) + combined_attention_mask = ( + expanded_attn_mask if combined_attention_mask is None else expanded_attn_mask + combined_attention_mask + ) + + return combined_attention_mask + + @add_start_docstrings_to_model_forward(INTERNLM_INPUTS_DOCSTRING) + def forward( + self, + input_ids: torch.LongTensor = None, + attention_mask: Optional[torch.Tensor] = None, + position_ids: Optional[torch.LongTensor] = None, + past_key_values: Optional[List[torch.FloatTensor]] = None, + inputs_embeds: Optional[torch.FloatTensor] = None, + use_cache: Optional[bool] = None, + output_attentions: Optional[bool] = None, + output_hidden_states: Optional[bool] = None, + return_dict: Optional[bool] = None, + ) -> Union[Tuple, BaseModelOutputWithPast]: + output_attentions = output_attentions if output_attentions is not None else self.config.output_attentions + output_hidden_states = ( + output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states + ) + use_cache = use_cache if use_cache is not None else self.config.use_cache + + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + # retrieve input_ids and inputs_embeds + if input_ids is not None and inputs_embeds is not None: + raise ValueError("You cannot specify both decoder_input_ids and decoder_inputs_embeds at the same time") + elif input_ids is not None: + batch_size, seq_length = input_ids.shape + elif inputs_embeds is not None: + batch_size, seq_length, _ = inputs_embeds.shape + else: + raise ValueError("You have to specify either decoder_input_ids or decoder_inputs_embeds") + + seq_length_with_past = seq_length + past_key_values_length = 0 + + if past_key_values is not None: + past_key_values_length = past_key_values[0][0].shape[2] + seq_length_with_past = seq_length_with_past + past_key_values_length + + if position_ids is None: + device = input_ids.device if input_ids is not None else inputs_embeds.device + position_ids = torch.arange( + past_key_values_length, seq_length + past_key_values_length, dtype=torch.long, device=device + ) + position_ids = position_ids.unsqueeze(0).view(-1, seq_length) + else: + position_ids = position_ids.view(-1, seq_length).long() + + if inputs_embeds is None: + inputs_embeds = self.embed_tokens(input_ids) + # embed positions + if attention_mask is None: + attention_mask = torch.ones( + (batch_size, seq_length_with_past), dtype=torch.bool, device=inputs_embeds.device + ) + attention_mask = self._prepare_decoder_attention_mask( + attention_mask, (batch_size, seq_length), inputs_embeds, past_key_values_length + ) + + hidden_states = inputs_embeds + + if self.gradient_checkpointing and self.training: + if use_cache: + logger.warning_once( + "`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`..." + ) + use_cache = False + + # decoder layers + all_hidden_states = () if output_hidden_states else None + all_self_attns = () if output_attentions else None + next_decoder_cache = () if use_cache else None + + for idx, decoder_layer in enumerate(self.layers): + if output_hidden_states: + all_hidden_states += (hidden_states,) + + past_key_value = past_key_values[idx] if past_key_values is not None else None + + if self.gradient_checkpointing and self.training: + + def create_custom_forward(module): + def custom_forward(*inputs): + # None for past_key_value + return module(*inputs, output_attentions, None) + + return custom_forward + + layer_outputs = torch.utils.checkpoint.checkpoint( + create_custom_forward(decoder_layer), + hidden_states, + attention_mask, + position_ids, + None, + ) + else: + layer_outputs = decoder_layer( + hidden_states, + attention_mask=attention_mask, + position_ids=position_ids, + past_key_value=past_key_value, + output_attentions=output_attentions, + use_cache=use_cache, + ) + + hidden_states = layer_outputs[0] + + if use_cache: + next_decoder_cache += (layer_outputs[2 if output_attentions else 1],) + + if output_attentions: + all_self_attns += (layer_outputs[1],) + + hidden_states = self.norm(hidden_states) + + # add hidden states from the last decoder layer + if output_hidden_states: + all_hidden_states += (hidden_states,) + + next_cache = next_decoder_cache if use_cache else None + if not return_dict: + return tuple(v for v in [hidden_states, next_cache, all_hidden_states, all_self_attns] if v is not None) + return BaseModelOutputWithPast( + last_hidden_state=hidden_states, + past_key_values=next_cache, + hidden_states=all_hidden_states, + attentions=all_self_attns, + ) + + +class InternLMForCausalLM(InternLMPreTrainedModel): + _auto_class = "AutoModelForCausalLM" + + def __init__(self, config): + super().__init__(config) + self.model = InternLMModel(config) + + self.lm_head = nn.Linear(config.hidden_size, config.vocab_size, bias=False) + + # Initialize weights and apply final processing + self.post_init() + + def get_input_embeddings(self): + return self.model.embed_tokens + + def set_input_embeddings(self, value): + self.model.embed_tokens = value + + def get_output_embeddings(self): + return self.lm_head + + def set_output_embeddings(self, new_embeddings): + self.lm_head = new_embeddings + + def set_decoder(self, decoder): + self.model = decoder + + def get_decoder(self): + return self.model + + @add_start_docstrings_to_model_forward(INTERNLM_INPUTS_DOCSTRING) + @replace_return_docstrings(output_type=CausalLMOutputWithPast, config_class=_CONFIG_FOR_DOC) + def forward( + self, + input_ids: torch.LongTensor = None, + attention_mask: Optional[torch.Tensor] = None, + position_ids: Optional[torch.LongTensor] = None, + past_key_values: Optional[List[torch.FloatTensor]] = None, + inputs_embeds: Optional[torch.FloatTensor] = None, + labels: Optional[torch.LongTensor] = None, + use_cache: Optional[bool] = None, + output_attentions: Optional[bool] = None, + output_hidden_states: Optional[bool] = None, + return_dict: Optional[bool] = None, + ) -> Union[Tuple, CausalLMOutputWithPast]: + r""" + Args: + labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*): + Labels for computing the masked language modeling loss. Indices should either be in `[0, ..., + config.vocab_size]` or -100 (see `input_ids` docstring). Tokens with indices set to `-100` are ignored + (masked), the loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`. + + Returns: + + Example: + + ```python + >>> from transformers import AutoTokenizer, InternLMForCausalLM + + >>> model = InternLMForCausalLM.from_pretrained(PATH_TO_CONVERTED_WEIGHTS) + >>> tokenizer = AutoTokenizer.from_pretrained(PATH_TO_CONVERTED_TOKENIZER) + + >>> prompt = "Hey, are you consciours? Can you talk to me?" + >>> inputs = tokenizer(prompt, return_tensors="pt") + + >>> # Generate + >>> generate_ids = model.generate(inputs.input_ids, max_length=30) + >>> tokenizer.batch_decode(generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False)[0] + "Hey, are you consciours? Can you talk to me?\nI'm not consciours, but I can talk to you." + ```""" + + output_attentions = output_attentions if output_attentions is not None else self.config.output_attentions + output_hidden_states = ( + output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states + ) + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + # decoder outputs consists of (dec_features, layer_state, dec_hidden, dec_attn) + outputs = self.model( + input_ids=input_ids, + attention_mask=attention_mask, + position_ids=position_ids, + past_key_values=past_key_values, + inputs_embeds=inputs_embeds, + use_cache=use_cache, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + ) + + hidden_states = outputs[0] + logits = self.lm_head(hidden_states) + + loss = None + if labels is not None: + # Shift so that tokens < n predict n + shift_logits = logits[..., :-1, :].contiguous() + shift_labels = labels[..., 1:].contiguous() + # Flatten the tokens + loss_fct = CrossEntropyLoss() + shift_logits = shift_logits.view(-1, self.config.vocab_size) + shift_labels = shift_labels.view(-1) + # Enable model parallelism + shift_labels = shift_labels.to(shift_logits.device) + loss = loss_fct(shift_logits, shift_labels) + + if not return_dict: + output = (logits,) + outputs[1:] + return (loss,) + output if loss is not None else output + + return CausalLMOutputWithPast( + loss=loss, + logits=logits, + past_key_values=outputs.past_key_values, + hidden_states=outputs.hidden_states, + attentions=outputs.attentions, + ) + + def prepare_inputs_for_generation( + self, input_ids, past_key_values=None, attention_mask=None, inputs_embeds=None, **kwargs + ): + if past_key_values: + input_ids = input_ids[:, -1:] + + position_ids = kwargs.get("position_ids", None) + if attention_mask is not None and position_ids is None: + # create position_ids on the fly for batch generation + position_ids = attention_mask.long().cumsum(-1) - 1 + position_ids.masked_fill_(attention_mask == 0, 1) + if past_key_values: + position_ids = position_ids[:, -1].unsqueeze(-1) + + # if `inputs_embeds` are passed, we only want to use them in the 1st generation step + if inputs_embeds is not None and past_key_values is None: + model_inputs = {"inputs_embeds": inputs_embeds} + else: + model_inputs = {"input_ids": input_ids} + + model_inputs.update( + { + "position_ids": position_ids, + "past_key_values": past_key_values, + "use_cache": kwargs.get("use_cache"), + "attention_mask": attention_mask, + } + ) + return model_inputs + + @staticmethod + def _reorder_cache(past_key_values, beam_idx): + reordered_past = () + for layer_past in past_key_values: + reordered_past += (tuple(past_state.index_select(0, beam_idx) for past_state in layer_past),) + return reordered_past + + def build_inputs(self, tokenizer, query: str, history: List[Tuple[str, str]] = []): + prompt = "" + for record in history: + prompt += f"""<|User|>:{record[0]}\n<|Bot|>:{record[1]}\n""" + if len(prompt) == 0: + prompt += "" + prompt += f"""<|User|>:{query}\n<|Bot|>:""" + return tokenizer([prompt], return_tensors="pt") + + @torch.no_grad() + def chat(self, + tokenizer, + query: str, + history: List[Tuple[str, str]] = [], + streamer: Optional[BaseStreamer] = None, + max_new_tokens: int = 1024, + do_sample: bool = True, + temperature: float = 0.8, + top_p: float = 0.8, + **kwargs): + inputs = self.build_inputs(tokenizer, query, history) + inputs = {k: v.to(self.device) for k, v in inputs.items() if torch.is_tensor(v)} + outputs = self.generate(**inputs, + streamer=streamer, + max_new_tokens=max_new_tokens, + do_sample=do_sample, + temperature=temperature, + top_p=top_p, + **kwargs) + outputs = outputs[0].cpu().tolist()[len(inputs["input_ids"][0]):] + response = tokenizer.decode(outputs, skip_special_tokens=True) + response = response.split("")[0] + history = history + [(query, response)] + return response, history + + @torch.no_grad() + def stream_chat(self, + tokenizer, + query: str, + history: List[Tuple[str, str]] = [], + max_new_tokens: int = 1024, + do_sample: bool = True, + temperature: float = 0.8, + top_p: float = 0.8, + **kwargs): + class ChatStreamer(BaseStreamer): + def __init__(self, tokenizer) -> None: + super().__init__() + self.tokenizer = tokenizer + + def put(self, value): + if len(value.shape) > 1 and value.shape[0] > 1: + raise ValueError("ChatStreamer only supports batch size 1") + elif len(value.shape) > 1: + value = value[0] + token = self.tokenizer.decode([value[-1]], skip_special_tokens=True) + if token.strip() != "": + print(token, end="") + + def end(self): + print("") + + return self.chat( + tokenizer=tokenizer, + query=query, + streamer=ChatStreamer(tokenizer=tokenizer), + history=history, + max_new_tokens=max_new_tokens, + do_sample=do_sample, + temperature=temperature, + top_p=top_p, + **kwargs + ) + + +@add_start_docstrings( + """ + The InternLM Model transformer with a sequence classification head on top (linear layer). + + [`InternLMForSequenceClassification`] uses the last token in order to do the classification, as other causal models + (e.g. GPT-2) do. + + Since it does classification on the last token, it requires to know the position of the last token. If a + `pad_token_id` is defined in the configuration, it finds the last token that is not a padding token in each row. If + no `pad_token_id` is defined, it simply takes the last value in each row of the batch. Since it cannot guess the + padding tokens when `inputs_embeds` are passed instead of `input_ids`, it does the same (take the last value in + each row of the batch). + """, + INTERNLM_START_DOCSTRING, +) +class InternLMForSequenceClassification(InternLMPreTrainedModel): + _keys_to_ignore_on_load_missing = [r"lm_head.weight"] + + def __init__(self, config): + super().__init__(config) + self.num_labels = config.num_labels + self.model = InternLMModel(config) + self.score = nn.Linear(config.hidden_size, self.num_labels, bias=False) + + # Initialize weights and apply final processing + self.post_init() + + def get_input_embeddings(self): + return self.model.embed_tokens + + def set_input_embeddings(self, value): + self.model.embed_tokens = value + + @add_start_docstrings_to_model_forward(INTERNLM_INPUTS_DOCSTRING) + def forward( + self, + input_ids: torch.LongTensor = None, + attention_mask: Optional[torch.Tensor] = None, + position_ids: Optional[torch.LongTensor] = None, + past_key_values: Optional[List[torch.FloatTensor]] = None, + inputs_embeds: Optional[torch.FloatTensor] = None, + labels: Optional[torch.LongTensor] = None, + use_cache: Optional[bool] = None, + output_attentions: Optional[bool] = None, + output_hidden_states: Optional[bool] = None, + return_dict: Optional[bool] = None, + ) -> Union[Tuple, SequenceClassifierOutputWithPast]: + r""" + labels (`torch.LongTensor` of shape `(batch_size,)`, *optional*): + Labels for computing the sequence classification/regression loss. Indices should be in `[0, ..., + config.num_labels - 1]`. If `config.num_labels == 1` a regression loss is computed (Mean-Square loss), If + `config.num_labels > 1` a classification loss is computed (Cross-Entropy). + """ + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + transformer_outputs = self.model( + input_ids, + attention_mask=attention_mask, + position_ids=position_ids, + past_key_values=past_key_values, + inputs_embeds=inputs_embeds, + use_cache=use_cache, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + ) + hidden_states = transformer_outputs[0] + logits = self.score(hidden_states) + + if input_ids is not None: + batch_size = input_ids.shape[0] + else: + batch_size = inputs_embeds.shape[0] + + if self.config.pad_token_id is None and batch_size != 1: + raise ValueError("Cannot handle batch sizes > 1 if no padding token is defined.") + if self.config.pad_token_id is None: + sequence_lengths = -1 + else: + if input_ids is not None: + sequence_lengths = (torch.ne(input_ids, self.config.pad_token_id).sum(-1) - 1).to(logits.device) + else: + sequence_lengths = -1 + + pooled_logits = logits[torch.arange(batch_size, device=logits.device), sequence_lengths] + + loss = None + if labels is not None: + labels = labels.to(logits.device) + if self.config.problem_type is None: + if self.num_labels == 1: + self.config.problem_type = "regression" + elif self.num_labels > 1 and (labels.dtype == torch.long or labels.dtype == torch.int): + self.config.problem_type = "single_label_classification" + else: + self.config.problem_type = "multi_label_classification" + + if self.config.problem_type == "regression": + loss_fct = MSELoss() + if self.num_labels == 1: + loss = loss_fct(pooled_logits.squeeze(), labels.squeeze()) + else: + loss = loss_fct(pooled_logits, labels) + elif self.config.problem_type == "single_label_classification": + loss_fct = CrossEntropyLoss() + loss = loss_fct(pooled_logits.view(-1, self.num_labels), labels.view(-1)) + elif self.config.problem_type == "multi_label_classification": + loss_fct = BCEWithLogitsLoss() + loss = loss_fct(pooled_logits, labels) + if not return_dict: + output = (pooled_logits,) + transformer_outputs[1:] + return ((loss,) + output) if loss is not None else output + + return SequenceClassifierOutputWithPast( + loss=loss, + logits=pooled_logits, + past_key_values=transformer_outputs.past_key_values, + hidden_states=transformer_outputs.hidden_states, + attentions=transformer_outputs.attentions, + ) diff --git a/tools/transformers/tokenization_internlm.py b/tools/transformers/tokenization_internlm.py new file mode 100644 index 0000000..b6a3489 --- /dev/null +++ b/tools/transformers/tokenization_internlm.py @@ -0,0 +1,242 @@ +# coding=utf-8 +# Copyright 2022 EleutherAI and the HuggingFace Inc. team. All rights reserved. +# +# This code is based on EleutherAI's GPT-NeoX library and the GPT-NeoX +# and OPT implementations in this library. It has been modified from its +# original forms to accommodate minor architectural differences compared +# to GPT-NeoX and OPT used by the Meta AI team that trained the model. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Tokenization classes for IntermLM.""" +import os +from shutil import copyfile +from typing import Any, Dict, List, Optional, Tuple + +import sentencepiece as spm + +from transformers.tokenization_utils import PreTrainedTokenizer +from transformers.utils import logging + + +logger = logging.get_logger(__name__) + +VOCAB_FILES_NAMES = {"vocab_file": "./tokenizer.model"} + +PRETRAINED_VOCAB_FILES_MAP = {} + + +class InternLMTokenizer(PreTrainedTokenizer): + """ + Construct a InternLM tokenizer. Based on byte-level Byte-Pair-Encoding. + + Args: + vocab_file (`str`): + Path to the vocabulary file. + """ + + vocab_files_names = VOCAB_FILES_NAMES + pretrained_vocab_files_map = PRETRAINED_VOCAB_FILES_MAP + model_input_names = ["input_ids", "attention_mask"] + _auto_class = "AutoTokenizer" + + def __init__( + self, + vocab_file, + unk_token="", + bos_token="", + eos_token="", + pad_token="", + sp_model_kwargs: Optional[Dict[str, Any]] = None, + add_bos_token=True, + add_eos_token=False, + decode_with_prefix_space=False, + clean_up_tokenization_spaces=False, + **kwargs, + ): + self.sp_model_kwargs = {} if sp_model_kwargs is None else sp_model_kwargs + super().__init__( + bos_token=bos_token, + eos_token=eos_token, + unk_token=unk_token, + pad_token=pad_token, + clean_up_tokenization_spaces=clean_up_tokenization_spaces, + **kwargs, + ) + self.vocab_file = vocab_file + self.add_bos_token = add_bos_token + self.add_eos_token = add_eos_token + self.decode_with_prefix_space = decode_with_prefix_space + self.sp_model = spm.SentencePieceProcessor(**self.sp_model_kwargs) + self.sp_model.Load(vocab_file) + self._no_prefix_space_tokens = None + + """ Initialisation""" + + @property + def no_prefix_space_tokens(self): + if self._no_prefix_space_tokens is None: + vocab = self.convert_ids_to_tokens(list(range(self.vocab_size))) + self._no_prefix_space_tokens = {i for i, tok in enumerate(vocab) if not tok.startswith("▁")} + return self._no_prefix_space_tokens + + @property + def vocab_size(self): + """Returns vocab size""" + return self.sp_model.get_piece_size() + + @property + def bos_token_id(self) -> Optional[int]: + return self.sp_model.bos_id() + + @property + def eos_token_id(self) -> Optional[int]: + return self.sp_model.eos_id() + + def get_vocab(self): + """Returns vocab as a dict""" + vocab = {self.convert_ids_to_tokens(i): i for i in range(self.vocab_size)} + vocab.update(self.added_tokens_encoder) + return vocab + + def _tokenize(self, text): + """Returns a tokenized string.""" + return self.sp_model.encode(text, out_type=str) + + def _convert_token_to_id(self, token): + """Converts a token (str) in an id using the vocab.""" + return self.sp_model.piece_to_id(token) + + def _convert_id_to_token(self, index): + """Converts an index (integer) in a token (str) using the vocab.""" + token = self.sp_model.IdToPiece(index) + return token + + def _maybe_add_prefix_space(self, tokens, decoded): + if tokens and tokens[0] not in self.no_prefix_space_tokens: + return " " + decoded + else: + return decoded + + def convert_tokens_to_string(self, tokens): + """Converts a sequence of tokens (string) in a single string.""" + current_sub_tokens = [] + out_string = "" + prev_is_special = False + for token in tokens: + # make sure that special tokens are not decoded using sentencepiece model + if token in self.all_special_tokens: + if not prev_is_special: + out_string += " " + out_string += self.sp_model.decode(current_sub_tokens) + token + prev_is_special = True + current_sub_tokens = [] + else: + current_sub_tokens.append(token) + prev_is_special = False + out_string += self.sp_model.decode(current_sub_tokens) + out_string = self.clean_up_tokenization(out_string) + out_string = self._maybe_add_prefix_space(tokens=tokens, decoded=out_string) + return out_string[1:] + + def save_vocabulary(self, save_directory, filename_prefix: Optional[str] = None) -> Tuple[str]: + """ + Save the vocabulary and special tokens file to a directory. + + Args: + save_directory (`str`): + The directory in which to save the vocabulary. + + Returns: + `Tuple(str)`: Paths to the files saved. + """ + if not os.path.isdir(save_directory): + logger.error(f"Vocabulary path ({save_directory}) should be a directory") + return + out_vocab_file = os.path.join( + save_directory, (filename_prefix + "-" if filename_prefix else "") + VOCAB_FILES_NAMES["vocab_file"] + ) + + if os.path.abspath(self.vocab_file) != os.path.abspath(out_vocab_file) and os.path.isfile(self.vocab_file): + copyfile(self.vocab_file, out_vocab_file) + elif not os.path.isfile(self.vocab_file): + with open(out_vocab_file, "wb") as fi: + content_spiece_model = self.sp_model.serialized_model_proto() + fi.write(content_spiece_model) + + return (out_vocab_file,) + + def build_inputs_with_special_tokens(self, token_ids_0, token_ids_1=None): + if self.add_bos_token: + bos_token_ids = [self.bos_token_id] + else: + bos_token_ids = [] + + output = bos_token_ids + token_ids_0 + + if token_ids_1 is not None: + output = output + token_ids_1 + + if self.add_eos_token: + output = output + [self.eos_token_id] + + return output + + def get_special_tokens_mask( + self, token_ids_0: List[int], token_ids_1: Optional[List[int]] = None, already_has_special_tokens: bool = False + ) -> List[int]: + """ + Retrieve sequence ids from a token list that has no special tokens added. This method is called when adding + special tokens using the tokenizer `prepare_for_model` method. + + Args: + token_ids_0 (`List[int]`): + List of IDs. + token_ids_1 (`List[int]`, *optional*): + Optional second list of IDs for sequence pairs. + already_has_special_tokens (`bool`, *optional*, defaults to `False`): + Whether or not the token list is already formatted with special tokens for the model. + + Returns: + `List[int]`: A list of integers in the range [0, 1]: 1 for a special token, 0 for a sequence token. + """ + if already_has_special_tokens: + return super().get_special_tokens_mask( + token_ids_0=token_ids_0, token_ids_1=token_ids_1, already_has_special_tokens=True + ) + + if token_ids_1 is None: + return [1] + ([0] * len(token_ids_0)) + [1] + return [1] + ([0] * len(token_ids_0)) + [1, 1] + ([0] * len(token_ids_1)) + [1] + + def create_token_type_ids_from_sequences( + self, token_ids_0: List[int], token_ids_1: Optional[List[int]] = None + ) -> List[int]: + """ + Create a mask from the two sequences passed to be used in a sequence-pair classification task. T5 does not make + use of token type ids, therefore a list of zeros is returned. + + Args: + token_ids_0 (`List[int]`): + List of IDs. + token_ids_1 (`List[int]`, *optional*): + Optional second list of IDs for sequence pairs. + + Returns: + `List[int]`: List of zeros. + """ + eos = [self.eos_token_id] + + if token_ids_1 is None: + return len(token_ids_0 + eos) * [0] + return len(token_ids_0 + eos + token_ids_1 + eos) * [0] \ No newline at end of file diff --git a/train.py b/train.py new file mode 100644 index 0000000..8e0c4ba --- /dev/null +++ b/train.py @@ -0,0 +1,509 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- + +import socket +import time +import traceback +from functools import partial +from typing import Iterable + +import torch +import torch.distributed as dist +from torch import nn +from torch.utils.data import DataLoader + +import internlm +from internlm.core.context import ParallelMode +from internlm.core.context import global_context as gpc +from internlm.core.naive_amp import NaiveAMPModel +from internlm.core.trainer import TrainState +from internlm.data.batch_sampler import StaticBatchSampler +from internlm.data.collaters import packed_collate_fn +from internlm.data.dummy_dataset import RandomDataset +from internlm.data.packed_dataset import ( + PackedDataset, + PackedDatasetWithoutCuSeqlen, + get_packed_dataset_without_short_length, +) +from internlm.data.utils import DATASET_TYPE_IDS_MAP +from internlm.model.loss import FlashGPTLMLoss +from internlm.solver.beta2_scheduler import Beta2Scheduler +from internlm.solver.lr_scheduler import FineTuneCosineAnnealingWarmupLR +from internlm.solver.optimizer.hybrid_zero_optim import HybridZeroOptimizer +from internlm.utils.common import ( + BatchSkipper, + get_master_node, + get_megatron_flops, + get_process_rank, + launch_time, + parse_args, +) +from internlm.utils.logger import get_logger +from internlm.utils.megatron_timers import megatron_timer as timer +from internlm.utils.model_checkpoint import ( + load_context, + load_model_checkpoint, + load_optimizer_checkpoint, + load_sampler, + load_scheduler, + save_checkpoint, +) +from internlm.utils.parallel import ( + is_no_pp_or_last_stage, + sync_model_param, + sync_model_param_within_tp, +) +from internlm.utils.registry import MODEL_INITIALIZER + +# global llm logger +logger = get_logger(__file__) + + +def initialize_distributed_env(config: str, launcher: str = "slurm", master_port: int = 8888, seed: int = 1024): + """ + Initialize distributed environment for distributed training. + + Args: + config (str): Config file path. + launcher (str): Launcher for launching distributed environment, can be slurm or torch. "slurm" by default. + master_port (str): The master port for distributed training. 8888 by default. + seed (int, optional): Specified random seed for every process. 1024 by default. + """ + + torch.cuda.empty_cache() + + if launcher == "torch": + internlm.launch_from_torch(config=config, seed=seed) + elif launcher == "slurm": + internlm.launch_from_slurm( + config=config, + host=get_master_node(), + port=master_port, + seed=seed, + ) + else: + assert launcher in ["slurm", "torch"], "launcher only support slurm or torch" + + +def initialize_model(): + """ + Initialize model. + + Returns: The neural network model to be trained or evaluated. + """ + + assert ( + not hasattr(gpc.config.parallel, "pipeline") or gpc.config.parallel.pipeline == 1 + ), "Pipeline parallelism is not supported for now." + + model = MODEL_INITIALIZER.get_module(module_name=gpc.config.model_type)(**(gpc.config.model)) + model = NaiveAMPModel( + model=model, + output_to_fp32=is_no_pp_or_last_stage(), + dtype=gpc.config.model.get("dtype", torch.half), + sync_buffer=False, + ) + + # This sync is very important, cause the model weights kept in optimizer are copied + # from the origin parameters in the memory, so we should make sure the dp sync + # does not influence the model weights in optimizer be different with the origin parameters. + sync_model_param(model, parallel_mode=ParallelMode.DATA) + + # This function is needed to make sure parameters that are not splitted by tensor parallelism are + # the same across tensor parallelism. + sync_model_param_within_tp(model) + + return model + + +def get_train_data_loader(num_worker: int = 0): + """ + Generate and return the training data loader. + + Returns: A tuple of (train_dl, dataset_types). + """ + + # Get the dataset types + dataset_types = None + dataset_types = list(DATASET_TYPE_IDS_MAP.keys()) + data_cfg = gpc.config.data + + # Get the sample weight dictionary + train_folder = data_cfg.train_folder + + if not train_folder: + train_ds = RandomDataset(num_samples=1000000, max_len=data_cfg.seq_len) + if data_cfg.pack_sample_into_one: + train_ds = PackedDatasetWithoutCuSeqlen( + train_ds, max_length_per_sample=data_cfg.seq_len, packed_length=data_cfg.packed_length + ) + else: + train_ds = PackedDataset( + train_ds, max_length_per_sample=data_cfg.seq_len, packed_length=data_cfg.packed_length + ) + else: + train_ds = get_packed_dataset_without_short_length( + folder=data_cfg.train_folder, + packed_length=data_cfg.packed_length, + max_length_per_sample=data_cfg.seq_len, + show_progress=dist.get_rank() == 0, + min_length=data_cfg.min_length, + min_length_dict=data_cfg.get("min_length_dict", {}), + pack_into_one_sample=data_cfg.pack_sample_into_one, + ) + + # partition already completed + # assert isinstance(train_ds, (PackedDataset, PackedDatasetWithoutCuSeqlen)) + if isinstance(train_ds, (PackedDataset, PackedDatasetWithoutCuSeqlen)): + datasets = [train_ds] + else: + datasets = train_ds.datasets + + # Create the training dataset sampler + train_sampler = StaticBatchSampler( + datasets, + batch_size=data_cfg.micro_num, + rampup_batch_size=data_cfg.rampup_batch_size, + micro_bsz=data_cfg.micro_bsz, + seed=1024, + drop_last=True, + data_rank=gpc.get_local_rank(ParallelMode.DATA), + data_world_size=gpc.get_world_size(ParallelMode.DATA), + ) + + train_collate_fn = partial(packed_collate_fn, packed_length=data_cfg.packed_length) + + # Create the training data loader + train_dl = DataLoader( + dataset=train_ds, + batch_sampler=train_sampler, + num_workers=num_worker, + pin_memory=True, + collate_fn=train_collate_fn, + persistent_workers=True, + ) + + return train_dl, dataset_types + + +def load_new_batch(train_dl: DataLoader, train_iter: Iterable, train_state: TrainState): + """ + Load and return the new batch data based on training data loader. + + Args: + train_dl (torch.utils.data.DataLoader): Dataloader for training. + train_iter (Iterable): Data iterator from which get a batch of data, obtained by calling iter(dataloader). + train_state (TrainState): Current training state. + + Returns: A batch data and the updated train_iter. + """ + + timer("batch-gen").start() + try: + batch = next(train_iter) # structure is ({'input_ids': Tensor, 'cu_seqlens': Tensor}, Tensor) + next(train_state.batch_sampler_iter) + except StopIteration: + train_iter = iter(train_dl) + batch = next(train_iter) + train_state.batch_sampler_iter = iter(train_state.batch_sampler) + next(train_state.batch_sampler_iter) + train_state.num_consumed_samples_in_epoch = 0 + timer("batch-gen").stop() + + batch[0].pop("type_ids", None) + + return batch, train_iter + + +def initialize_optimizer(model: nn.Module): + """ + Initialize optimizer. + + Args: + model (torch.nn.Module): Your model instance to be trained or evaluated. + + Returns: A tuple of (optimizer, beta2_scheduler, lr_scheduler). + """ + adam_cfg = gpc.config.adam + naive_optimizer = torch.optim.AdamW( + params=[{"params": model.parameters(), "weight_decay": adam_cfg.weight_decay}], + lr=adam_cfg.lr, + betas=(adam_cfg.adam_beta1, adam_cfg.adam_beta2), + eps=adam_cfg.adam_eps, + ) + + optimizer = HybridZeroOptimizer( + naive_optimizer, grad_scal_cfg=gpc.config.grad_scaler, zero_cfg=gpc.config.hybrid_zero_optimizer + ) + + beta2_scheduler = Beta2Scheduler(optimizer=naive_optimizer, **gpc.config.beta2_scheduler) + + lr_scheduler = FineTuneCosineAnnealingWarmupLR(optimizer, **gpc.config.lr_scheduler) + + return optimizer, beta2_scheduler, lr_scheduler + + +def record_current_batch_training_metrics( + get_tflops_func, + logger, + success_update, + batch_count, + batch, + train_state, + optimizer, + beta2_scheduler, + trainer, + start_time, + loss, + grad_norm, +): + """ + Print some training metrics of current batch. + """ + + if success_update in (0, True): + train_state.num_consumed_tokens += batch[1].nelement() * gpc.get_world_size(ParallelMode.DATA) + + if success_update and gpc.is_rank_for_log(): + lr = optimizer.param_groups[0]["lr"] + if hasattr(trainer.engine.optimizer, "grad_scaler"): + scaler = trainer.engine.optimizer.grad_scaler._scale.item() + elif hasattr(trainer.engine.optimizer.optim, "grad_scaler"): + scaler = trainer.engine.optimizer.optim.grad_scaler._scale.item() + + num_tokens_in_batch = batch[1].nelement() + num_samples_in_batch = sum([len(b) - 1 for b in batch[0]["cu_seqlens"]]) + max_length_in_batch = max([(b[1:] - b[:-1]).max().item() for b in batch[0]["cu_seqlens"]]) + max_samples_in_batch = max([len(b) - 1 for b in batch[0]["cu_seqlens"]]) + min_samples_in_batch = min([len(b) - 1 for b in batch[0]["cu_seqlens"]]) + + tk_per_gpu = 0 + tk_per_gpu = round( + num_tokens_in_batch + * gpc.get_world_size(ParallelMode.DATA) + / gpc.get_world_size(ParallelMode.GLOBAL) + / (time.time() - start_time), + 2, + ) + + tflops = get_tflops_func((time.time() - start_time)) + + infos = { + "tflops": tflops, + "step": batch_count, + "loss": loss.item(), + "tgs (tokens/gpu/second)": tk_per_gpu, + "lr": lr, + "loss_scale": scaler, + "grad_norm": grad_norm, + } + + infos["micro_num"] = len(batch[1]) + infos["num_consumed_tokens"] = train_state.num_consumed_tokens + infos["inf_nan_skip_batches"] = train_state.inf_nan_skip_batches + infos["num_samples_in_batch"] = num_samples_in_batch # the number of batches which have the most samples + infos["largest_length"] = max_length_in_batch # the longest input + infos["largest_batch"] = max_samples_in_batch # the batch with the most samples + infos["smallest_batch"] = min_samples_in_batch + infos["adam_beta2"] = beta2_scheduler.get_beta2() + + line = "" + for k, v in infos.items(): + line += f"{k}={v}," + + fwd_bwd_time = round(timer("fwd-bwd").elapsed(), 2) + line += f"fwd_bwd_time={fwd_bwd_time}" + + logger.info(line) + + +def main(args): + # initialize distributed environment + initialize_distributed_env(config=args.config, launcher=args.launcher, master_port=args.port, seed=args.seed) + assert hasattr(gpc, "config") and gpc.config is not None + + # init setting + skip_batches = gpc.config.data.skip_batches + total_steps = gpc.config.data.total_steps + load_optimizer = gpc.config.ckpt.load_optimizer + label_smoothing = gpc.config.loss.label_smoothing + lr = gpc.config.adam.lr + + # ckpt setting + save_ckpt_folder = gpc.config.ckpt.save_ckpt_folder + enable_save_ckpt = gpc.config.ckpt.enable_ckpt + checkpoint_every = gpc.config.ckpt.checkpoint_every + + load_model_only_folder = gpc.config.ckpt.get("load_model_only_folder", None) + load_resume_ckpt_folder = gpc.config.ckpt.get("load_ckpt_folder", None) + + get_tflops_func = partial( + get_megatron_flops, + checkpoint=gpc.config.model.checkpoint, + seq_len=gpc.config.SEQ_LEN, + hidden_size=gpc.config.model.hidden_size, + num_layers=gpc.config.model.num_layers, + vocab_size=gpc.config.model.vocab_size, + global_batch_size=gpc.config.data.micro_bsz * gpc.config.data.micro_num * gpc.get_world_size(ParallelMode.DATA), + global_world_size=gpc.get_world_size(ParallelMode.GLOBAL), + mlp_ratio=gpc.config.MLP_RATIO, + ) + + # get and broadcast current time + current_time = launch_time() + objs = [current_time] + dist.broadcast_object_list(objs, src=0) + current_time = objs[0] + + model_load_path = None + if load_resume_ckpt_folder is not None: + logger.info( + f"===========Resume training from `{load_resume_ckpt_folder}` {current_time} on host:" + f"{socket.gethostname()}===========" + ) + model_load_path = load_resume_ckpt_folder + elif load_model_only_folder is not None: + logger.info( + f"===========SFT training from `{load_model_only_folder}` {current_time} on host:" + f"{socket.gethostname()}===========" + ) + model_load_path = load_model_only_folder + else: + logger.info( + f"===========New Run {current_time} on host:{socket.gethostname()}," + f"tp:{gpc.get_local_rank(ParallelMode.TENSOR)},pp={gpc.get_local_rank(ParallelMode.PIPELINE)}," + f"dp={gpc.get_local_rank(ParallelMode.DATA)}===========" + ) + + # initialize and resume train state + train_state = TrainState(gpc.config) + + # initialize model + model = initialize_model() + + # initialize loss function + criterion = FlashGPTLMLoss(parallel_output=True, label_smoothing=label_smoothing) + + # initialize the train data loader + train_dl, _ = get_train_data_loader(num_worker=4) + train_state.init_batch_sampler(train_dl) + + # Loading model weights must be done before zero is initialized. + if model_load_path is not None: + load_model_checkpoint(folder=model_load_path, model=model) + + optimizer, beta2_scheduler, lr_scheduler = initialize_optimizer(model=model) + + # Loading other persistent training states. + if load_resume_ckpt_folder is not None: + # load lr scheduler states. + load_scheduler(load_resume_ckpt_folder, lr_scheduler, optimizer, lr, train_state) + # load training states. + load_context(load_resume_ckpt_folder, train_dl, train_state) + # load dataloader sampler states. + load_sampler(load_resume_ckpt_folder, train_dl.batch_sampler) + # load optimzier states. + if load_optimizer: + load_optimizer_checkpoint(load_resume_ckpt_folder, optimizer) + + # initialize trainer + trainer, train_dl, _, _ = internlm.initialize_trainer( + model=model, + optimizer=optimizer, + criterion=criterion, + train_dataloader=train_dl, + lr_scheduler=lr_scheduler, + beta2_scheduler=beta2_scheduler, + ) + + # initialize the batch skipper + batch_skipper = BatchSkipper(skip_batches) + + trainer.train() + + # transfer the train data loader into train data iterator + train_iter = iter(train_dl) + + # start iterating the train data and begin training + for batch_count in range(train_state.batch_count, total_steps): + if batch_count % 50 == 0: + torch.cuda.empty_cache() + + start_time = time.time() + timer("one-batch").start() + + # load batch data + batch, train_iter = load_new_batch(train_dl=train_dl, train_iter=train_iter, train_state=train_state) + + # record the consumed samples in training + train_state.batch_count = batch_count + train_state.num_consumed_samples_in_epoch += len(batch[1]) + if batch_skipper(batch_count): # skip this batch + if gpc.is_rank_for_log(): + logger.info(f"Skip batch count:`{batch_count}`...") + timer("one-batch").stop() + continue + + # zero the grads of parameters + trainer.zero_grad() + + # do forward and backward + timer("fwd-bwd").start() + _, _, loss = trainer.execute_schedule(batch, forward_only=False, return_loss=True, return_output_label=False) + timer("fwd-bwd").stop() + assert loss is not None + + # update parameters, and returns (success_update, grad_norm) + trainer_result = trainer.step() + assert trainer_result is not None + + success_update, grad_norm = trainer_result + if success_update: # update parameters successfully + train_state.step_count += 1 + else: + train_state.inf_nan_skip_batches += 1 # record the amount of updating parameters unsuccessfully. + if grad_norm == -99.0 and gpc.is_rank_for_log(): # -99.0 encodes a specific failure case + logger.warning(f"Warning: skip parameter update at step {batch_count}.") + + # calculate and record the training metrics, eg. loss, accuracy and so on. + record_current_batch_training_metrics( + get_tflops_func=get_tflops_func, + logger=logger, + success_update=success_update, + batch_count=batch_count, + batch=batch, + train_state=train_state, + optimizer=optimizer, + beta2_scheduler=beta2_scheduler, + trainer=trainer, + start_time=start_time, + loss=loss, + grad_norm=grad_norm, + ) + + timer("one-batch").stop() + + # checkpoint the training states in specific steps, which is determined by the args "checkpoint_every" + # # save batch sampler that tracks the true consumed samples + if enable_save_ckpt and train_state.step_count % checkpoint_every == 0: + save_checkpoint( + folder=save_ckpt_folder, + model=model, + optimizer=optimizer, + scheduler=lr_scheduler, + train_state=train_state, + model_config=gpc.config.model, + ) + + # wait for all checkpoint uploads to be completed + dist.barrier() + + +if __name__ == "__main__": + args = parse_args() + + try: + main(args) + except Exception: + print(f"Raise exception from {socket.gethostname()} with proc id: {get_process_rank()}") + traceback.print_exc() diff --git a/version.txt b/version.txt new file mode 100644 index 0000000..6e8bf73 --- /dev/null +++ b/version.txt @@ -0,0 +1 @@ +0.1.0 diff --git a/web_demo.py b/web_demo.py new file mode 100644 index 0000000..59fe79f --- /dev/null +++ b/web_demo.py @@ -0,0 +1,253 @@ +""" +This script refers to the dialogue example of streamlit, the interactive generation code of chatglm2 and transformers. We mainly modified part of the code logic to adapt to the generation of our model. +Please refer to these links below for more information: + 1. streamlit chat example: https://docs.streamlit.io/knowledge-base/tutorials/build-conversational-apps + 2. chatglm2: https://github.com/THUDM/ChatGLM2-6B + 3. transformers: https://github.com/huggingface/transformers +""" + +import streamlit as st +import torch +import torch.nn as nn +from dataclasses import dataclass, asdict +from typing import List, Optional, Callable, Optional +import copy +import warnings +import logging +from transformers import AutoModelForCausalLM, AutoTokenizer +from transformers.utils import logging +from transformers.generation.utils import LogitsProcessorList, StoppingCriteriaList, GenerationConfig + +logger = logging.get_logger(__name__) + + +@torch.inference_mode() +def generate_interactive( + model, + tokenizer, + prompt, + generation_config: Optional[GenerationConfig] = None, + logits_processor: Optional[LogitsProcessorList] = None, + stopping_criteria: Optional[StoppingCriteriaList] = None, + prefix_allowed_tokens_fn: Optional[Callable[[int, torch.Tensor], List[int]]] = None, + additional_eos_token_id: Optional[int] = None, + **kwargs, +): + inputs = tokenizer([prompt], padding=True, return_tensors="pt") + input_length = len(inputs["input_ids"][0]) + for k, v in inputs.items(): + inputs[k] = v.cuda() + input_ids = inputs["input_ids"] + batch_size, input_ids_seq_length = input_ids.shape[0], input_ids.shape[-1] + if generation_config is None: + generation_config = model.generation_config + generation_config = copy.deepcopy(generation_config) + model_kwargs = generation_config.update(**kwargs) + bos_token_id, eos_token_id = generation_config.bos_token_id, generation_config.eos_token_id + if isinstance(eos_token_id, int): + eos_token_id = [eos_token_id] + if additional_eos_token_id is not None: + eos_token_id.append(additional_eos_token_id) + has_default_max_length = kwargs.get("max_length") is None and generation_config.max_length is not None + if has_default_max_length and generation_config.max_new_tokens is None: + warnings.warn( + f"Using `max_length`'s default ({generation_config.max_length}) to control the generation length. " + "This behaviour is deprecated and will be removed from the config in v5 of Transformers -- we" + " recommend using `max_new_tokens` to control the maximum length of the generation.", + UserWarning, + ) + elif generation_config.max_new_tokens is not None: + generation_config.max_length = generation_config.max_new_tokens + input_ids_seq_length + if not has_default_max_length: + logger.warn( + f"Both `max_new_tokens` (={generation_config.max_new_tokens}) and `max_length`(=" + f"{generation_config.max_length}) seem to have been set. `max_new_tokens` will take precedence. " + "Please refer to the documentation for more information. " + "(https://huggingface.co/docs/transformers/main/en/main_classes/text_generation)", + UserWarning, + ) + + if input_ids_seq_length >= generation_config.max_length: + input_ids_string = "input_ids" + logger.warning( + f"Input length of {input_ids_string} is {input_ids_seq_length}, but `max_length` is set to" + f" {generation_config.max_length}. This can lead to unexpected behavior. You should consider" + " increasing `max_new_tokens`." + ) + + # 2. Set generation parameters if not already defined + logits_processor = logits_processor if logits_processor is not None else LogitsProcessorList() + stopping_criteria = stopping_criteria if stopping_criteria is not None else StoppingCriteriaList() + + logits_processor = model._get_logits_processor( + generation_config=generation_config, + input_ids_seq_length=input_ids_seq_length, + encoder_input_ids=input_ids, + prefix_allowed_tokens_fn=prefix_allowed_tokens_fn, + logits_processor=logits_processor, + ) + + stopping_criteria = model._get_stopping_criteria( + generation_config=generation_config, stopping_criteria=stopping_criteria + ) + logits_warper = model._get_logits_warper(generation_config) + + unfinished_sequences = input_ids.new(input_ids.shape[0]).fill_(1) + scores = None + while True: + model_inputs = model.prepare_inputs_for_generation(input_ids, **model_kwargs) + # forward pass to get next token + outputs = model( + **model_inputs, + return_dict=True, + output_attentions=False, + output_hidden_states=False, + ) + + next_token_logits = outputs.logits[:, -1, :] + + # pre-process distribution + next_token_scores = logits_processor(input_ids, next_token_logits) + next_token_scores = logits_warper(input_ids, next_token_scores) + + # sample + probs = nn.functional.softmax(next_token_scores, dim=-1) + if generation_config.do_sample: + next_tokens = torch.multinomial(probs, num_samples=1).squeeze(1) + else: + next_tokens = torch.argmax(probs, dim=-1) + + # update generated ids, model inputs, and length for next step + input_ids = torch.cat([input_ids, next_tokens[:, None]], dim=-1) + model_kwargs = model._update_model_kwargs_for_generation( + outputs, model_kwargs, is_encoder_decoder=False + ) + unfinished_sequences = unfinished_sequences.mul((min(next_tokens != i for i in eos_token_id)).long()) + + output_token_ids = input_ids[0].cpu().tolist() + output_token_ids = output_token_ids[input_length:] + for each_eos_token_id in eos_token_id: + if output_token_ids[-1] == each_eos_token_id: + output_token_ids = output_token_ids[:-1] + response = tokenizer.decode(output_token_ids) + + yield response + # stop when each sentence is finished, or if we exceed the maximum length + if unfinished_sequences.max() == 0 or stopping_criteria(input_ids, scores): + break + + +def on_btn_click(): + del st.session_state.messages + + +@dataclass +class GenerationConfig: + max_length: Optional[int] = None + top_p: Optional[float] = None + temperature: Optional[float] = None + do_sample: Optional[bool] = True + + +@st.cache_resource +def load_model(): + model = AutoModelForCausalLM.from_pretrained("internlm/internlm-chat-7b", trust_remote_code=True).to(torch.bfloat16).cuda() + tokenizer = AutoTokenizer.from_pretrained("internlm/internlm-chat-7b", trust_remote_code=True) + return model, tokenizer + + +def prepare_generation_config(): + with st.sidebar: + max_length = st.slider("Max Length", min_value=32, max_value=2048, value=2048) + top_p = st.slider( + 'Top P', 0.0, 1.0, 0.8, step=0.01 + ) + temperature = st.slider( + 'Temperature', 0.0, 1.0, 0.7, step=0.01 + ) + st.button("Clear Chat History", on_click=on_btn_click) + + generation_config = GenerationConfig( + max_length=max_length, + top_p=top_p, + temperature=temperature + ) + + return generation_config + + +user_prompt = "<|User|>:{user}\n" +robot_prompt = "<|Bot|>:{robot}\n" +cur_query_prompt = "<|User|>:{user}\n<|Bot|>:" + + +def combine_history(prompt): + messages = st.session_state.messages + total_prompt = "" + for message in messages: + cur_content = message["content"] + if message["role"] == "user": + cur_prompt = user_prompt.replace("{user}", cur_content) + elif message["role"] == "robot": + cur_prompt = robot_prompt.replace("{robot}", cur_content) + else: + raise RuntimeError + total_prompt += cur_prompt + total_prompt = total_prompt + cur_query_prompt.replace("{user}", prompt) + return total_prompt + + +def main(): + torch.cuda.empty_cache() + print("load model begin.") + model, tokenizer = load_model() + print("load model end.") + + user_avator = "doc/imgs/user.png" + robot_avator = "doc/imgs/robot.png" + + st.title("InternLM-Chat-7B") + + generation_config = prepare_generation_config() + + # Initialize chat history + if "messages" not in st.session_state: + st.session_state.messages = [] + + # Display chat messages from history on app rerun + for message in st.session_state.messages: + with st.chat_message(message["role"], avatar=message.get("avatar")): + st.markdown(message["content"]) + + # Accept user input + if prompt := st.chat_input("What is up?"): + # Display user message in chat message container + with st.chat_message("user", avatar=user_avator): + st.markdown(prompt) + real_prompt = combine_history(prompt) + # Add user message to chat history + st.session_state.messages.append({"role": "user", "content": prompt, "avatar": user_avator}) + + print(f"cur real input:\n{real_prompt}\n") + + with st.chat_message("robot", avatar=robot_avator): + message_placeholder = st.empty() + for cur_response in generate_interactive(model=model, tokenizer=tokenizer, prompt=real_prompt, additional_eos_token_id=103028, **asdict(generation_config)): + # Display robot response in chat message container + message_placeholder.markdown(cur_response + "▌") + message_placeholder.markdown(cur_response) + print(f"cur total response:\n{cur_response}\n") + # Add robot response to chat history + st.session_state.messages.append({"role": "robot", "content": cur_response, "avatar": robot_avator}) + + +if __name__ == "__main__": + main() + + + + + + + +

TWk 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