From 3f3c18f7750aa389fa3b2332d96078ae2756cce6 Mon Sep 17 00:00:00 2001 From: Gunhan Gulsoy Date: Tue, 5 Mar 2019 16:25:25 -0800 Subject: [PATCH 001/365] Modular tensorflow public design review. --- rfcs/20190305-modular-tensorflow.md | 519 ++++++++++++++++++ .../api_picture.png | Bin 0 -> 24565 bytes .../big_picture.png | Bin 0 -> 19995 bytes .../cpp_module.png | Bin 0 -> 32864 bytes .../initial_tf_deps.png | Bin 0 -> 11226 bytes .../py_modules.png | Bin 0 -> 29365 bytes rfcs/20190305-modular-tensorflow/releases.png | Bin 0 -> 25061 bytes .../simple_package_deps.png | Bin 0 -> 6051 bytes 8 files changed, 519 insertions(+) create mode 100644 rfcs/20190305-modular-tensorflow.md create mode 100644 rfcs/20190305-modular-tensorflow/api_picture.png create mode 100644 rfcs/20190305-modular-tensorflow/big_picture.png create mode 100644 rfcs/20190305-modular-tensorflow/cpp_module.png create mode 100644 rfcs/20190305-modular-tensorflow/initial_tf_deps.png create mode 100644 rfcs/20190305-modular-tensorflow/py_modules.png create mode 100644 rfcs/20190305-modular-tensorflow/releases.png create mode 100644 rfcs/20190305-modular-tensorflow/simple_package_deps.png diff --git a/rfcs/20190305-modular-tensorflow.md b/rfcs/20190305-modular-tensorflow.md new file mode 100644 index 000000000..e8b1d0781 --- /dev/null +++ b/rfcs/20190305-modular-tensorflow.md @@ -0,0 +1,519 @@ +# Modular TensorFlow + +| Status | (Proposed / Accepted / Implemented / Obsolete) | +:-------------- |:---------------------------------------------------- | +| **Author(s)** | Gunhan Gulsoy (gunan@google.com) | +| **Sponsor** | Martin Wicke (wicke@google.com) | +| **Updated** | 2019-03-06 | + + +## Motivation + +TensorFlow is a very successful open source project. Since it has been open sourced, [1800+ contributors](https://github.com/tensorflow/tensorflow) have submitted code into TF from outside Google. However, as more and more developers contribute, it becomes more and more difficult to manage contributions in the single repository. + +This project aims to split the TensorFlow codebase into** smaller, more focused**, repositories that can be released and managed separately. These modules will talk to each other using **well defined APIs** that guarantee backwards compatibility. Thanks to the module APIs, these modules are now **managed/owned/released independently.** + +### Problems + + +#### Spaghetti dependencies + +Everything being in a single repository encourages everyone to freely use all other code in the repository, even when this does not make sense. This ensures the library is very difficult to modify later. One example we have for this is the current size of TF, and tf-lite. TF-mobile used to be our initial offering for ml for apps. However, tf mobile required 30+ MBs added to each app, where android apps on the average are [11.5 MBs](https://www.google.com/search?source=hp&ei=82Q-XPfsN5Pj9AORiKmoAw&q=android+average+app+size&btnK=Google+Search&oq=wombat&gs_l=psy-ab.3..0l10.876.1495..3702...0.0..0.76.466.7......0....1..gws-wiz.....0..0i131j0i3.Ij8iLyUMFbE). Thus the TF lite project was born. However, due to the nature of the core TF runtime, TF lite team decided that it is easier to write an entirely new runtime for mobile. + + +#### Long OSS build times + +Having a single repository works great for google. This is in part because it is backed by great infrastructure such as distributed source management tools and massively distributed build system. However, in the open source world these tools do not exist. While Google has efforts to make these available, they do not work as well as internal solutions, and they are too costly for many open source contributors. + +Therefore, building open source tensorflow becomes a painful experience. Many volunteers and developers outside google use their laptops for development. On such systems, TF development cycles require building all of tensorflow that takes around 2 hours. While there is an argument to be made that bazel caching should ensure that they build all of TF only once, without forge, bazel caching is not working as [well as expected](https://docs.bazel.build/versions/master/remote-caching.html#known-issues). + +This also impacts the TF development team, too. Our Kokoro builds are usually our longest running builds, and we have to disable windows and macos presubmits due to concerns about build times. As soon as the presubmits were disabled, average greenness have plunged for windows and macos builds from over 90% to below 50%. + + +#### Adding support for new hardware is very difficult and not scalable + +The ML ecosystem is constantly expanding. New hardware for accelerating ML applications is being worked on by many teams inside and outside Google. As the most popular machine learning framework, TF is expected to add support for many of these hardware as quickly as possible. + +Currently, this means that all such hardware developers need to check in their code into the [main tensorflow repository](http://github.com/tensorflow/tensorflow). This means that all the changes are required to go through TF team's review. This can make merging support for new hardware very very difficult. One glaring example is that AMD has a [fork of tensorflow that can run on AMD GPUs](https://github.com/ROCmSoftwarePlatform/tensorflow-upstream). However, [despite their efforts it has been more than 8 months](https://github.com/tensorflow/tensorflow/pulls?utf8=%E2%9C%93&q=is%3Apr++ROCM) and we still do not have AMD GPU support upstreamed into main TF repo. + + +#### Long PR review queue + +TensorFlow is a very successful opensource project. It is the [4th most forked](https://github.com/search?o=desc&q=stars:%3E1&s=forks&type=Repositories) and [5th most starred](https://github.com/search?q=stars%3A%3E0&s=stars&type=Repositories) project on github. This also means that TF receives quite a lot of opensource contributions. The TensorFlow team has to review all contributions to TensorFlow itself. This creates a bottleneck for merging the changes to the main repository. Currently, we have 296 open PRs, 173 of which had no updates in the last week, and even worse, 87 had no updates in the last 2 weeks as of the end of January. + +Modularizing TensorFlow means that: + + + +* We will enable contributors to own code that we will never use inside of google3. They will be able to host their own code, and work seamlessly with TensorFlow. +* We will have smaller repositories with owners having more control over their repositories. Currently, there is no single reviewer who has the full knowledge to confidently review every single change in TF main repository. Smaller repositories will mean that we will have clearer code owners defined with each repository, who will have more expertise about the code they own. +* We will avoid giant pull requests. In the past, [we have had 1500+ lines of changes](https://github.com/tensorflow/tensorflow/pull/20277) in single pull requests, which required 10 different reviewers to be able to review and merge the code. With smaller repositories, such changes will be split up into smaller and more manageable changes. + + +#### Flexibility for Collaborators/partners + +Currently, any partner or contributor that would like to work with us are subject to all the rules within our repository. Such rules are: + + + +* All code has to be reviewed by a member of TensorFlow team +* They have to use bazel +* They have to sign Google CLA. +* They have to open source their code as a part of our repository +* They have to wait for our release schedules to make use of their features +* They have to rewrite their code based on google style guides. + +With modularization, we would like to remove all of these constraints on our partners, at the cost of these plugins being required to use the C APIs we plan to offer. + + +#### Large TF support matrix + +TF support story is a unique beast. TF support matrix has a lot of orthogonal dimensions. Below are some of the more prominent dimensions: + +* Environment (google3, opensource) +* Operating system (Linux, windows, macos, mobile) +* Architecture (x86, arm, ppc64, …) +* Accelerator (CPU, GPU, TPU) +* Compiler (GCC, Clang, MSVC) +* Python version (2, 3.4, 3.5, 3.6, 3.7) + +More can be added to this list where we have to rebuild tensorflow to support different network architectures, CUDA versions, SIMD instruction sets, etc. + +Having a monolithic repository means we need to rebuild all of our code for all of these different combinations. However, it makes no sense to rebuild all of our C++ code if the only difference is the python version. Or rebuild all of our CPU kernels for different CUDA versions. Modularizing our code means we only need to rebuild and test the modules that are directly impacted by the dimensions we are changing in the support matrix. + + +## Overview + +This project aims to split the TensorFlow codebase into **smaller, more focused**, repositories that can be released and managed separately. These modules will talk to each other using **well defined APIs** that guarantee backwards compatibility. Thanks to these APIs, these modules will be **managed/owned/released independently**. There will be different strategies to break apart pieces based on the languages, but below summarizes the approach for C++ and python: + + +![alt_text](20190305-modular-tensorflow/big_picture.png "Overview of modular TensorFlow") + +A summary of the above is: + + + +* Core TF functionality will be implemented in C++ +* Core TF functionality can be extended using shared objects. +* On top of the core C++ libraries, we will have the language bindings (Using the C API) +* There can be more functionality built on top of the core TF bindings in different languages, which can be maintained and distributed separately. +* All different pieces need to use Stable public APIs with backwards compatibility guarantees. + + +### Definitions + +This section will briefly describe the terms we will use in the rest of this design. + +**Modules:** These are the components of core TF library that will "accept" plugins to expand their capabilities. Examples of modules are networking, filesystem, (graph) optimizers. + +**Plugins:** Plugins are extensions to different modules. For example, filesystem module can have a GCP plugin, an S3 plugin, an HDFS plugin. + +**Shared objects:** These are dll/so/dylib files that can house **one or more** plugins for **one or more **modules. + +**Packages: **Python pip packages which may include python files and/or shared objects. + + +### C++ + +This project aims to implement similar plugin architectures for multiple components of TF code. While these will be listed separately, **there will be a lot of shared pieces between these components**. The modules we would like to handle are: + + + +1. Networking module, with verbs, gdr plugins initially +1. Filesystems module, with GCP, AWS and HDFS support +1. Kernels module, +1. Optimizers/Graph rewrite module, +1. Accelerator backends module + +The above is not an exhaustive list of modules we would like to introduce. These are just initial ideas for good candidates for modules. + +In the initial plan, we will keep XLA as a part of core TF, because of the large API surface. Once the initial work for the above modules are complete, we can reevaluate this decision with XLA team. + +Each of these aspects require unique special treatment in addition to the common strategy defined below. These unique nuances will be discussed in separate documents. Next, we detail the module/plugin architecture we would like to implement abstracting out the specific components listed above. + +This is a high level description of a single module and multiple plugins for this module: + + + +![alt_text](20190305-modular-tensorflow/cpp_module.png "C++ module example") + + +The big pieces of this design are: + + + +1. Modules: Well defined components within tensorflow that need multiple implementations, and select different code paths at runtime +1. Plugins: These will be implementations of each module. Each plug-in will implement an "interface" (i.e., the API defined as C functions rather than a pure virtual class in C++). These will be loaded dynamically at runtime, +1. TF framework/platform APIs: Shared functionality needed for implementing the plugins. Main purpose is to pass data/state between plugins and core. + + +### Python + +Below diagram provides a summary of the proposed tensorflow pip package ecosystem. + + +![alt_text](20190305-modular-tensorflow/py_modules.png "Python module example") + + + +1. Tensorflow Base pip package: This provides the core tensorflow functionality all of TF will share. While estimator and keras provide high level neural network primitives, base will provide basic matrix operations these two packages will use to build the high level APIs. +1. Required tensorflow addons: These are pieces of tensorflow that has to be included in all TF distributions. Examples to this are Estimator, keras, tensorboard and base. These are pieces of the public API that are promised to exist by our compatibility guarantees. +1. TensorFlow Metapackage: This will be a thin package that only defines the composition of tensorflow. Please see the detailed design section for more details on this package. +1. Optional TF packages: These packages will include the optional TF features users may choose to load and enable after they have TF working. Without these, TF will work just fine. Example features we will have as optional packages are GPU support, MKL support, or cloud filesystem support. These will use the C++ modules to load the functions they provide at runtime. + + +## Detailed Design + +We will describe each key design element here in detail. To make the points clearer, trivial examples will be created. + + +### Modularity in C/C++ + +This section will describe the key design points for C++ modularity. + + +#### Modules + +Each module's main pieces will be a module interface in C, and a registry for plugins implementing this module. As a supporting piece, each module will also need to provide a mechanism for plugins to add themselves to the registry at runtime. Below is a toy example for the described design: + + +``` +// A simple toy module called "M" +typedef struct M_context; + +// The summary of the interface plugins need to implement +typedef struct MInterface { + void (*M_Init)(M_context*, string); + void (*M_Execute)(M_context*); +}; + +// The plugin registry for module M +// The registry here implemented uses C++ class std::map +// This is OK as it is not exposed in our example here. +// As far as module implementations are concerned, they only +// need to see and use M_RegisterPlugin method, and that method takes // care of their addition into this registry. +std::map m_plugin_registry; + +// Function to call for each plugin at load time +// to add themselves to the registry +void M_RegisterPlugin( + string plugin, + void (*M_Init)(M_context*, string), + void (*M_Execute)(M_context*)) { + // Omitting error handling. + m_plugin_registry.insert(plugin, + MInterface(M_Init, M_Execute)); +} + +// Implementation of the interface is just a thin layer to +// get the correct plugin and call it. +// Here we assume that plugin explicitly gets selected by +// the init function. Some modules can go with implicit selection, +// Such as deducing the filesystem from the file path. +void M_Init(M_context* ctx, string id) { + // Just a quick hacky way to select the plugin here + ctx->interface = m_plugin_registry[id]; + ctx->interface.M_Init(ctx, id); +} + +void M_Execute(M_context* ctx) { + ctx->interface.M_Execute(ctx); +} +``` + + +**Please note that the above is a toy example to explain the abstract ideas described above. Exact implementation can vary across different modules.** + +Interface has to be pure C at the ABI level. We can have C++ header-only libraries built on top of these C ABI/APIs. + + +#### Plugins + +Plugins need to include implementation of the interfaces declared by one module. If the module interface requires Init and Compute methods, it will need to implement these two functions, plus a TF_InitPlugin function which will be called at load time. This function will also need to register the plugin as prescribed by the module. + + +``` +// A simple plugin implementation A, for module M. +typedef struct M_context; + +// Here is the meat of the plugin: +void A_Init(M_context* ctx, string id) { + // id can be thrown away, in this example. + // Or can encode different ways plugin can be initialized. + ...... + // initialize the plugin + // Modify the context using functions exposed by core + TF_SetFooInContext(ctx, foo); + TF_InitBarInContext(ctx); +} + +void A_Execute(M_context* ctx) { + .......... +} + +void TF_InitPlugin() { + M_RegisterPlugin("A", A_Init, A_Execute); +} +``` + + +When this plugin is loaded by TF at runtime, `TF_InitPlugin` method will be called. This method will register the plugin as prescribed by the module, and exit. + +Plugin shared objects will need to follow some standards: + + + +1. These cannot export any symbols into global namespace to avoid symbol collisions. +1. They need to communicate to TF through any provided C APIs. +1. They can link anything they like, anyway they like in addition to TF. +1. They can be built and distributed separately + + +#### How plugins are loaded + +TensorFlow will look for and load plugins in two different ways: + + + +1. Default TF plugin directories, such as `...python_dir.../site-packages/tensorflow-plugins` +1. User calls `tf.LoadLibrary` + +Both of these will go through the tf.LoadLibrary method, which does the following: + + + +1. Check the directory for plugins. +1. For each plugin, check if they are loadable using platform string, as defined in: [tensorflow/core/platform/platform_strings.h](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/platform/platform_strings.h) +1. dlopen the library +1. dlsym `TF_InitPlugin symbol`, and call it +1. exit. + +To ensure that correct platform strings are generated in each shared object, each plugin library is required to include the following code snippet: + + +``` +#include "tensorflow/core/platform/platform_strings.h" +TF_PLATFORM_STRINGS() +``` + + + +#### TF Framework/platform API + +While all the above components require a lot of careful planning, this piece of this design will require close to half of the total coding load. Currently, all planned components treat the union of all headers under TF as their API. More than 90% of these headers define C++ APIs. + +Our work here will cumulatively build a large API surface in C. While we can compartmentalize work for each module, with more modules implemented there will be a lot of shared API endpoints in core framework between these modules. + +Below is a 10K ft view of how the "different" APIs may look like in a simple set representation, with varying sizes, varying levels of intersection. + + +![alt_text](20190305-modular-tensorflow/api_picture.png "A simple representation of the API.") + +We expect all of this work to be cumulative and finally defining a large coherent API surface for TF. + +Once this API is ready, header only C++ APIs can be defined using this API. + + +### Modularity in Python + +This section will describe the key design points for modular python packages for TF. + + +### TensorFlow base pip package + +Contains the base Python API, and "Core TF" C++ shared objects + +This package will be a subset of the current "tensorflow" pip package. It will include all of the core TF API except the high level API modules we will split up. It will define a public API for everything except for the required add on packages. This API is required to have backwards compatibility guarantees for minor version changes. With this guarantee, we expect the following: + + + _"Given that the combination of these packages work: TF-base 1.n, and addon package 1.m work together, TF-base 1.(n+k) and add on package 1.m should always work together."_ + +If we discover a violation of this guarantee, that will be treated as a P1 bug, and it will require a patch release for the base package 1.(n+k) + + +### Required tensorflow addons + +These packages are planned to contain high level TF functionality that can be safely split up from TF. Examples for these are tensorboard, estimator and keras. Together with the base TF package, these packages will contain the full python code of TF, except for top level API wiring. + +These packages have two constraints: + + + +1. They are only allowed to use public APIs exposed by their dependencies. +1. They are required to provide backwards compatible public APIs. + +With the backwards compatible public APIs, we expect addons to be able to release independently as long as features they depend on are released in their dependencies. + +These packages will have full control over the versions of their dependencies. We recommend they only set a minimum version for their dependencies. When they need new features, they will bump their minimum requirement to include the new API changes. + + +### TensorFlow Metapackage + +This package will reconstruct the TF public API from the base and other requirements + +Just a simple setup.py file that defines dependencies on specific versions of all required packages and base package, plus an `__init__.py` file that defines the top level tensorflow API. + +The python code for tensorflow metapackage will be a single `__init__.py` file that will look like this: + + +``` +from tensorflow_base import * +import tensorflow_estimator as estimator +import tensorflow_keras as keras +<………… more packages as needed > +``` + + +A new tensorflow release will mean we will pick combinations of dependencies, run all our integration tests, and then release the above python file with these dependencies in its setup.py file: + + +``` +TENSORFLOW_DEPENDENCIES= [ + "tensorflow_base == 1.x.y", + "tensorflow_estimator == 1.a.b", + "tensorboard == 1.c.d", + "tensorflow_keras == 1.e.f" +] +``` + + + +### TF Public APIs + +As a part of the modularization, to be able to decouple development and releases for each of these packages, each package is required to expose a **public API with backwards compatibility guarantees**. What this means is, no API symbols in the public API cannot be changed in a backwards incompatible way, syntactically or semantically, between any minor versions. Below is a toy example of two packages explaining the guarantees we expect: + + +![alt_text](20190305-modular-tensorflow/simple_package_deps.png "Just two example packages.") + + + +* P1 depends on P2 +* P2 is expected to provide a public API +* All API symbols exposed by P2 version M.N is expected to work at version M.(N+K) for any non-negative integer K. +* P2 is allowed to make breaking changes to its API between major releases (M to M+1) +* If P1 version X.Y works with P2 version M.N, it should also work the same way with P2 version M.(N+K) However, there are no guarantees for it to work with P2 version (M+K).L +* When P1 is releasing a new version, it should check which API symbols it needs from P2, and fix the minimum version requirement in its pip package for P2 accordingly. + + +### Optional TF packages + +Mostly expected to contain the C++ plugins defined in the previous section. These will be simple pip packages that will deploy the shared objects under "site-packages/tensorflow-plugins" + +These shared objects will be automatically loaded by TF core if: + + + +* They correctly define the compatibility strings using `TF_PLATFORM_STRINGS` +* They are compatible with the system tf core is running on +* They have been properly built and signed (unless running in developer mode) + + +## Alternatives / Potential Issues + + + +* **Why do we not use C++ APIs instead of C**: Compilers have no guarantees for ABIs generated for C++ code. Any C++ API used will require each shared object to be compiled with the same compiler, using the same version of the compiler, with the same compiler flags ([See github issue 23561](https://github.com/tensorflow/tensorflow/issues/23561)). +* **Why do not we statically link everything**: Single shared object for everything: Anywhere except google does not have access to the massively parallel build system we use here at google. This causes prohibitive build times, causing major developer pain for open source developers. There are many more issues, but the summary is while this is a great solution for google, outside google this is simply infeasible. +* **TF will become a suite of multiple packages, built by multiple authorities. What if the bugs get blamed on TF team**: With the modular model, we expect testing of 3rd party code to become easier. This can also be mitigated if the error messages are better, and if they can clearly point out which module the issue stems from. Finally, we can create an apple-swift like testing model, where we run a jenkins setup that people can donate their machines to, and we can run continuous integration tests on their plugins. +* **Why not have APIs but still have a monolithic repository: **When everything is in a single repository, this enables developers to bypass the APIs, and depend on internals. Moreover, we cannot grant full control over different folders on our repository to our partners in a single repository. As long as they are in a single repository, they are still constrained by our build system and license. Finally, in a single repository we do not provide the option of closed source plugins for contributors. +* **Why not go with the OSS federation solutions?** OSS federation requires all dependencies to be in the federation before adding a repository. This is simply not possible for tensorflow, as eigen, llvm and many other dependencies will never be a part of the federation. +* **Documentation, how/where do we document everything?** With multiple repositories, structure of the documentation will need to be rethought, based on what is a part of "TensorFlow proper" and what is an optional feature. + + +## Testing Plan + +We propose the following principles to be followed for testing in a modular world: + +* Each plugin tested separately. +* Modules can plan their own integration tests. +* Cut combinatorial explosion by divide and conquer. +* Fuzzing at the core-module interface level if possible, in the case we need data marshalling between layers. +* With this proposal, we aim to also simplify testing of tensorflow code. The biggest gain we expect in the modular world will be, we will be able to "divide and conquer" the TensorFlow support matrix. +* Following describes an early modularized tensorflow package structure: + + +![alt_text](20190305-modular-tensorflow/initial_tf_deps.png "Initial package structure") + +In the current setup, we need to test all of the above packages for different python versions, operating systems, accelerators(CPU, GPU), compilers, and more variants combined. In the modularized world, each of these packages only need to be unit tested for the following: + + +* tensorflow-base: Operating systems, compiler versions and python versions only with CPU +* tf-gpu: With GPU only, for different operating systems. +* tf-estimator: Only for different python versions + +When testing a package that has dependencies, such as tf-estimator, or tf-gpu, tensorflow-base will be installed with its latest stable release, to ensure to avoid any flakes by this package. + +We know that with the current release cadence this is too slow to support TF's rapid development. But with modules, we expect to be able to release much more frequently. + +On top of the proposed unit testing plan above, we will need package level integration tests. We propose these to be run every night at head. We propose the following to act as the TF integration tests: + + + +* Miscellaneous pip utility tests. Build the nightly pip packages, install them. Then make sure you can import TF, run the command line utilities distributed with TF. +* Tutorials/notebook tests. Build the "nightly" pip packages for all above components. Then install this package. Finally extract the python code from notebooks and run them as graphs +* Models tests: Build and install the nightly pip packages, then run curated models under tensorflow/models for a small amount of steps. + +The above will simply check the sanity of TF, just will check if TF can run without crashing. However, TF requires much more testing. We propose expansion and adoption of the following regression tests to nightly TF test suites: + +* Convergence tests: Run a curated set of small models until convergence. measure the time to converge, and steps to converge +* Performance tests: Run a curated set of models for a pre-selected number of steps. Measure steps per second, and for image models images per second. + + +## Releases + +In the multi package environment, we aim to have the following with the releases: + +1. Smaller packages: We expect to release multiple small packages, instead of the giant package we are building and releasing right now. +1. Faster releases: We would like the smaller packages to be able to release much faster. With the ability to pin each dependency to a known good version, we would like to be able to compartmentalize issues, and only hold certain components back when only certain code in TF has issues. +1. Independent releases: With compatibility checks, we would like to be able to independently release different packages + +Below summarizes a timeline of releases for three packages, A, B and C, where B depends on A and C depends on B. + + +![alt_text](20190305-modular-tensorflow/releases.png "Release plans") + + +To summarize the above timeline: + +* Different packages set their own release cadences +* Each package will set version boundaries for each of their dependencies. +* Each package is responsible for ensuring that all of their public APIs are working without any changes until the next major release +* Packages do not need to modify the minimum version requirements unless they start using newly introduced public API symbols. +* TF metapackage releases may choose to hold back individual packages in favor of faster releases. But dependency requirements have to be respected when doing so. +* Major releases still need to be coordinated. + + +## Packaging Issue Scenarios + + +We will now go over a few failure modes in the proposed environment, and propose how things need to be resolved. We will use a simple example, where we have three packages, A, B and C, where C depends on B and A, and B depends on A. + + +#### Scenario 1: B does not work with a new release of A + +Potential issues: + +* B uses non-public symbols from A: + * B has to release a new version avoiding non-public APIs +* A changed public APIs: + * A has to revert changes to its public APIs and release a patch version replacing the bad version + + +#### Scenario 2: New release of B does not work with A + +Potential issues: + +* B depends on unreleased APIs A exposed in a newer version + * B needs to release a patch version, with just a change in the minimum required version of A + + +#### Scenario 3: C and B depend on different minimum versions of A + +As both C and B have to define a range of versions they require from A, the max version should satisfy both constraints. + + +#### Scenario 4: User installs C first, but then uninstalls A + +This is a pip issue. To help diagnose the problem, B and C should print that A is missing, and user needs to install that to use B or C. + + diff --git a/rfcs/20190305-modular-tensorflow/api_picture.png b/rfcs/20190305-modular-tensorflow/api_picture.png new file mode 100644 index 0000000000000000000000000000000000000000..2e3b6e1dc54d7a607b4fcb83f5cbc238954e3ec4 GIT binary patch literal 24565 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 DyFw>k literal 0 HcmV?d00001 diff --git a/rfcs/20190305-modular-tensorflow/big_picture.png b/rfcs/20190305-modular-tensorflow/big_picture.png new file mode 100644 index 0000000000000000000000000000000000000000..f4e47875a6b6bbf4e2945be2e088f87b4b0d38c4 GIT binary patch literal 19995 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 literal 0 HcmV?d00001 diff --git a/rfcs/20190305-modular-tensorflow/cpp_module.png b/rfcs/20190305-modular-tensorflow/cpp_module.png new file mode 100644 index 0000000000000000000000000000000000000000..566cc23259adf5fa941990241807b2d1ab4e9e00 GIT binary patch literal 32864 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 literal 0 HcmV?d00001 diff --git a/rfcs/20190305-modular-tensorflow/initial_tf_deps.png b/rfcs/20190305-modular-tensorflow/initial_tf_deps.png new file mode 100644 index 0000000000000000000000000000000000000000..aa23bd62e02f5f3651a2548984fed3816b939d71 GIT binary patch literal 11226 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 _1z2w6+AFzwhLPtMxe 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 J&AFd{`){UYrT72< literal 0 HcmV?d00001 diff --git a/rfcs/20190305-modular-tensorflow/py_modules.png b/rfcs/20190305-modular-tensorflow/py_modules.png new file mode 100644 index 0000000000000000000000000000000000000000..0f8fe9c8ddb01b8dd1d987049c753e8f13bd3d69 GIT binary patch literal 29365 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 literal 0 HcmV?d00001 diff --git a/rfcs/20190305-modular-tensorflow/simple_package_deps.png b/rfcs/20190305-modular-tensorflow/simple_package_deps.png new file mode 100644 index 0000000000000000000000000000000000000000..dacaa9a2e2a88c8b412e8b06d8d99c4960d07ad3 GIT binary patch literal 6051 zcmeAS@N?(olHy`uVBq!ia0y~yU~)xf|UvrBvql z!|8W(H!q81)pgcdqIA&1W0HZ62=`(qt4T^F2e=pOEo#j>)y*-DOUWQYplgDThnCr* z=8`3?ykb*0cvu&APcTwae*N$5-@kVy%Vg8bUMD@TEuY6;7xJzr{Qlk-hh;YL04*K` zqaiRF0;3@?8UmvsKw=0)JkZ-&ay0&^eUbV9?Ikxq+3Reue&y_4xAEY+nEL;f$8`mO z20jb_clUh#ZoNAp0ter{l>>?hIJF48x%Z9{$W(OUzz}rcD0J$$YrUHtB!7fcvF!aD zkggU1^_ClZH&+ujfFaO{V`Fvtcc4mz77N8A@8;fRW?*O#c+?`WyS$7aDD2cB?1aY! zNX|mBb&f#N_j4e3qc{gW#9mchA6f8xHe6bwy6)?S9SJQP0IP#vh(ftRIBJ$ zKM{0#Q@3vS{taQL*T-+SlfP?!?bDp}_#2bg?|C)rS#o$xnd`0npdevb%C9JBBv<`v z=Cijqe!A2>-+TMhuM3a9d@h^#_~^yj%Krx%7(7(V_rJPjYFxJe?Znuh)7E}p{zKNj zzVdyv?!w>4cxMNR^v}P$<>R(5>HT(gIiMhS*y((N_jSJA^YeUua^8Xld7pl~KWjhV zqROZ~!k;zwOJTrfQN!iVWnw-)i&+rPzkO*a-&cSC&t~7~cV6o!b=CJj2kMP13oMlGmR@n{ zoi*!$)!}RX`e(j9ZTIfxzk<{6+d-k@@P1VcLr=Kr(dP?~uAYC(Hl876*6%Ls&^wKf z%+k}75}q<8)EtX9`&wB)_g~+!=+?)f8^DPxC6!O{6GN|evsTJ{e8SY-uCay{QYO+dj942XII?$vi&%B127mB7^WEs znZ!Lc|NDqrK#67F$A9Uv^WTd$_-tOdoag}Z4qFcFz^1~dd`OP`!|`}s_*-d{OHBW zOULaY8PtVg$@6mi>kL1RK9s+FyY97f_vPq@$G110-}g~j9qbSRhE{>y>ysE{?%5i> zHkWf}*#b`0QxsM1-LlwK|EAvFex7uFJA=p7GW+ZKA8J20ufO!zI(CoO1#klJs>!?I zWCP5_^eH=lCDNcOJ0QgrN`XUsnK)x|)ZTyRul%2|yK*0Q*4E2nH)NZeyZvq^l&@RA z{=GRj3oxOLg3%Bd4S~@R7!85Z5Eu=C;T!@#w%b}LfO=g5U;dZcJAnotN5Nzopr04|!ie*gdg literal 0 HcmV?d00001 From 6526e3059de1062cfe435a687898f9707df2dac8 Mon Sep 17 00:00:00 2001 From: Gunhan Gulsoy Date: Tue, 5 Mar 2019 22:32:54 -0800 Subject: [PATCH 002/365] Update the proposal status. --- rfcs/20190305-modular-tensorflow.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20190305-modular-tensorflow.md b/rfcs/20190305-modular-tensorflow.md index e8b1d0781..4b1d1807a 100644 --- a/rfcs/20190305-modular-tensorflow.md +++ b/rfcs/20190305-modular-tensorflow.md @@ -1,6 +1,6 @@ # Modular TensorFlow -| Status | (Proposed / Accepted / Implemented / Obsolete) | +| Status | Proposed | :-------------- |:---------------------------------------------------- | | **Author(s)** | Gunhan Gulsoy (gunan@google.com) | | **Sponsor** | Martin Wicke (wicke@google.com) | From 709c3a43c2ae9a13e4a08a04e975463eb9be31c9 Mon Sep 17 00:00:00 2001 From: Edd Wilder-James Date: Tue, 12 Mar 2019 10:51:07 -0700 Subject: [PATCH 003/365] Update 20190305-modular-tensorflow.md Here are my proposed changes, to streamline the introduction and correct a few typos. --- rfcs/20190305-modular-tensorflow.md | 88 ++++++++--------------------- 1 file changed, 25 insertions(+), 63 deletions(-) diff --git a/rfcs/20190305-modular-tensorflow.md b/rfcs/20190305-modular-tensorflow.md index 4b1d1807a..d78dd1fcf 100644 --- a/rfcs/20190305-modular-tensorflow.md +++ b/rfcs/20190305-modular-tensorflow.md @@ -11,64 +11,35 @@ TensorFlow is a very successful open source project. Since it has been open sourced, [1800+ contributors](https://github.com/tensorflow/tensorflow) have submitted code into TF from outside Google. However, as more and more developers contribute, it becomes more and more difficult to manage contributions in the single repository. -This project aims to split the TensorFlow codebase into** smaller, more focused**, repositories that can be released and managed separately. These modules will talk to each other using **well defined APIs** that guarantee backwards compatibility. Thanks to the module APIs, these modules are now **managed/owned/released independently.** - -### Problems +This project aims to split the TensorFlow codebase into **smaller, more focused**, repositories that can be released and managed separately. These modules will talk to each other using **well defined APIs** that guarantee backwards compatibility. Thanks to the module APIs, these modules are now **managed/owned/released independently.** +### Problems addressed #### Spaghetti dependencies -Everything being in a single repository encourages everyone to freely use all other code in the repository, even when this does not make sense. This ensures the library is very difficult to modify later. One example we have for this is the current size of TF, and tf-lite. TF-mobile used to be our initial offering for ml for apps. However, tf mobile required 30+ MBs added to each app, where android apps on the average are [11.5 MBs](https://www.google.com/search?source=hp&ei=82Q-XPfsN5Pj9AORiKmoAw&q=android+average+app+size&btnK=Google+Search&oq=wombat&gs_l=psy-ab.3..0l10.876.1495..3702...0.0..0.76.466.7......0....1..gws-wiz.....0..0i131j0i3.Ij8iLyUMFbE). Thus the TF lite project was born. However, due to the nature of the core TF runtime, TF lite team decided that it is easier to write an entirely new runtime for mobile. - - -#### Long OSS build times - -Having a single repository works great for google. This is in part because it is backed by great infrastructure such as distributed source management tools and massively distributed build system. However, in the open source world these tools do not exist. While Google has efforts to make these available, they do not work as well as internal solutions, and they are too costly for many open source contributors. +Everything being in a single repository encourages everyone to freely use all other code in the repository, even when this does not make sense. This ensures the library is very difficult to modify later. -Therefore, building open source tensorflow becomes a painful experience. Many volunteers and developers outside google use their laptops for development. On such systems, TF development cycles require building all of tensorflow that takes around 2 hours. While there is an argument to be made that bazel caching should ensure that they build all of TF only once, without forge, bazel caching is not working as [well as expected](https://docs.bazel.build/versions/master/remote-caching.html#known-issues). - -This also impacts the TF development team, too. Our Kokoro builds are usually our longest running builds, and we have to disable windows and macos presubmits due to concerns about build times. As soon as the presubmits were disabled, average greenness have plunged for windows and macos builds from over 90% to below 50%. +#### Long build times +Many volunteers and developers outside Google use their laptops for development. On such systems, TF development cycles require building all of tensorflow that takes around 2 hours. While there is an argument to be made that bazel caching should ensure that they build all of TF only once, without forge, bazel caching is not working as [well as expected](https://docs.bazel.build/versions/master/remote-caching.html#known-issues). #### Adding support for new hardware is very difficult and not scalable The ML ecosystem is constantly expanding. New hardware for accelerating ML applications is being worked on by many teams inside and outside Google. As the most popular machine learning framework, TF is expected to add support for many of these hardware as quickly as possible. -Currently, this means that all such hardware developers need to check in their code into the [main tensorflow repository](http://github.com/tensorflow/tensorflow). This means that all the changes are required to go through TF team's review. This can make merging support for new hardware very very difficult. One glaring example is that AMD has a [fork of tensorflow that can run on AMD GPUs](https://github.com/ROCmSoftwarePlatform/tensorflow-upstream). However, [despite their efforts it has been more than 8 months](https://github.com/tensorflow/tensorflow/pulls?utf8=%E2%9C%93&q=is%3Apr++ROCM) and we still do not have AMD GPU support upstreamed into main TF repo. - +Currently, this means that all such hardware developers need to check in their code into the [main tensorflow repository](http://github.com/tensorflow/tensorflow). This means that all the changes are required to go through TF team's review. This can make merging support for new hardware very very difficult. #### Long PR review queue -TensorFlow is a very successful opensource project. It is the [4th most forked](https://github.com/search?o=desc&q=stars:%3E1&s=forks&type=Repositories) and [5th most starred](https://github.com/search?q=stars%3A%3E0&s=stars&type=Repositories) project on github. This also means that TF receives quite a lot of opensource contributions. The TensorFlow team has to review all contributions to TensorFlow itself. This creates a bottleneck for merging the changes to the main repository. Currently, we have 296 open PRs, 173 of which had no updates in the last week, and even worse, 87 had no updates in the last 2 weeks as of the end of January. - -Modularizing TensorFlow means that: - - - -* We will enable contributors to own code that we will never use inside of google3. They will be able to host their own code, and work seamlessly with TensorFlow. -* We will have smaller repositories with owners having more control over their repositories. Currently, there is no single reviewer who has the full knowledge to confidently review every single change in TF main repository. Smaller repositories will mean that we will have clearer code owners defined with each repository, who will have more expertise about the code they own. -* We will avoid giant pull requests. In the past, [we have had 1500+ lines of changes](https://github.com/tensorflow/tensorflow/pull/20277) in single pull requests, which required 10 different reviewers to be able to review and merge the code. With smaller repositories, such changes will be split up into smaller and more manageable changes. - - -#### Flexibility for Collaborators/partners - -Currently, any partner or contributor that would like to work with us are subject to all the rules within our repository. Such rules are: +TensorFlow is a very successful opensource project. It is the [4th most forked](https://github.com/search?o=desc&q=stars:%3E1&s=forks&type=Repositories) and [5th most starred](https://github.com/search?q=stars%3A%3E0&s=stars&type=Repositories) project on github. This also means that TF receives quite a lot of opensource contributions. The TensorFlow team has to review all contributions to TensorFlow itself. This creates a bottleneck for merging the changes to the main repository. +#### Flexibility for collaborators - -* All code has to be reviewed by a member of TensorFlow team -* They have to use bazel -* They have to sign Google CLA. -* They have to open source their code as a part of our repository -* They have to wait for our release schedules to make use of their features -* They have to rewrite their code based on google style guides. - -With modularization, we would like to remove all of these constraints on our partners, at the cost of these plugins being required to use the C APIs we plan to offer. - +Currently, any partner or contributor that would like to work with us are subject to all the rules within of the main repository. Some of these can be relaxed through modularization, where work can happen in a separate repository. #### Large TF support matrix -TF support story is a unique beast. TF support matrix has a lot of orthogonal dimensions. Below are some of the more prominent dimensions: +The TF support story is a unique beast. Our support matrix has a lot of orthogonal dimensions. Below are some of the more prominent dimensions: * Environment (google3, opensource) * Operating system (Linux, windows, macos, mobile) @@ -77,14 +48,14 @@ TF support story is a unique beast. TF support matrix has a lot of orthogonal di * Compiler (GCC, Clang, MSVC) * Python version (2, 3.4, 3.5, 3.6, 3.7) -More can be added to this list where we have to rebuild tensorflow to support different network architectures, CUDA versions, SIMD instruction sets, etc. +More can be added to this list where we have to rebuild TensorFlow to support different network architectures, CUDA versions, SIMD instruction sets, etc. -Having a monolithic repository means we need to rebuild all of our code for all of these different combinations. However, it makes no sense to rebuild all of our C++ code if the only difference is the python version. Or rebuild all of our CPU kernels for different CUDA versions. Modularizing our code means we only need to rebuild and test the modules that are directly impacted by the dimensions we are changing in the support matrix. +Having a monolithic repository means we need to rebuild all of our code for all of these different combinations. However, it makes no sense to rebuild all of our C++ code if the only difference is the Python version. Or rebuild all of our CPU kernels for different CUDA versions. Modularizing our code means we only need to rebuild and test the modules that are directly impacted by the dimensions we are changing in the support matrix. ## Overview -This project aims to split the TensorFlow codebase into **smaller, more focused**, repositories that can be released and managed separately. These modules will talk to each other using **well defined APIs** that guarantee backwards compatibility. Thanks to these APIs, these modules will be **managed/owned/released independently**. There will be different strategies to break apart pieces based on the languages, but below summarizes the approach for C++ and python: +This project aims to split the TensorFlow codebase into **smaller, more focused**, repositories that can be released and managed separately. These modules will talk to each other using **well defined APIs** that guarantee backwards compatibility. Thanks to these APIs, these modules will be **managed/owned/released independently**. There will be different strategies to break apart pieces based on the languages, but below summarizes the approach for C++ and Python: ![alt_text](20190305-modular-tensorflow/big_picture.png "Overview of modular TensorFlow") @@ -110,15 +81,13 @@ This section will briefly describe the terms we will use in the rest of this des **Shared objects:** These are dll/so/dylib files that can house **one or more** plugins for **one or more **modules. -**Packages: **Python pip packages which may include python files and/or shared objects. +**Packages: **Python pip packages which may include Python files and/or shared objects. ### C++ This project aims to implement similar plugin architectures for multiple components of TF code. While these will be listed separately, **there will be a lot of shared pieces between these components**. The modules we would like to handle are: - - 1. Networking module, with verbs, gdr plugins initially 1. Filesystems module, with GCP, AWS and HDFS support 1. Kernels module, @@ -133,15 +102,10 @@ Each of these aspects require unique special treatment in addition to the common This is a high level description of a single module and multiple plugins for this module: - - ![alt_text](20190305-modular-tensorflow/cpp_module.png "C++ module example") - The big pieces of this design are: - - 1. Modules: Well defined components within tensorflow that need multiple implementations, and select different code paths at runtime 1. Plugins: These will be implementations of each module. Each plug-in will implement an "interface" (i.e., the API defined as C functions rather than a pure virtual class in C++). These will be loaded dynamically at runtime, 1. TF framework/platform APIs: Shared functionality needed for implementing the plugins. Main purpose is to pass data/state between plugins and core. @@ -149,16 +113,16 @@ The big pieces of this design are: ### Python -Below diagram provides a summary of the proposed tensorflow pip package ecosystem. +Below diagram provides a summary of the proposed TensorFlow pip package ecosystem. ![alt_text](20190305-modular-tensorflow/py_modules.png "Python module example") -1. Tensorflow Base pip package: This provides the core tensorflow functionality all of TF will share. While estimator and keras provide high level neural network primitives, base will provide basic matrix operations these two packages will use to build the high level APIs. -1. Required tensorflow addons: These are pieces of tensorflow that has to be included in all TF distributions. Examples to this are Estimator, keras, tensorboard and base. These are pieces of the public API that are promised to exist by our compatibility guarantees. -1. TensorFlow Metapackage: This will be a thin package that only defines the composition of tensorflow. Please see the detailed design section for more details on this package. +1. TensorFlow Base pip package: This provides the core TensorFlow functionality all of TF will share. While estimator and keras provide high level neural network primitives, base will provide basic matrix operations these two packages will use to build the high level APIs. +1. Required TensorFlow addons: These are pieces of TensorFlow that has to be included in all TF distributions. Examples to this are Estimator, Keras, TensorBoard and base. These are pieces of the public API that are promised to exist by our compatibility guarantees. +1. TensorFlow Metapackage: This will be a thin package that only defines the composition of TensorFlow. Please see the detailed design section for more details on this package. 1. Optional TF packages: These packages will include the optional TF features users may choose to load and enable after they have TF working. Without these, TF will work just fine. Example features we will have as optional packages are GPU support, MKL support, or cloud filesystem support. These will use the C++ modules to load the functions they provide at runtime. @@ -166,12 +130,10 @@ Below diagram provides a summary of the proposed tensorflow pip package ecosyste We will describe each key design element here in detail. To make the points clearer, trivial examples will be created. - ### Modularity in C/C++ This section will describe the key design points for C++ modularity. - #### Modules Each module's main pieces will be a module interface in C, and a registry for plugins implementing this module. As a supporting piece, each module will also need to provide a mechanism for plugins to add themselves to the registry at runtime. Below is a toy example for the described design: @@ -316,7 +278,7 @@ Once this API is ready, header only C++ APIs can be defined using this API. ### Modularity in Python -This section will describe the key design points for modular python packages for TF. +This section will describe the key design points for modular Python packages for TF. ### TensorFlow base pip package @@ -333,7 +295,7 @@ If we discover a violation of this guarantee, that will be treated as a P1 bug, ### Required tensorflow addons -These packages are planned to contain high level TF functionality that can be safely split up from TF. Examples for these are tensorboard, estimator and keras. Together with the base TF package, these packages will contain the full python code of TF, except for top level API wiring. +These packages are planned to contain high level TF functionality that can be safely split up from TF. Examples for these are tensorboard, estimator and keras. Together with the base TF package, these packages will contain the full Python code of TF, except for top level API wiring. These packages have two constraints: @@ -353,7 +315,7 @@ This package will reconstruct the TF public API from the base and other requirem Just a simple setup.py file that defines dependencies on specific versions of all required packages and base package, plus an `__init__.py` file that defines the top level tensorflow API. -The python code for tensorflow metapackage will be a single `__init__.py` file that will look like this: +The Python code for tensorflow metapackage will be a single `__init__.py` file that will look like this: ``` @@ -414,7 +376,7 @@ These shared objects will be automatically loaded by TF core if: * **Why do we not use C++ APIs instead of C**: Compilers have no guarantees for ABIs generated for C++ code. Any C++ API used will require each shared object to be compiled with the same compiler, using the same version of the compiler, with the same compiler flags ([See github issue 23561](https://github.com/tensorflow/tensorflow/issues/23561)). * **Why do not we statically link everything**: Single shared object for everything: Anywhere except google does not have access to the massively parallel build system we use here at google. This causes prohibitive build times, causing major developer pain for open source developers. There are many more issues, but the summary is while this is a great solution for google, outside google this is simply infeasible. -* **TF will become a suite of multiple packages, built by multiple authorities. What if the bugs get blamed on TF team**: With the modular model, we expect testing of 3rd party code to become easier. This can also be mitigated if the error messages are better, and if they can clearly point out which module the issue stems from. Finally, we can create an apple-swift like testing model, where we run a jenkins setup that people can donate their machines to, and we can run continuous integration tests on their plugins. +* **TF will become a suite of multiple packages, built by multiple authorities. What if the bugs get blamed on TF team**: With the modular model, we expect testing of 3rd party code to become easier. This can also be mitigated if the error messages are better, and if they can clearly point out which module the issue stems from. Finally, we can create an apple-swift like testing model, where we run a Jenkins setup that people can donate their machines to, and we can run continuous integration tests on their plugins. * **Why not have APIs but still have a monolithic repository: **When everything is in a single repository, this enables developers to bypass the APIs, and depend on internals. Moreover, we cannot grant full control over different folders on our repository to our partners in a single repository. As long as they are in a single repository, they are still constrained by our build system and license. Finally, in a single repository we do not provide the option of closed source plugins for contributors. * **Why not go with the OSS federation solutions?** OSS federation requires all dependencies to be in the federation before adding a repository. This is simply not possible for tensorflow, as eigen, llvm and many other dependencies will never be a part of the federation. * **Documentation, how/where do we document everything?** With multiple repositories, structure of the documentation will need to be rethought, based on what is a part of "TensorFlow proper" and what is an optional feature. @@ -434,7 +396,7 @@ We propose the following principles to be followed for testing in a modular worl ![alt_text](20190305-modular-tensorflow/initial_tf_deps.png "Initial package structure") -In the current setup, we need to test all of the above packages for different python versions, operating systems, accelerators(CPU, GPU), compilers, and more variants combined. In the modularized world, each of these packages only need to be unit tested for the following: +In the current setup, we need to test all of the above packages for different Python versions, operating systems, accelerators (CPU, GPU), compilers, and more variants combined. In the modularized world, each of these packages only need to be unit tested for the following: * tensorflow-base: Operating systems, compiler versions and python versions only with CPU @@ -450,12 +412,12 @@ On top of the proposed unit testing plan above, we will need package level integ * Miscellaneous pip utility tests. Build the nightly pip packages, install them. Then make sure you can import TF, run the command line utilities distributed with TF. -* Tutorials/notebook tests. Build the "nightly" pip packages for all above components. Then install this package. Finally extract the python code from notebooks and run them as graphs +* Tutorials/notebook tests. Build the "nightly" pip packages for all above components. Then install this package. Finally extract the Python code from notebooks and run them as graphs * Models tests: Build and install the nightly pip packages, then run curated models under tensorflow/models for a small amount of steps. The above will simply check the sanity of TF, just will check if TF can run without crashing. However, TF requires much more testing. We propose expansion and adoption of the following regression tests to nightly TF test suites: -* Convergence tests: Run a curated set of small models until convergence. measure the time to converge, and steps to converge +* Convergence tests: Run a curated set of small models until convergence. Measure the time to converge, and steps to converge * Performance tests: Run a curated set of models for a pre-selected number of steps. Measure steps per second, and for image models images per second. From b42798f11d59dc9818bce4bd2cf6a276b4889518 Mon Sep 17 00:00:00 2001 From: Gunhan Gulsoy Date: Tue, 12 Mar 2019 20:57:28 -0700 Subject: [PATCH 004/365] Fix markdown typos. --- rfcs/20190305-modular-tensorflow.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rfcs/20190305-modular-tensorflow.md b/rfcs/20190305-modular-tensorflow.md index d78dd1fcf..2291d5b02 100644 --- a/rfcs/20190305-modular-tensorflow.md +++ b/rfcs/20190305-modular-tensorflow.md @@ -79,9 +79,9 @@ This section will briefly describe the terms we will use in the rest of this des **Plugins:** Plugins are extensions to different modules. For example, filesystem module can have a GCP plugin, an S3 plugin, an HDFS plugin. -**Shared objects:** These are dll/so/dylib files that can house **one or more** plugins for **one or more **modules. +**Shared objects:** These are dll/so/dylib files that can house **one or more** plugins for **one or more** modules. -**Packages: **Python pip packages which may include Python files and/or shared objects. +**Packages:** Python pip packages which may include Python files and/or shared objects. ### C++ From 223268841aadf14bef2161c5486b921fd3b29bb9 Mon Sep 17 00:00:00 2001 From: pkanwar23 <40809717+pkanwar23@users.noreply.github.com> Date: Tue, 23 Jul 2019 15:58:45 -0700 Subject: [PATCH 005/365] added link to agenda document. (#125) --- sigs/mlir/CHARTER.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sigs/mlir/CHARTER.md b/sigs/mlir/CHARTER.md index 7543d35fa..4e52d03c2 100644 --- a/sigs/mlir/CHARTER.md +++ b/sigs/mlir/CHARTER.md @@ -17,6 +17,7 @@ Anyone involved in or interested in high performance compilers and their applica * Mailing list: [mlir@tensorflow.org](https://groups.google.com/a/tensorflow.org/forum/#!forum/mlir) * GitHub repo: [tensorflow/mlir](https://github.com/tensorflow/mlir) +* [Agenda document](https://docs.google.com/document/d/1y_9f1AbfgcoVdJh4_aM6-BaSHvrHl8zuA5G4jv_94K8) containing the meeting notes and recordings. ## Collaboration From 9c9e40ba96f1490f2ced842619650683a8c1b5d8 Mon Sep 17 00:00:00 2001 From: Kevin Haas <30759715+krazyhaas@users.noreply.github.com> Date: Fri, 2 Aug 2019 11:36:58 -0700 Subject: [PATCH 006/365] Add files via upload Adding the original TFX OSS design docs. --- rfcs/20190630-tfx-on-kfp.md | 239 ++++++++ .../tfx-kfp-argo-workflow.png | Bin 0 -> 34345 bytes .../tfx-kfp-containers.png | Bin 0 -> 174056 bytes rfcs/20190630-tfx-on-kfp/tfx-kfp-ui.png | Bin 0 -> 252982 bytes rfcs/20190630-tfx-on-kfp/tfx-on-kubeflow.png | Bin 0 -> 43329 bytes .../tfx-oss-xcom-passing.png | Bin 0 -> 55791 bytes rfcs/20190718-tfx-orchestration.md | 559 ++++++++++++++++++ .../tfx-oss-architecture.gif | Bin 0 -> 36121 bytes .../tfx-oss-component.gif | Bin 0 -> 24139 bytes .../tfx-oss-dag.png | Bin 0 -> 98238 bytes 10 files changed, 798 insertions(+) create mode 100644 rfcs/20190630-tfx-on-kfp.md create mode 100644 rfcs/20190630-tfx-on-kfp/tfx-kfp-argo-workflow.png create mode 100644 rfcs/20190630-tfx-on-kfp/tfx-kfp-containers.png create mode 100644 rfcs/20190630-tfx-on-kfp/tfx-kfp-ui.png create mode 100644 rfcs/20190630-tfx-on-kfp/tfx-on-kubeflow.png create mode 100644 rfcs/20190630-tfx-on-kfp/tfx-oss-xcom-passing.png create mode 100644 rfcs/20190718-tfx-orchestration.md create mode 100644 rfcs/20190718-tfx-orchestration/tfx-oss-architecture.gif create mode 100644 rfcs/20190718-tfx-orchestration/tfx-oss-component.gif create mode 100644 rfcs/20190718-tfx-orchestration/tfx-oss-dag.png diff --git a/rfcs/20190630-tfx-on-kfp.md b/rfcs/20190630-tfx-on-kfp.md new file mode 100644 index 000000000..6dc4bb75a --- /dev/null +++ b/rfcs/20190630-tfx-on-kfp.md @@ -0,0 +1,239 @@ +# Kubeflow Pipelines & TFX + +Status | Implemented +:------------ | :-------------------------------------------- +**Author(s)** | Ajay Gopinathan (ajaygopinathan@google.com) +**Sponsor** | Konstantinos Katsiapis (katsiapis@google.com) +**Created** | 2019-06-30 + +## Objective + +This RFC documents the design and engineering effort proposed by the +[Kubeflow Pipelines](https://github.com/kubeflow/pipelines) team to support +[TFX](https://www.tensorflow.org/tfx) with Kubeflow Pipelines (KFP). + +TFX is an open-source effort by the TensorFlow team aimed at providing users +with tools for building production grade machine-learning (ML) workflows. TFX +provides an ML pipeline authoring framework in Python which encodes +Google’s best practices for ML pipelines, including: + +* scalable and battle-tested components +* ML-focused pipeline design patterns +* strongly typed artifacts +* artifact provenance tracking through [ML Metadata](https://github.com/google/ml-metadata) + +An important value-proposition of the TFX framework is that it is agnostic to +the orchestration framework. At launch, TFX supported two orchestration engines +natively: + +* [Apache Airflow](https://airflow.apache.org/) for running locally +* [Kubeflow Pipelines](https://www.kubeflow.org/docs/pipelines/) + for running in the cloud + +This document describes how TFX pipelines are run using +Kubeflow Pipelines as its orchestration engine. It can be viewed as an extension +of the main +[TFX orchestration and configuration](https://github.com/tensorflow/community/tree/master/rfcs/20190718-tfx-orchestration.md) +design document. + +## Motivation + +### TFX on Kubeflow Requirements + +The main focus areas for running TFX on Kubeflow were: + +* **Portability:** The user-facing code in a TFX pipeline should be portable. + An early stated goal of our work was that we wanted the same pipeline to be + runnable on both Airflow and KFP with a _single-line change_ in the + pipeline construction code. +* **Scalability:** TFX on KFP should solve the use-case of large-scale + workloads, thereby showcasing the advantages of running on Google Cloud + Platform (GCP). This meant enabling the use of strongly differentiating GCP + services such as BigQuery, DataFlow and Cloud ML Engine for training and + serving in the pipeline code. + +At launch, both of these requirements were achieved. Using KFP required a +single-line change in the pipeline code, and the sample pipeline for KFP +showcased the use of GCP services for running workloads at scale. + +### Overview of TFX pipelines + +A TFX pipeline is a **logical pipeline** consisting of a series of components. +Each component is defined in terms of inputs, outputs, and execution properties. +Inputs and outputs are represented as channels of ML Metadata Artifacts. +Logically, each component consists of three parts: + +* `Driver`: Responsible for resolving input artifacts from the ML Metadata + store. Determines if the execution has been previously cached and if so, + whether the call to the `Executor` can be skipped. +* `Executor`: Executes the main logic of the component, and provides a uniform + interface around TFX libraries, as well as custom logic. +* `Publisher`: Records output artifacts produced by the `Executor`, and passes + these output artifact metadata to downstream steps. + +When running a pipeline under Airflow, the logical pipeline is converted to a +series of _Airflow operators_. Each component comprises 3 operators representing +the `Driver`, `Executor` and `Publisher`: + +![TFX message passing with Apache Airflow's XCom](20190630-tfx-on-kfp/tfx-oss-xcom-passing.png) + +At runtime, each `Driver` is responsible for resolving the metadata of input +artifacts for a given component from MLMD, and for determining if any previously +cached result of the component run can be used instead. If no cached result was +found, the `Driver` invokes the `Executor` which performs the main application +logic of the component. Upon completion, the `Publisher` writes the output +metadata to MLMD. In the case of Airflow, the `Publisher` operator also +publishes the same metadata for consumption by downstream components using +Apache Airflow’s +(XCom)[https://airflow.apache.org/concepts.html?highlight=xcom#xcoms] mechanism. + +## Design proposal + +### Kubeflow Pipelines Orchestration + +KFP uses [Argo](https://argoproj.github.io/argo/) as its orchestration engine. +Argo is a Kubernetes-specific engine for orchestrating the execution of +workflows where each individual workflow step is the execution of a +containerized application. Argo employs a YAML-based specification to construct +the workflow graph, which also specifies how each container’s application should +be invoked. + +Passing data from upstream components to downstream ones is accomplished via +[Argo output parameters](https://argoproj.github.io/docs/argo/examples/readme.html#output-parameters). +The output results of a component are written to named, container-local files +after every iteration. The contents of this file can then be passed as input +parameters to subsequent steps. In particular, the contents are passed as raw +strings which can be used as command-line arguments when invoking the downstream +step using a templating mechanism in the Argo specification. + +In order to run a TFX pipeline on KFP, the user specifies `KubeflowRunner` +instead of `AirflowDAGRunner` in the pipeline definition file. The logical +pipeline definition itself remains unchanged, thus ensuring portability of +pipelines across orchestration engines. + +In contrast to Apache Airflow, using `KubeflowRunner` and running the pipeline +file does not actually launch the pipeline. Instead, the logical pipeline is +**compiled**, resulting in a pipeline definition file in YAML, which contains +the Argo specification for a workflow that can be run on Kubernetes. The user +must then manually upload this pipeline definition file to a cluster running +Kubeflow Pipelines before it can be run. + +![TFX on Kubeflow](20190630-tfx-on-kfp/tfx-on-kubeflow.png) + +In the Kubeflow cluster, users use an interactive UI to select and launch their +pipeline. The KFP APIServer will then submit the uploaded pipeline definition to +the **Argo controller** to orchestrate the actual workflow. The Argo +specification specifies which container to execute and which command line +invocation to use during each step. + +KFP provides a [Python SDK](https://www.kubeflow.org/docs/pipelines/sdk/) for +constructing ML workflows on top of Argo. The main abstraction used is the +[ContainerOp](https://www.kubeflow.org/docs/pipelines/sdk/build-component/) +class, which can be viewed as a Python representation of a containerized +workflow step in Argo. During compilation, each TFX component in the pipeline is +transformed into a `ContainerOp`. There are three key elements of `ContainerOp` +which are used when constructing the individual steps in TFX pipelines: + +* **Image:** All TFX components are executed using the same pre-built + [Docker image](https://hub.docker.com/r/tensorflow/tfx) which contains the + TFX library and its dependencies. +* **Command-line arguments:** The command-line arguments specify how the image + should be invoked. In particular, they specify the exact TFX component and + executor that needs to run for a given step. Metadata representing input + artifacts are passed as arguments to a container step using Argo’s built-in + templating mechanism. +* **File outputs:** Argo can use the contents of container-local files + produced within each step as input data to be passed to downstream steps. + When the TFX container successfully completes the execution of an + `Executor`, it writes the ML Metadata representation (that is, Artifact and + ArtifactType protos) of output artifacts into named local files, which will + be passed along to downstream components by Argo. This can be viewed as the + **_publish_** step equivalent of using Airflow’s XCom mechanism. + +Consider the snippet of a TFX pipeline consisting of components `Transform`, +`SchemaGen` and `Trainer`. `Transform` produces transformed examples as well as +the transform graph itself, which are consumed by the `Trainer` component. +`Trainer` also consumes the schema produced by `SchemaGen` component. + +![TFX with Kubeflow containers](20190630-tfx-on-kfp/tfx-kfp-containers.png) + +In KFP, each component is now represented as the execution of the TFX container +image. Individual components have customized command-line invocations, which are +based on their input arguments and which TFX executor to execute. +The execution of each step is controlled by instances of the +[`ExecutorRunner`](https://github.com/tensorflow/tfx/blob/master/tfx/orchestration/kubeflow/executor_wrappers.py) +base class. This class is responsible for constructing the arguments required by +all TFX executors, namely: + +* `input_dict`: A dictionary of input artifacts. These are constructed at + runtime using the values of the Argo output-parameters that were passed in + as inputs. +* `output_dict`: A dictionary of output artifacts. These are pre-determined + for each derived class of `ExecutorRunner` and specialized per-component. +* `exec_properties`: A dictionary of runtime parameters, whose values may + either be primitive Python types, or serialized JSON representation of + protocol buffers. + +The arguments are constructed and used to call into the specified TFX `Executor` +(for example, `tfx.components.trainer.executor.Executor`). If execution is +successful, `ExecutorRunner` writes each output artifact (as specified in +`output_dict`) and their schema types in JSON-serialized format into a container +local file. The contents of this file are then passed as ML Metadata artifacts +for consumption by downstream steps. The KFP UI visualizes both input and output +parameters for each step. + +![TFX artifacts with the Kubeflow UI](20190630-tfx-on-kfp/tfx-kfp-ui.png) + +### ML Metadata Tracking + +In contrast to Airflow, TFX on KFP does not have drivers and publishers. +Instead, metadata is recorded passively in KFP’s APIServer, by parsing the +status of the Argo workflow custom resource definition (CRD) periodically. Each +Argo workflow CRD status contains recorded values of Argo output parameters +(that is, the contents of the named local files) upon successful completion of +the workflow step. KFP employs a custom Kubernetes controller called +PersistenceAgent, which periodically polls for the latest status of all Argo +workflow resources, and updates the state in the APIServer. + +![TFX with Kubeflow Pipelines and Argo](20190630-tfx-on-kfp/tfx-kfp-argo-workflow.png) + +The APIServer parses Argo workflows and looks for Argo output parameters that +look like serialized MLMD artifacts in specially named files (by convention, the +files are named `/output/ml_metadata/{output_name}`). These artifacts and their +types are then recorded into an MLMD instance powered by the same MySQL server +that backs KFP’s persistent data. + +## Future Work + +While TFX on KFP works, it still does not have feature parity with the Apache +Airflow version. We are exploring the following directions concurrently to close +the gap between the two orchestrators: + +* **Metadata-driven orchestration**: The current version of TFX on KFP records + artifacts in MLMD, but does so passively. This is due to the lack of drivers + and publishers in the initial implementation. Hence, lineage tracking and + caching is not currently possible. +* **Enabling arbitrary user containers with MLMD artifacts as the interface + between pipeline steps:** Currently, incorporating a custom step in a TFX + OSS pipeline requires users to implement a custom executor. Users in Cloud + frequently have an existing application, written in a non-Python language + (such as R, Java, etc), which they would like to plug into their TFX-based + pipeline. +* **Unified pipeline authoring experience:** TFX and KFP both present users + with a Python-based DSL for constructing their pipelines. The DSL constructs + look very similar from the user’s point of view, but are fundamentally very + different underneath. This has led to customer confusion. Unifying the DSL, + and presenting a single user-facing experience for constructing ML pipelines + is a goal that we’re actively exploring. +* **Pipeline-level runtime parameters:** KFP provides the possibility of + specifying pipeline-level parameters so users can run the same pipeline with + different combinations of control parameters. Since the pipeline definition + is a YAML-based file equipped with a templating mechanism, all pipeline + runtime parameters are restricted to string types. This presents a challenge + for specifying pipeline parameters at runtime that are not simple strings + (for example, the number of training steps in `Trainer` is specified in a + protocol buffer which must be serialized at runtime to be consumed by the + component). Contrast this to the Airflow scenario, where arbitrary code can + execute to yield runtime parameters since the pipeline definition and + runtime environment exist in the same execution scope. + diff --git a/rfcs/20190630-tfx-on-kfp/tfx-kfp-argo-workflow.png b/rfcs/20190630-tfx-on-kfp/tfx-kfp-argo-workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..7e258c68ff719a072d25c3d6bd9b1d794864d08c GIT binary patch literal 34345 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 Zj7wYZq=oN0Leuf^l<%m?7s;9h{tv2|!>|AV literal 0 HcmV?d00001 diff --git a/rfcs/20190630-tfx-on-kfp/tfx-kfp-ui.png b/rfcs/20190630-tfx-on-kfp/tfx-kfp-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..5cf13fd197d7a21fbf71a5e580ed8834d7c08132 GIT binary patch literal 252982 zcmeFZg;$h&^f$_}7!?o{0qGK?yGug4q#J3ZyF&#@0RaI40RhP&M7l);L`tN)yJP5h zH|N~nx_`mD?tRyKXPx622WIAZzR!2>{i)}KDl1B1-XXk$hK7bIBQ2qVhIV}y{-r=% zgI9j$lWf9&t~-m#s38!Du^FXl`0FE=XId_*_U10`MowmE7IyZwW=zf|PG)9y&X)Er zTh|+f(a^}zWF$n@JU*>YxO?CZT!?IQl-67DnDyOViMVlpg_uCH&J?7qt6UXOleus-el)K_DPR1! z3r}nora3=J%MlydqMJ<2hjMKCdafVg6ffow6q$)1+;!-ax-j)McyRD$S`aQ-dmo3J zZ3gDD%hh`)`qnlU=kZxtZ^1&Or+6RWCw!m`l*I5iZqFF zAtiQf6xeUG($p3iFUCc@ToQ5cnT|_lntzQ9VlG4#Iug^@j^$#`OYPAA5WCoo*ZM9= zbGLf6ioUYbk~2o_AAXXX$83$4!M~nuj}3)zf3b3U1($yg%w7-y?*$oT)IbU($wwgEG zWVHV)+C(a9cFz-$eh?Ws8>501yf=I1*=%gGnaRdfc=fBle-j;+Y^J?x31h}vRx*EC zeu+P5`#ULgQIV1+aE0avm*m>4{_oCf0k5KZd}B^`!ZU8hdR}b0Xh*C>Y}D%$uG!ly zOH^#S1jT>F8vniJIvaD~5;VAbsekY4AitY*V|lHWvKWdY6o^Hb+4#x}^cI)a0dam#>v?+Rqlb?y2`hD}_3jz&>gry~X ziokKbEE}x0j*jaTUwSQfiyjX0aP#u+jyn_N?av2omuNmD!yZ$E-sRIwhIhw)Q;}#C(7;^$ljqS$Pr6qf_x7Br&taNq@WgK)Ft#+wyx$yzrOoiOgn8oRc=Yd#KQeNA$RNNR3XfTF17f z&}K=)yqC77rn|JmpRcsWDt#;lEKJE{XbVxwe#2t3dN0 zs$*?sL!slB*I|nP$-P~1M2evA!TPa8K4yY*5tcvY;y{97*?_VE1w--s^V5yT#^}9K zB3q2iba5dqny#aJp>%SW$L7)w)0zBw*Rk=+W|Y&U1Gn5hw-a?C(hCI7Gc1nm6{j^S z?h{4rdshFkce}4~jUsSXl{2jeUm?nLkUj)6_;fL1_NPZL&JU~6E+Q;c1i^1CmvnpK z{0ys$B-Wzo#)k|s|2unnqoiop9F?=%>a@S1mAK0jaLB?!{HadZ}1 zSB`!%>x{Z9>7WrQ@~?6yhk`c zzlhIU_&N3c`qOTaW1q=vCJ~LHUjqF6_-DRF#ZiYB0l_ry$apLcZ9Ee1sSo z=bH~N3fI>;uEJ7}C9 z{C=manAaduNH|MXttu2Lc($I?O}4&LxK_5VPw)7!cNilOS{ZxR@T-~St!6&8_9VBv zVoye+*rsb*j-D>+1mfD7?{)_mpXphKrt$S0RdjqQPd)Ds?Ks-vEtw_k3wk!ItT`%h zdXi7nX_(q~c9gNKh{8Cup!VHlpG#JZjTAf_x$NJodTG5ie9>W-*;{71V{Jr1v4UUP z{Ymb~Z?B?w(C6>KMC|*Il=tt5_*_m!M#iMMZ_?2>bQ`ndh)qlgmG9OVm9W{@AA9+V zoA`=nRwgWEPCmS9&VuYwt_54`>sEGl3l77!Bqa3Zqdh&9mGdXjCbXBRo|X!BmU>=) zX%}47$1Y>GM{use&3K5T>sBVEBg9zv6hBQ_bF(;;xSl-O{t{uh5t#cstSm4y8K)rjN@EW&vnYAe=Ak;t8$ z@ak)MXlW0cg}t?N*ka5(ic7qtS)Df+g~gW1nn&KMw=%G2?si|Fa>U@-G*Gh4THa1$)jC{9wBjQ&79*p=- zJb4Ur%D{@oO;%f5O~<(Cuj4ysuVmUjU2OGj{Aw9~*JftgU&t>|i*akNsw7hi!}}Tq zr*rH6YLbqpzORMmVOO?!>4>1wnHCR^CPwq5!8gl=wlvk06R~vV^=XItg0r?X_mkrj z43hf_6Kl7x7TRAS%H&pgp0(w=Iz7s(x#9Yb$i}d`niC0yngPYy>Sp$xKbD-Dc^&8K ziZS!YcV%i1Nq@0Cv9huG-Puin_+eEZL#?ej^a^`-=OA15&dqD|eV6X~`_@VGPP}P; zWt3jq)2lki)qy|Dr+hTk^ql-Rj_1C5c$Cpzr}&v+f!$4+x?v$(>}SI2n-kyL^E{6aD@?oqrnvDLeh50kqLj+<%? zi_d+IYvpXiB_oJ~ps7_!tE;G}=xFJQVc!r7Q3P07Q&WQ@*8g{LF`lod>%?s$DeKZF zmb%^0Z6i~5^ewX7JZmxx`){JMc42h;51&t#F8o0=xg~9~TG1`Co9%x`ewz^dV3olB z(kmZBO(_G2ROFLpY4y>Vl9NqKHkP@wmX=kCQQPDCP;wkG4TeNY4ibf-KP$^9N4>!J zAA>0Znbj`|m%@p<&WR-T_m=-&^mtcss9Jo3#vabKn93Yp`eE~D^J5=kiVp@a#SnS> zUkctHO?j~fDo1UWMAq8b6=B?}7jp}+$}%Xnx2$V7E+Hmq5q|j;`!%O~Z?}8W!Q?!%9AaATxs+oAQeT{h+Hg-p<)S!upYCZ&`q}e^ENZ z(w)|3e9k`--8MJC!-`qTQ69 zB?0G#>W6^Hu{1Z9X5#R8T7X4S#0`uUjTH*vE<>*F-7Eru-3 ze1+o6aXFLe(5-X+@k`_MiwI$4GC>bL`=6JV7naOH=_UWXbH;zZYL+5uUq512J#ryZ zGTD)6kjYkGAucnkwR`IRiF=zhn!4KJvZ+d3DldnELKGHu38)9MuEczU=OW-tw&Qng zjdw;SWlGAYBf*Bs1dF!?y8-HHw{M&cYTS&RpagNYDp(Oo!olr}y6lr&0;>HeLY_AJ`-Gn*P(T0V3F!A+kV&t}iQ zqxlEES6gMDTX~5{*YP9?P>doauAbg<#`J1VbiR#W`tADlvnjp()$9DX?lp%f$4i9J zE-a5elu&zOeJ&RLJ_4P$&mgU}?d7u9+meQnGn5?Gxu)mgBfrmN;(gZ7%O1d1&$>m3 zsZh5-!*QAP{d|)vSTum(R$=*cjc8UGzsw5K5Z9Ma>S>MT{$2aI}GFUQX7mLI)7%ckSfjOzWGkh6=AVL=s0bAv4hV~#xV+g(g^ z4nDhO7@S)#1+mDsEU7SB+j5C?kpn3DxPE`ai1@ZS01l0kQG~ty<1v10a)rI!9$u?4 zEyWxJ80pGiZB|5b6cZ(y9g!_3iy1?Lg5x+ry_RJ#M<39>TU%Wf_SyFkHFC7+{F9R- zggP46`*)t+d*tSy`M_;`xWr>;c8d8hWZ8uuFWi-d1JPyftST3tsl|wU2VH_PhB{8x z%-%jNC+GB43Cf(qs06!zUpw%CcqD2M@zyFYR0V&AKcA2ZlwIjpShGcqua|#Bu>V>(K<%#&oF=l} zDsXVE`RiD=5q{J6&r|jf=YKQ~eORaXAtcc`#{7d#VxsIqk@_;ZMJBLHo^dq5(ORe> zrgp#tKarF|BBxJCX#BMC?_}@J#G&px$>v`;%|hej?ChmpalZbSW5l|f_@RN6(c8~C z@vh1zDnZ1e0KG9(viYOUryYW+gAx($>n7i}R%XAay+f*<^nVCVOdP@IU@;>ROiFY+B+e{$t{fd9Wk2`bU>VK1_pq}&mJ87qzsxBwJ z0-Cnb#{Sui8hN9#%SFMgF~6IeZ0z4jyL*BcIWM?s{_iIhhmeP$>&~3FoisEwpbuj? zOvMWx=jy&_llS$_mYVqY*v}pcZ8PtlMxj*l_W!B4e)T>e29b-4i|D!(?+VfXec}72 zXui3(YM0RbE_LDDFlyA)qk@-S{) z4`{*;Zy}73%u~C6<25!r0R{;P34%gON{TST&04NXk2#=ed1FJJK8_emiV+Ve>xC^h z0S0}XY@voOBc5;?OSJT`4R^V8W-l~&;6#pP>BpRc>m)F$;=At60KZK=@{JbmiwVMnpt(_5O0<@H#gVTsAN>0;L1|p z#|wXp4Uo>)*Y{SyYcKhY;_&dh2Xe)pOvMh$7c1?ypyM+V~Ju; zX5Y%>WFiK|LraT`R^>Vv&3bxzlRkT0U%#>jz8|nUKbnie z5p!PbOceIzSKrH1&0#idAjZc2YTOdm-`^h?cq2tI7@MAjCFf4DVWR;f-l2WxV4-eu zax$$_>UeLjX!(scM|}K*%1JKkS$` z_ZCM-bs{7KuxA~3)6>&C;+ag?6V=t#Mb5UbmpAg*jekBkOfd8lMI_2+*Lxr0;o|11 z(F3<^LSSH=Z8zV`Rq@91l-rp>8Ft>Y58bVFV2} zA_FSI|J?Ofz)rBA;JV?3p)Vd{lGw+WM+9~rTuu-bLIq96zqX~s&S3drWeY{0ktwSRsz`Ut4rB^ zD{47@mv;7H8c22IfJIMgS6A191FuRRZre^pMTJ5#_e7m%Ed2v~d`(^5j-@>l6O({| z05%L{Vc|rDZL$XP8RAidWVz17=xB}olyKntdVLs`ZLg@^ZC8vA=0C z!WNl_jbzEGGkAnOG0OR8Yo>iY`vpipNGr zp-b5YSTW+sNl5(sn}d&3t=o zPl|x1hK3~O=SJ@ZwQ^pd{;(g?dK%@706V&G>RG+_GBut5$Yuf;HY_|mLXs-H1ug)f z6xb+*g@v%TPzYV-P&crpQHykY=*y zVWOkEeed4V-m#i}y{*4YOlMaY=;hGOEIDatX;q1`ifGl;)lpHXxz>oi?d`Ane+Yzq zJlxzWWK*nsc6N3m($(EPS#GU)$tH$tg;(75Su`LQT_x{>*Yx_jywD5wMCdOz+?kij z#^Kn1S6qUzNC=f_xxOxGToqY3D**l9?rO zkKU`=o}|%_YbYovTw>DU-dS}`SI*TyDy0eAmS{;v5OR6$nj!~ubalOV=i7Dnye=nt zS6ph{x40AKXJ%&LGMTd{LWkSg+3Byk6exU_Uc`#QO9Pr?O|a6_r{C*5_ih!izaag( zv45-0an+@zqr)1?>-yk*#EtVbtf~&o*mk{drtM`f`%Kxjq5Z=pR#51QXVTRu)Oq_~ ztDb8T-qcl!;08_3xFlCCzo39I@O@=vSj)YbMzC5WK)vz;twU zH21uPm64MZmjVVdkR&Q-O;l9PKYslF{rlwP#70xv4rUYXofbGUZN|axU4NEHVm=ieo!<*i)>c;h{QS!)D5|Tg`y)u8 z`^(6*zZ&m+!3qr)rl1=AKoXa=bc|k&OI~vFm@Q8k%$@OZJ-l#rRn@+c5fH8bJp^Fy zqEIc4<5uOVe9n?tDy}Xr)YQ~xi~ln?uYB8JsRrjT%4Rf zm*^m}=xPXzftS%CgYI^3`x;ZuyZoreq>g3!}jT3Xl> zZT1$s*x1+@@sM!bb#=sTj?h9(f4v{GLn4vZ;B?`IKVwd4Yi*t7Rh+oqHZd{5t@E#P zizeuFfU`zLMdj`79UdN@mxFQ3WUxRxQ!*kWRWVJtzMw!pvsbUy4Ue%)VvRQh}ZH{M(j)E|%(v@-X@J6{gExJDq4{HU!udO}(K&PsrstO+nkC&WD#l^+F zmUXVY3jWY7{Vz|aV9aQ!UOfWls$hRfQxmcp9=PL#x5y(_g^T3A?Iwim;B76b>Q zqg>{HMdLH;!Su((#Ox=394)=yEwELfTUk_H%|}HQK;LRyLZg&Q{P3Y`j;&1A-lfw;o5Lk0fWsQynck4+mN7+3pPipG;mN71 z$7vw5QdP`8$eJlAU`9yZ#l$o#9WnITd1hv2W@)($bIXifTVJ0fp#zQt^X}c!2wqy5 z-Nmltg@pxMTic6^3)tx9rPbx-aXm|_R7y`$Qc|3%^)h>T`S{)j1s!bJ(8xHoggxZ3 zpL`b*q6M=O3Q=D_67d=n5LE-nriP=Q9(!Qrd&6B{cl zD{E_U1m+|5FPBd}-;mSO)92^scbYpx{ZBUqEI3sg6d&&HI=Q-TEH7Ky*hnCrNlB?v zS-9})KYMml>AR)?*m4Kds;r1KEy?d1tNu{;5wcoydYiO7>E~%=nhJ#eOq>opy zx3`D$(bP;(qX(?PIzXMJ0zKm~ocFDO*jQBwi9p+YJ3~W5S68lb>+?%n{TS-xq$Fr8 zy1GQkT?Z%>CIaE$;!?N4_+PHXf#uHKtH&1A^Qm_62vj4!OpIE=Jp@9l)@_5VhJt<& z9UZ+`yL2&X4Ex_+gtmMy1jQQpU$vsuqL=(j`_a&9537_CQ+VuCbqX6!MKDjF*6sh5 z<4@V7u=($cUZI1YjH;+D6bZz9CLtjhi1}Ze-j;eL%KP6Z|NkM&^1mZZbNW6e#_42# zWqsWSIS_V5u|`HlqH3N;ab>9_CMU~b|ID;Qpj~fY*!}V2ht$L!vygMy3+4%%!HXfIfR!+_GUxV*ePGt>L$&vp|!SyfHVt(!N^ z%+13jGCDiufsz8`_eOFh%0m~}+1mr=g-8zy3i|K?H&Gssl=K39{pa=A#Ke`^S*Ml1 zk6Bn)uDIxH=;!6uLom#5qN7`wntFJ9=YVK*?$F{rxK_C+a;0V^oNz{13QhS0C`h;DiTjgpC+d|I^P z)c+wK9wA0hSlAtmW(msP!kd8M>gwy^@N>7MfruCz&jLWZ8fRqja5Z3XYKxSYm&4%E z*492gK86WfQ=F@TkCVN(%++?g{Qa*5@MG^(e1;zo83TtbLDEcQR&NnKjV5-3>oflQW_*)+>m&;R|%zJ8Q zXQ!t(zLmeX$$og&k3(Ut8gGyc-!ADKMaCV2~Oey%WrJrU}PH zN0$erH$5Ge)@UGK-KqLa(LZW*Y|Q_70e`im*HRGZeqmZ#SXda~$2V`@0FKbL{%q_E z!%0j`OjC0xU?O1(SyOWYR0BYwm)FYQEI3$iL;Wn3$22r?`$2Gs!=Mr>@~__)v5wSMx42jYprNOyCrkrX)dynBy9*sq*)T9*@DCN~i(DL0 zq2f9L?_G8LcGGXourUSP-qm!5Tw&by_V#|0*!KNCxVG>I6BAQ+cQ?=n-AcQOMt>34 zv%Dw;AVPqSwi*J^l$WDw{+agIg1kc+22D7sotA9E{jn!}O>KOmQS%AHqZi ztLf>TMfso2HH@8kKZLzx)OBE8Vi(A!v84RR%Lg@MeYUUNoKw*zwz2?=qZ^bA(axmuh47mYv%6;t>J zj7#cve>3bY_1uG*TnPN*kEVg=O^PpS^dOgbEc}k6P4oHYp8~QL9UYx`Fcv@oqOaAN zQc>JoT)r2_O9lo8{lizD?Bt{YK@Qqxk2pzS=D%+)TMTDWN)aqn$%CQ=9Y7RYTRVZ< z=IjDlJUGzbFH3Elr)I@UFgthe?#&+!!UOqH!oqIrfok-q9aIZzr*R22ZH~`5if7D! zvUj{+(DFSQD!kNY#M>2xT6p*nh^eSoYs>rh(=jn?X?`ao_s0A<6Xm0$ad;yu%ggPD zs~o$MSnjowtS&DjZr{#kM#U#2`0s7FuQgmq($x0$PF~DKiJTrELqjBpXmwtCaMc$& zSZYT{asT<}A3f&EtgMCRdzyIzs|5ve44S?!n?7$E8yjm+Hy#AF7`Jyf)EPCm+BckU zN~*_YN-)OBvSEx>IrcSGRavBZ5>oV!jny6?U2h)0rGl*C<@r5&(>VT=in21j!a-2i z{Li~8S5_WDzlM)?5~g@9nR$E)SG&x4soQ?EjE|D?2S`UbeYV5fzFuCf50rj_V8+G3 zp_)1H+cZvHeE@K4UDP4|t2SjFozY*>RL4HTS9GGHveJF{s}Z#fh@z{zzLu6xBIf`o zpB`?B_@1~x0|T1qA!r~j-n=u{2I}r)z4z@mfS=?Q742+ofoL!89p4X~2Z#j&1GW-S zCn#=cOZ+L_a7I;CN8evxZ;K>B78M=r?9A*P69lcGPM{@MRaL?SK4ZdOq>RLLZozU`ps1v2oMU(SgQLS;?c$C?Fs}OB>u`Od{Y0VE_E| z(6GwkHT_fluC3Koe&|^<&B1cAve1`NL>YZ6*REYdyaByV?Fp`c`{w>3oS6sEaUz1C z=SI>weK&93gkqbXo`#vXzwc76Q}4bt2}jnq;zCA77N~4tv2<~M3Q~o$v-4ZAbTxXe z_*QDK42qQ$6e2)u`28E?B#!oSeVw07THl(j|0& zj$*+|0OcQ>n#zogsM5QdFsVY`goK1*;^H7`N@nu8uJ*%%vFKHO?zPM%)1uE)O5(gt zApy}qP969r7;~$utFv=+QKUj%s8v7&tLy8Z($f5aiXR*toSb;2C@#&+M1TB9fQ|kB z!v|;x>7d1a{|A4tM1Man8CeweXr+Cc1`>e3w6ru#dl(8h z<`xWHK~kmSp`0&Yh=qN41q5m@iG1PIU_SzJ(Js`054zI7F|n{(9R(Q~*FjeS=m1Jn zMGEW$kY!=t!~VS?`e$W-din)(0@3~ZDu#xQ-iMp9v`T&}tA-?t>oUfz z03?zjp#!zEV^lhFwUhVvzxc^Nsn~*(l79aDxtyGwjSXXR*CH4M4a1Xp@cB_hJl*Z> zpY!F4+J+!kH|j-6RtH*m3j80 z*3Y$x&_zpQ5r^#U?*n%ea@_6TT_AIFDZ59=xvX-qP`cDDg%#=I<`xzu;sfk_H|);q zSB9Q*l5PhJH}4vN5=F#qcXBYc^(o~O2pEc=1mjZu97oIY^qAd`(HZXC4F{5TB|o&I z0t0`3na3qf8yfcD;5mfU)VtW&y|GIj9St2}=T?kzN#E7}6^K8-R86C&tG;N>-~r7u zOCJVqA}FrT?Yp{VPS-Ij&s?a1#+52^Zfj>cH_CSG793< zglxth#wsdj>CHXD0%HT}`F$%D7he^ai<3{!K7HsfBjU-Ir+JXj@epwoOQZ1rH1$g@ z08MlA^SFeBvYEZWk39uR2NeEHPWr9(=PjlA`~3{T>37(;{eXs(o4d8G4K^T%qBqdd z<*4r$Y9RYoK${UiZ=V8H?cF1ee~mEc@_Juiyao|M0||D)9+6m3v*B9mD*W z&0=R_vhDoHrZ%*7urUU(VsvQ89U32i22d_RxW|3?5C~Kx0UKll0DS=w@A=5q47dvB z3GE9MA_#qjX(h0y1`ygX3S)H?5AVP#|CisgR(Oin@3G%|9$ zl9P4-7cVL*Dl`=82Miu@keb0+Ncr>$`Xfl1)VO!;vG=&dyfJG)(os z@Jv_snEw76WPE4dPcUtGxVam^MFPzCKmT=%b^f5DCgc4R7$8pix5) z*4_Kj+zhkJ!-F@r-NnHHXd*APTkwlOc`nDt3x6yud@uGSqKx@_i`a)DqO%1vwXon#SoFLZc(TwFkPf`{YIAT2`mLJdboL~M|)x$;lIRDUZr1A01G zXh3R&9cLw?rOW&;FMj=!2Epl807Y!Of#0#&syrhbTS;}bCwvn?=|;ynNe}^-dov+u z>*M1CG|pZ?EXm9Lr?I1i#ErBbxRXP`_k>dv8&C@7ojd$)>sr><)^O-xKtxkXaT0dH zrUJL~^yK7XFYQwPBdgKu&rqmyAOoO>L4#T9PLWeoJUBc|6Y}Ox?g9XrhK@-%KRX)( zqXtCWrBrV_SQ@~|zz$(l*uH$p=du05&~OT_t+<#N%pWkv=;HtufIK|2;{hW(G$aJv zVOY~4OHO$G_U+ri*nnSzhlG6Yu7dMi`26`ZH1D9dZ$UBx1N8ONr(KG$+UecuHUdaB zdLTg19l_I+pnMK`52!xU(jkgDr=VB1zIz0Cz6We4;7m{z$|n0@GKqNYTLO>(IiOJE z>bGFy0+WLp+}?HoQxuRl@HWtBovOzH)I7lrJKkGDzj>2H$V;tIBRDwN+tZVej}HJJ zIG6xFuh2KCAee(=I?sHia)musKM3>jRp;ac^J9K}SnFK?8kLCO*%54q@$vDKHm@v| zQD=DXT1p$kXuf z$C>6-t@2%QT3Xr|>Pq{mrnw!(H2#@|g~Vj<@(eLNQao8qqxl^V@5A*wn3%^)V{+h= zAd&e{?3MPHfJtX#l|&>FZ{NQ4J6T!Ed--zD@JK)m%yVL4Tzovd8iyGMKFuPZqo&=* za(HCC4%>SJhPVkI-jNDf^=zg*emwM&6O?dOL$8$qxrA>rF(9`oX7<{h8g+np4XFfV zaeZ`};VbObjSV5sRhL(dm*32`Kok&8yX@%J2g=>w!20N2S(z!wqQzO4ph&>vxQEy_ zJlH&~Nby}OQHe4v(HK#%TSS=qHI+k1^-w7t)HQ)9~lP| z`)IMnBr|a+ewvp8JrulXcLdtK#d2n{c5e*Kt2lvy?G2tapwGqn9XVEL(>=6czln%k zCfheuyGDZ|{>`idetP@OM_xx`Kfi`6leI*vAi=<^{UE2exj8d0FEotMtA6qzLpBQ{ zQx%ABFZ*cTiWzYdLfdr!co!Lo6(>6|JY3~>?zOsZ+?B)yP+O0AsHZ2Y>BWs3H^#Zk zfC}>o2n-Dksd52~qkH@qG=i3?smA>Lu+@Ix!6vK(mq%?PxeWI}4`9$J0E$YD5X*Viu1V{=yn=%Lg9FJcg%!3bLG#yY=cUc5M*sGh$GnkpS${u#_>i4V zb1T3R&Iwp)2tPS&#Bs23pkzgs z(Kn!hxH~!BK_H~%bQu8?n9nutX=F?4(Ya`n~pad#*J*^q7kP^SukGja4VIxB;NFe9SyBW_HirdFcD(fj+*z(Dq|v zVsd>}mX_e~dmxmywgxH&m3!0Y0E zF$7hb^Y!aj-9|e8lt^*}%qP6?yp(c%yIsJV*AAiRYC-KeIe}X;z{Li^30C%5%3syC zMwrkA1#mCs)WRMROMht0V8;WtTWh2sje;+kp!o{>(jUSAAQJxW?)KZNKV0li5rAnZ z@Yw!J#JggXiaC(MguOt_Zu+ax4B~a58S&VT0;aL5m3?|XJ)B*aCg2{KgeD&I1^Dk~ z?G`Z!$<|**G&_{C$vNaD)ReW#yioY}Lp=aZFbL}@>SJGyjW5;L3F3%RL9O#SK_)z@ zVR2yv7B_tE=p$PubS!T#uiPQ9xeR=E%&xG0xmH0|mYG_CyQ3q>p<)P6kD5}gg5hC; zKxI=?YB6bKFLt0=$Dl2(;-`K~PCaJLoFSYWM(m06yZm`-{4UGbf!GNhBnLkqs1+0= zky|S(y;kML^%V#T(-LfInZMKS5!;N6gC#w&AKPce1Tq zGbBBFdw~R%Ktd}svl$P}Aqe-t!kh~b+H+mKV|O<`KK_F0mF)=`CTUa-*yea0kt6~| zhK-65^((8Z8Q)mMeu3Zp+ln&!7erj{@Ng1FDCQ7h1pWRk8_@LCsQFg@JBV5(%7Z(1 z$W|Z%JD8F(17HZCC1~1^EOX)a{qtG0UuAVZ*bAf;+l|A6gTWOS=#L<4!@dO=A&!Wq z&Vzu*={BUubnO{}o6|2Sm7@Uswiwf~uv{)A7+P{B!9;(8tAUJLRf?9)vTr=+77J-H zhWgEq(XVv_3B9_uHd!9JvSUtitTMg~witl2i(4`PU`CxxU%Vg>GU~q_0FM5EQbDgJ z5N89AnVb0-K}KLf0zm2a1n6vHJ4V88Ds60>p_rqZrv@@v#qBo8IC-@t$}iftwgIJv zleQh>&R4%7ihZN^@88{3Wbr200nqUQwE>oj2njjrI!_VuJ^=9%RNq%KDCphfMoV4$U40^O#h_5ADc?hVY3X13b`7{VIBebr>i~G=sAB+TZ8En=Mv?kLqq%t(Pq|nc;`b+B zr6cl~mC39|*HG4(H@O1dY^RES;5;bAM1vDP|r74ERux zw!yO*vGH3GiSjUrsPA8e)|-Qvw7>n-xE(p?zQX%OnmPvX z{OT>AO6Gc$<%jrqb2GC-gL;1OKB?P55^b-@y{xdSkIe>a8s-QbnN1@%wanz)KP!!{ zG1RcBmR)L!i?<*r0pcPbL{Gp$VkNMdBeD%nlFS?#RT7$Zs^%oz06o2Y!6yF^q(0Bx zEBwcD!O{evzjURuLvm<_H#IiaL@w|upkZJH4VW^vz2V}-8erxday##O%kQGKTcJ_? zD^H#w2a>wX#|*{u6|sVw=XOr;*Vfms5|Bi_m$xKjvs9?>vk_q6g`)ru#(5>^2Y@3;Im|nO%-TbI zJ+uC3Harb@rhx$|>h>cpD>Y+dV=$!$nw0d7o+1W@hP*vIz8g9?kddxpG8=mP?(8`) z^;+)pIj5SG4C@rex0^yYr4ea-fl6X2((mx!s=t?-$hP(?I@3L$LQqitJHDxfVMCJp zLyFx$>CGMS^+TgxN|hNP9z#5k5=Tl>5_-Z_3i5}e&)~ZD?}mn(ms&?#W?S`D+Y2Bm z$(~3ZcifW%m!CA;Eu^0k^JJHI+qxnZ}=k7}n{OSd?baltV;*jj@%zoQ5 zzdH-$Sy+@nLfMAc>7Nt(Mj(IMdo82g-IoUczEaK_lfOj(kc^F2l~k5>?|38(R+aJU2J)xQ8(Sv2cHx zvV*3re{%B?Mvy^qrEeb$3`jN}ZjA9*^*_l|ldaF~wY*Z`gqWF_AQjxy)CBmJj)`dl zrdHnyZzL#qz*}BCRq0(r0kZj~?sq8eqT4^QpZgJt-#}T}A&TMT=!gI#C?kWCKLyZZ zv3~8rfTkg;(N0Dk%D_3H)*qY^+u^UTPjILZAWL=j^eB;IZy%olO;_>0GL=Ux(kAk5 zX=-XlOG`|gz=r^m^+gS6y4RpA{0V{*yUeZrGKuBp<}Ne8?K0;;ML$K*#r+1kc-57- zjS25A*WwasTwENcN247Rd2BnjmsFWyxhuFm{ChAhH8lvvu$rp~ zkQpF;(rwBPo#h0y4bXG|*++(i>bP-(^W2RZ;f znqGW&ByMIMD*=NF6biK=(2+DQB~{YMqNPna2}{3yv)MS?X(O|rXoFOofUhnaMn_lI zM7=kU`ga@d%8CjV@#IbBCr_5&;u}<<)<(#ZyHdHVHT3j|Q8T!q62;(L0ni1h-bNP$ z=&dVR3%`Fx?I}@D` zcsLrbp|Twuyk_ku3ez~e2VY<3>d-9s$=W$OYK3w~0?>`z&>b5aH8I(ms&Wih93tYe zTL*EPlhj#2G_#jf=)`w#vGDnGDeN0YtOVhBOoW`ja#%FoT}fEYJC|vd<_x_~J_5rW z)&gY=4UI-A=?PAFv3?_n@}?F;{>y(pfB2wA8U6DG>%qnpjQ&X9Q!H|Xv8id9&4|kN z>&=U)B=qiYJ>fO$Rii$SZziR(+2A0m*&<1zCU}93=Z?Ejoz((8OTuwk^2k+2y{*xGJ@ zEu+N<5y*)8`g1UpAnNaTG!uLmpZUrzu(sym0) zD8TD5OfpkY7P5DNru% zyYn*FuV2RsHnFu80(pQvu@06JDjlu~kT~W90k8dKJCbTF0@hbz={As12A5H}jRfs8 z5?TAQFZ&9s`d@r{O8#qM_gOfeXlxwV%k>b{L?g#WaN4nP2?@d7bg%xo&hK>@XzV+r z9s!~f#QDLCD=a7gU>$@-lAn_!MHy}0lS%>_T3j6J{BTMsnR^2?0%#jz>3=#q3rcn_ z%iZ?&_Qq;lk$_x)yg=sB4QK5L_m(V@)b4mZYiw#ypnmP7`T# zUQ*;wG0@c&Fz@`>uw3;35eOW8esQt&=TAsUm*ogT-r9bu0S+jT4s`7+VE~#oAY>D; zwC;xj;MOeE8Q9<(14<47=Kb2RfIgvNS{xFR^OrZD0#c@cBH2m`3l-9pzxOa`7H--vX=!K_9mjVpEaKz3SZz!7PEKBM z3)HG^L9(;foevWeQ-2RRunOQD_Zei+zqA`h5Rx!rBN!MMW>y++-4KPqw9)$yil3j1 z0y@b{=H)fy1dIQ{{)4whT2M0(Ux##bt+_b%mx6+KZF49CqBrD_t|jx4yxIVTcTU>Y zKfcMxh0vY7{nkR5k1&}i_L030%w+LkPL}w0@7}>G18BF58_Q!1%K+{HcY~-^FJfj> zaB%F^LX;x)=oFFG!@|JOSGJuw?ZBH<+n2ED`iv28X?`9+s^SV|bS~%+EL<-LXyRny zrpuFjld#;JND(i3c*97D=#Jp(nh{*JHit8{P3 z9WVzs`iB1gjY&wLjgu9ifm;m*2Q?Hiwhl;pj{A1f+@|K>qf@ZQ2Ml$BC^Zf#a_z}E)s2Mf7dQ=Qi z_r5e9+Z_jYG6CkQnk3)Li!H|Zg@CCoP-K%Due}vxqjHItr>Vt1B`W*V(sZ1*0A!9m zv9q=H>NW$!8$s`bcU|U?7C5}zaPz$b{RM7e0d;t2xB~+J29UlPf_qN%()~@@N5Bt+ z*gZ^S$Hx=?xQI89Og;GW8WSxfA_7hTB)pTdlPhKqWoLI@awcwRXXkgcot~HXGH1f~ z(`0)`$C}ybv`?rh7y=d+{*s}DQS5hV;NvTtWHE(cz7?psPBiuRhviu{}-g=MNKtnd!5hH}-dDAX@O>!)IsOSO^5A zZu}r%F317@o^nWFepF}1hGT| zV+H6Y`qfTZU%uQ}d>0V`fIz|U4afAE(rbpRukiT?qC{V^vW}0A)c!T!PN%-S@`K1D zBz_I+y~=f|et`SHoB)~G@C-`_2i71XNZS4{qRs@K%Jp6UixeRwMKUExlcdN-rie62 zlS)aXQb{FAWGHNv)Rr_!lBAL5(U6cdP#KyG*=48<&4c)VU;CW%U!Tv}=U1}UyWaPC z?%}$w`+6Qcc%Y*oC8%_I^%|@og*Xa1hx%kzFt0@OO^P?p!L+r0{tUNHlh#Fcc{6i@ zxR8HqJa(+>t$@q|zk28jl}Lh|Tt{(T8@=H?XJ>Iy21(9%wW{A&6g@zF;}Bgl*+uLp zmH2yKvC_Kc*XX=_IW*%3@F&a9yTwE=eNh-t{j+txJ&PPZ_uPXcZrIqjMU zh|_{AtFD7J@7!jW>;$U<#hSeI9#XNxiHYnBf|1ZxE>HF@&NC&wo(TzQS?0S(wvo!tqjJwQdJHQ*N6RG2h-|2_oJ089`X zfD&s#nlt5t?Tjx?WvJxE!xnpZ&~>U%1cy;=T=FcEA=*gu#u_^Ppa8{k5V;)diM z7KQR1DMKAnoed8_`)85(m#fZja@rjq|MuOxInbml%SSLAb?@FiCgU!+oDu8Rk5#*f(cY#UoUCLK-^py)iGl(lGuJ6$X|la3Jo9;oWJeU zCk~R0hQ605^w{#HO9#J-^t|{SE|{BC;kxT_{mMB~V0Ykzj;ZUoi73&Hjg3o7OSw;! zt$DoDap$3j9yS}#PjgH?m7cz*_^pwVQBue~QRr$!hRjIbzG|I5>yGiIt5@@^=M0PI z-9WXQR5C6yk%1)U{d*`nUcIFx3=ha!@+9D3WF*3=rhK;cVS21Gl5~D#$W0xGD=h{1^8CAZmtWc5TcY&tE47?=jSkL)9 z*dnR=*)xg6>W!;EOSY_-t|jF>V+Lai9;NWa@uv7F5x6C}oZFxipp|wf?gwPr~IE44Hb6F_R9BWj+L9LEn07pM%b?OS6|+ zTZ@HjP2M+x4pAkN@O|LmLGKkSa+f!2@AK)`-qh&XfFG1XG zwRv_h8=xCQ6r*WZXqHHR`34^tLS1FNncSv2?k2heq-{=1089AJA??9m@@T<`SUJbw~6hFYd4XRLtHW5*u02)=RPK>tQA5vICst`%>+9Q1gg<}h6u@4PY-5ya@-;p z7ng+#NlneWwtT19D|qPz#OrFf;j}$XqiNO5c*pLSi%2^-dG^zHCC{NbF$-v|p+z4{vW|heC4*Y5=o>roP78pV|NgAY6=uco<7cFOXPA_aldXXr?cME5v+U zJ7d_0h{VIRkaZ%zLcuB*?7!DuOMz*=xeJtJ^H31q%VxoTia5|w}MYK&x zLOQ~_fJtEJkZnt2%%RPeTn(RWF8Bw2_f7U72vA0S2P%^&9G4m38ta_W>f(o1$0 zsqF>e%lYh%7n3Txi;n8eU$_vSjIbahx`qf8Nfs#Sf&~i(D;Ck)3{|=>6ln0%b#;TN z64$SP_}~G@PRaa*L`E*TdUI7JBjrm4AVVK19ufNzU)F0F% z2zFS9%wVJFiQ2X;$9jyBQFjrh6hd$?2y;vY|IIP>TaARu6NV`owGTac-y> zuU6Alql}aiv9UxVpd)ljY~pzrJSU-&f+S*V1P2Atwet`kF^cBuD*$n1m?QCqh)~8It+jbT za;#=&y}gSfW$b1|*oaAfjJ51g0f-;6>@ouL#zq!`Jw3Ud-3mE<_8kr!UW*1w9dptf zn|jZ4UD|gIQBGAA8~9Omb&`V)w}*SXYrweXq&`-C>a*qa%j;;Vo~x*+$ZA@&v)o}p z5iwE|a&1w8r)d8C>u<^|0%U^*EAsh`24FwpR-5SV`ZcC}vKTaaSg8}lUC4Lu%D@iY< z=ta^WyL0EZp?ceo>AjdShesm5ci&O*U$kbMS9s3Fy^&`#X;O4z;zG20VOA$ko#K8S z9J7xxG@+%_QT*Cc9YV!JE(C&j@dB=VMfpHhR}WFc`}fF=CZ!aewI=p@TzGEZLso@$ zLy$9q?gh`vm0z-K**N5XqEOaYeEe(xPe9IoBV3$#&6>ryGWZ^)0^hZ##2vuR-A^TevETbrm#c)C$TVc;Ef zymdX3hFs3u*<=>jhhU4l%L)}M8;^bP3rT3L+`QZQGzBQt^ zMSQ<|_wKB@GNOh6E_!V^#gMd)xp@#G2QC(3Cfl#^2}MlW z^rWi7U3Km6bMph$)DDk2Le~@#6*WE4^ecK*B$Q)Sdu{)!`bR;S(Wq&qfIxYLp0%ZF ze2iQuqhEf?Pe&eny^so zCRJQ@E?hA|H;%Ny*dvrR06V%in`FJ=!v`38N{O)CTX7|ZIsgZ=8dJ$r3#}Ij8Ipaz za@df#BF)o*VaN0$-Pz{6*!REy(K~j$pY%&YBs;)(Rp~K1v?X<)f8N#``n>!Yox`!NaegJ~3E&Gw|yv=XABvOSVl6h-eyn z(Ab<9?vekiDs0diclXg?2#|4b52H*?1Htvizip{FU(NDiejJY-3qa{3-yR{61ZlXk zrnK+lkNcXrPAb5f;!GhNjB^!bcJ z%=*Ak6O$kGUz%SS-^QNsaL>NGs0D96Oi4|>OcJL!F)=lztE5~3iy%G7Gu55)+dRUi z4fy7o{GS;t5XNp$(w${Qg!YoVGsf81$J?70;h@o^nb+Pu-}k>-fSGa71|MHuUFhnH zzHJCqGDEF!6|uL=?EwOM^Fer`xL3M0C9CNV6>6LzRqUPL&eC}XtajbFO${XjAI`E? zuuWP2L|H-N`sVNYdmKQ?b-%RISy#V$)t(#92qm$IVP8$Uz3H0@Vl|T>Bwnt`&W+O7 z($dn`Z>DxES!XrD+4&z**^o1dJ>)e$)Yn%$dxq{Nh3+oL8)(kxzB%c(B8BR6&qaj1GPP@FgjBF9_%q ziI{EBF>^`Db^eGOz>yeVL79oTq1OOo$f-&*3GrOyBt#AgagErGBnF@H8vezI8sKTE z0U64rD5t`OX*c!CF&KdsmcD;{{ua_oiKcl}-U@GTs+x-#84WwOjbm%#_(Zw>^+Iv6 zr(rj7aco>`vOy3C>6ZMIc9;3l$&+OcJ!I@pC1&DNhrX%-=2hs>H=lx=W2S1nv2i~U zO(Xbj^7M&Hc2x8)sa9BtZ}0adXL%YjV-#VN?4a|eEr3+qeDfs3Wdf4c)BR$kZ2$0M zdb92~$*4raXsHB-eK4cS@Vi+;zSHqsSPE`XG>YAHl%4&MLU%@I`a z=0^EnTRuu-`Bl37agrtK_qw(K;<+G8cpqpzWy%ym<^C!=#7$4>+ukTEttm+s;|C5D z+hrc__@_2Xb5T~1u&mL!*R@f@w^ZH!&Fv%z_>b%WzyYBhOO{N}QDJ1Sg6)bIPAQxl`-QL~?S{=7;mtrX=xZKC?ziqG!VaSf6@AsB( z;$T(Gzpo7l2&mp6C>PM`(X_PK{bC9+=tnCpBLgf9IQxuSax=m)_1yf+O*GNS?r4-T zp(cQQ{C9+NveVuCd_w95!;EqRBDnS*6?JuDXR31}*O(mpO#Th&uAw1-;R#UqZ+i=w z%AsKR>#zPD#Y-}`@W~|OTLEnhZO=`1V(ZiNon5fC4i*%(v`^j&F%jCnh4bgD_U@g` zs-88h;_L#+r%}BI_%}Tps$^H@y@67Ne0*bJK;_GqhxYHcwY44LmgU+wa zM_EshdrI@F8yj{w=m1>+_8gfbCoD$7Ba_CB>0Y8xFd5)zBmWW9S)@q;ECGMU^Xl1! z-zcqas$&iY3G+^n{aq`3{C1tDMUaY`T6<=kX1$x#w@J44_964F)hKozN6Z=);T~@w zTU=B`m9f=UJFJs=SttXv$g*Le+bOpk2DjoDitfkdB|rWb;6Y6N*2&{I&fU{($R; z|CXDz>c{CBr^{g77cQISM)Q_v`qJJ>scf6h`}EnGXF!UD!qM=%#h{E_x(Du4!YbBs z#gu5Du*dT!Oz8Gu;mVco>Dyqy09T}r5w0lXHE-Qr1}b>_#EFSo z3SXWXq&jaRG*DMFHHsAxgewkAAjBRj<!=G_R7DHFX|Q+DRShus$#!+G z7|S2eYz)}xL8V?Lr#-GNz3J6FXnfi8!VBYnPTCga`#sTCd&B$Xoukl#gk*rU|4O{m zcZ1#J$)^|8M=o4LQ}E-GT*r8^*uQPxFePR&HTnAK0rxFzv=jobj{7*dy7R%|PM5`7 zEtd~6qi*$?J$3AtFK6~R96z#4*R*uC=yKL83+jHKJf(KKlI53nRlUC{o>-<~;+umx zPO_7rwP)D%#iJ*UU#NNijQ^}zulYZ%SQ|AXlpt$AW}3`_DOd}9$hVtfzgQ<_S~U5g z<>raIohC_Ir|6}>>)&nn7^onn`8Kt8n)0u6p55uZ|A2t0yl)DTq)b(Dl@(c~I-3ns z>sWo-=x~Tdr`xp)vD(17wEs!Bjo2P0Nr(XcZM{+sFNYCjt{u5VNB_1Z1iUaPZmMm{C(&$upH@sYBXzyCLw)qilzP*;DwvG)A! z+n_exLcWn7?d_hC6bWcMGwrHO3VT=-7J0RG8_2YH-8oXj>nkI;NI?n*AE|I8%tvfp8V=l? zsrPXD(X1>A_wOu}nWxL9A2DxhZEYz3H|NERK%l#jC#u%mJI1jt-b2cRw*CdvJTxc2 zUADT60CikEd2+G+LZYiM#`xcrpO+YSfamj5926PtvQ4s8QoK}nYk+yQEwWzVj}>E4 z4(TWoW>TGt>e@z(92sE)6N679NC1GIzP>)ihpjeo0~O|vpFc?zv`Dgfi1MwpL?V^` z{TtuEpHS+SKI_xZb}&no>68U%kzEEx@PI4D;F;=DgCMu>8>Ol zA%K>U(C*6jJTKr1DIEb~S>gpu0v!$;V3EY&0-%naHkfxRz4w5ysLq1oP!QO^1cioL>C2w z5@wa-X_&ll(Dq|6RHtwHsdz}qd3ksY5&^biCF6{ma9Y}W6E)LBxgE^Yq2U0koA&K; z$(oHI6nKS%S;05hDQqi#Ycn^EyNyAUZd`6w-f&U~9xkI*cCx9PsP%l&#Oz&=wiGkIYmz8~WVW~`PA#?6H&wXueg?#IP-34u?COp7ImT!$! zL&P5%LV*DpHjKJ?&>ja!0_u#xT~l6U1Q}NMx^)+>T%l9Fa^V8*c9c2r_o1ckTHHvC zV)#UH5%t*1%E|!99PnAF0y-H31BLrp3^>Ae|7M;PHtT6gi7$38ckkLVw+L9u)G%H| zU2^&<43Mz>p&^-Z!nF-W{lf^1W{{hK-mt2-9|M-iq8Q^Hfl{LKHj$J5Gi%(1#Vj5) z`}e!Jx_)5r{6CvhaJI@9FYW{aGhJVjFFh>&;O^a^M|I83M-mf*0caRY1(xSxXa;rT z4kRRO1c9f#z(xsu%U8ex!GO@g0nw0wfdTg<>g?H(JBQ@g`oczuURJmHV8#RjDiv{u zZiM+W>UUJPyjb4U%m{-^%6CHr)rY;vEjVe$v4Z~? zOA$u0uhOD6KN+h!5|4S*g<1+~OzY5jlF#PqDIpr5E4~7PhB_(N!tdgDB zW1<{DM#KgNbbko1r9}d=1E+-O92X5ihen&ujB_4JEVdn${0T@r9x03rU<3vAXMz_n z&BDHR_dGvw!x)1eJCs_3XN;&#Pz#7Athh6?J8~4;!2Nx^IkS%);^=svL@FSO#~P3s zC3~C6mi2rafNKK6I6vt(-Lk2+?-+dGYM3Q~Zzqz0h4KrM;935N@M-7)r)KLYQi)il z&pNn&KM3oq{QT~7oEI%ZHQY;9md_y{@j0VqCn)HQ7$Ke#Wtq3$uriVQyCu+yK zNy@QXM=ZLfBIghg@Plu|71OzLk#;(YD554xMo-a|S23vJd9wYHp2o3Qrs(3|h0yeJ zMh3zaR>DTCjX*NRyLH1tBLn!2r!J6l_wP%~SqOE;ic4v9$hW%63b(QU<%YMTXvI3tX9Ie1+tFCTL zNJr4MpJ#i{@A>@)7D{3whLN0NBdoN3{QjMd1qRX@lrQX9+FbQf72x$uJ~7@dVGUY_ z6(F@MmO%i-=SV+bo9J37zYjU+fD3h>|3+K{l4$Jns&cX>91(sggoVKf;Ot!n9*OS@Wx_ zYTD7`KR(QWXZ>Oj_dzNg$Rp>rugGf1(pdTMW6MD-f`e}}{*U_0-96bRIW+R@!Ba>5 ze-|1H?HydQNk~V#uxl!NJglGgvQ<+iTnoqmTc(r?;#0dzN!$Tu`-d>#?9BEWhhxX? z-3l@K7NVoquI+zZ&xnRz{Cyfv9CWP)gtDAS3X&2MPU+8xT+@ti^2K;TJ>%VQ?u?TX zwL8~zE2J|E9l-pvS1w-cCfXJmX|q&Elq0!%bx#Q!+AZikusqg6ymO$J6CS z!os_`k@D^~9J0#@{o%v69<)Q@S6yvsX119G=( z$ZUP+1)2f9FA{A(MgT-{m-gWHZ*#19R;*ZYXxy5}&Fv&DbkI|DXD(Q9^U4)Wx;4rv zVoarTgYPnZOo&){gJnsF_xC+>jTVoU%{|F!Caj+kfqfJev5y9H00F0l6NNsmN1?d|mcS{c0Pi$XuKK8i!-w0+eG>);pzFbsM_tmP_4=^f1u{3^X= z_#OvrPJZ!z_!*7W(~~;bZbPEtWnpq$xG`=D|82>L+$EW;=)geJ9r?ppd_#x2XS%$8 z_pGdJ>Xa#W4OY=Lz4l^r@xt39QqHBBgq!jdgNEVy`qL;kiabF}baizFt_1smyLWYr zjAq;07e0J=Hf8>>doHkRH>#hd@P?Akx(-n8*Bj#|>!83qF0sT@0qlMWQGfkpUN|0FG zGs-6-p70CANiI3r9ZOr($)+E@zqeFdjvU#`G>4(%XkAuUV(wyJlf#7YFVA{6C^ygw zpyS7zrfx1|F;x`}kB z?9ZudL%}WoP~QmP$@mb6hM6wy2q%#w6q{X6vPnk3{e_H4v<{}0*w(Yp(SPLq!qba{ zL^<27dtL@|wMB=kL34nD@GJQU?}#HQDFG!U z7El34j2mk|?uRI+c=PkSH2*9gn{m8Rp+Bu`p91dm<KQSr5mUN4 z?ZU#RG%Z&bt-Wzy(0x!VFe}zF=l-*6AKG04mG4puLi7$*jE36G@w!MTyW;a&IvZJR z$y_hZ)8V@vj_*n}QG3KL2F+5NEgn`fX{%J1^a3|Xh^?$y9YZcJF+H*-=taOAB)jb^ za|F^(?Qpg<{P&F6otsrqg;BjT{s&F4XHO}QVY8v}pRv%FgX4-&hQ5e1;k<-0@2`yU z|GLnC*(wI5EeVn zzJ18g=+J)cCy8xhH0ia4xLZFynF6nAaJcPN8U*(J^ejZAODk05P!fPuHyU@67pEOI zDK!$H5lYOYSF(pg4F5|Uqa>_%BZB2!rw?C*wqbTF~Ki0YeTx$PB+;+C^Sb$M<=BX{{GDs=V?;l zTlel|2sY203WEd%+dz*d3WesDutxp@)66Kbt3C_~jwFl-8i>3nP3oCAZCR#E#t*ty zG%xfmNIKDi@;!OJpj0(wNfyDVwy`;6Gx8ol1^iGXl8y+s(xR(V88CqOKhDSqC9aqV z=PlleVQp{(_bYeFPRu`={uNtcJzg9LP$OJ$MtN)W=IQiAE)(r<|F87KjUAW{NJ( zbB~IPhYuQrp-d5o#p~DV?^qy+h;h#18lFDAIO@na6!U035)$Ux*+sCR$pT)HIc(nL zYu1FI!Dk8{mK+tznSOa0gi_imWZ>`KdEvI}q(_q{AaYVkFSb7li}H@&U6(2 zGBxGW|IUAd4jv#2$N+6rUE5*gG_J0TJ)rw}fHip>{?@_`+2n%k>_2zKntFDHToi(% z8r+G&1C`*~$BrHyCZFZ?;#qn5zJ!Fl?~!qFec~M>)_`yGYnar@~Xt zI_VLSPoFwfQ};7hA%p3XIZY90l0^|+p{7lO5tg#s5w zQ%BK)lqKppD31VB6SepwTr)9l`}XY&6wu+nt*^(U|Crt{^oIPA?f10t3nC4~O=u@w zgt8bogGEl0Ws{t7>{$4;G**h3=`Liwi5YmzX~ZTRIkE`C znwzt5;U5?=zAFt8Exv#Rs*ZI?b~5B?%c%odK`N1dAP31w zD0x*PxpyB?(SVIoHSq3#{j~{VPj5SrS~K|)Ae1Qz3yUg7r0?E6e%dnxb5ORXMUvb6 z`Aq~WGw@};58sdr1ZWmc3tF^DfLn2+{P=?L4U8WygDa6)H*S{XK!CZ<&Yx;>yTvm2h4Wa%=D^dRi_OOx(c0Y5Me0hK3h1 zG8FVhN6a@ZLD=TuLEo|k4KG}yV)R}x7j((seP=zB5)-FFA_oU!VL>V7O&Q$O6!`8z zf73*tl`CaFLxc`7F~O>cvkFMjtN5&<~P$jCAH0G7)# zpqopaFFe+{bCuQ97{$aGAYsoQ$X>jU6#Mi+ZE*~xb6p$q8&W?tnubNtJ+F%-p+A5A zFnmeAC(sacXj2IMD^@h_9ykGM1#DtH^ZDFw1TA`gXqxEE0P#8Y3J;i;mQjk)z+0wt zjHZcOU=*l+^Q`+t+tNrwo`7_LgxM?T0BQ5RwY12$gLQNOqv0+q%FA(gCqgg~LO8vn zsvt4R!GYsmtE#GW6nk2H0zE-;OW1?nBOfu-SPa1Q_%R2_aAy%H%>+h|bY~y6_HLMS zfs9G%w7Ik6wyS)*-ZJF#-i!%Lffep*TmL5a9&({%!WxE9MW zh)l$h5>a{4F)9`#RA6}F9pF9;bgM!AR3-7NeDG`L^0<6K7RWL=#VfND9v3)Lp*Ggj(oEqO?+Aohu^_GsYw zE@=5^-JJnx8>udNS^OVOC`P#fq&#B5l?N3SOquWy)lGc0w6$&Q?bBYiGZ|FOJhO06 z%kmPf{m!ngs9?QN%3pWgLMcjF>QkAK{PF?;6C_^1QVJKwf`6bey*6A>TcA_`&7lPo z7m@pgj>V{EwCo|8atboKdn&3Mv}q5gwX>Dnm!Cp(MCfqa@-rU|NUC#wK>CM+!!8e(-Nb6mBbK@H96{)@;o8f?% zg7N>5ap8jVuy__2P$k;|7I8e>2!Q**q;?HKBC{VpuWwxTdZ2by35gUp@(4qW+RdKH#tcW+>10Efd6zid{xrGQ}R362Fk>tjFCR5=H(NdX-;1Nd= zo_dZ^9-)TXXx}Keb7#*&St@I2G&eT(Ty}vC%df*O>~X*;khlet#B3YZn#?4u2aTj; z2@W0~=?)m|oIaLRJ~4$Sj&{u|J`m$G^osb6_LkZPFtiA<2~-#9lMymQLk3m|!+d$l zDPSg!RW+{y-x;dph>sBqkr5kvHlIZjptC==D=DQ}j4$G138Fv`0&~MJ0@nGdA7@{lsrN3>Gk)+w%+UDfqynO`2B5-9+QDn=bi$*I|bLTPESqvdfQ23Wl`agn9LIfKK zWj)d*Bh*0$cWV#2WnAy$0kFHI^lk{M_g=rL*sq_LyE`*KnRuLvtk8CI+<4}a?uP|w zBfSI`bq-gTGUq^f#AL`7&mzT#-qc;-XkE%6^bez%O~r2)lWR)-A-cLYBij*0@ogFO zxqRhHN4;fd(Srxr<_;UN>sSM58EPUE6b_2fvuOX19N{!Nk~g2VifVk$X+aL#P&x?X zZ0aBGI|N3K$73Gm9Y<18azRQ~))rzKP8T4MKM`6^0`=*Tr)n&mY7)}zzh<@j?t}z; zB)#=D{Q6i!!&B$Zl^?DN*`1SPb@J+jlu`gGzD@b}(T#Iq}wVZ|^_~F7i-siK2V=n8E_hmJoreU`oi*onDb);VPoCkz;f*2@-~;R*dxM>ZJJ`)pjs<*j_}OF5>1;Tx zT^l^#J~!IRkjLkDF)Vc=rn?5GzwkfLx|~l>SPKbv7Hrmp3Rh)zf5 zOI_Upz)hr+KVLR;n&AP?y%cSXpf}@hiL_8|=!y08Lf>N<1UJo_7`?Dnr&6MN!n4ik zC9rt_G$x4?$ap|NAh${LRbQyiXjr{!syfIu&9 z#j<4;rFxpDzAqp9o$mgqxZ>8_dk-GmLd(W#qZWMDDJu>y{{e zEAXo~Ytw0fAc?26VGBPoO=3@NM%NUd5j``Y0%wHz1h|>sKhbWXE<~)kV#uXTsA3N!s{^8qh z^d7lxOQEfXqS;7wPEU8r1KsB|UCv&_YLO63e0t?tv3yoHBAN8Fg!m%i=r`56StduI zZ*PCM8x}v&))oOZ@ioC#8yju!iRhB2Gl1UI^sTgJcFO!-BJ2yK!u?cR&-F*i?VJwc z@I>$a%1h@uHNQPF)8EdqRm-kqW_(#{y}0qVjI_4cfQdQ%JSr-WmF_?E>dW1L^9B97 zZ;l@Sc9DnD3~Q$ufqS%{?76ac>Ad^S`)*|1Ty^N@pS6oNF8aN|u_Pew$L-G@TPrSX z#_MLxGXJE{haYb`Qd)v-rqi};^m06Jr%B!A=UVRQ0epfZEy|&Ye|%!5kCx3F^eyMP za>v1GX?Vug*1AJb@;!o%GObiwY~)dXLSOPpdAWwFDtcn5W;MA&lEkZ5hjSO>vn@=W zDJye=VDOv9r}yst9awKwI4sf~2s+py$1tO_Z1~-e8_-XF{20^uzOga7_- zC7=3ciDid8v!tZW8&q~OBy*?oaR=7%LUAT3jZ6b70^A&_HDMYAtMJ8>v8dVq+mp$~ z)(Ta5xFybgQyql=NlVu6T}7T4mO0aoBNwFpZ<+WtukEH*za3@O90ifFfXV8}-`2Vp z4@K0>wzj>4<{_Y0>!(kuYHD}44)Nc(5k*MG^HtIj+VPIH-lJYcNz3H8nQR!I4F=%T zfR_M0qi-J_4*Lxk>l&PIoy~aSPEDCVyQp%T-f6+reXgf2q{^lHM2}_&WOntcvT+K? zHehY5{WH*uQ>UcQXCqPB?yDOr9I^S~)-Cf&8`(UXan86RfC8F8spG6e|2KB%;y)!8 zRx?mPsn72VyK9rIAiscvqILW2XbbM%1WlkNWnPh!6Y8XQc+9e0?3T-yjjC4R;>2LH zaxdU2-99gm)0I|<%jTJ=?Mh7@>@zuLZfNde6Eic!H`f?U>w3*he^&bDQ_t2fUvP`z zu!gS)@4tMRl|HMF$t@heuW;Bgb?p($kVSe*&<1*yp@WWJx}=mu!S84;;SHR)V8J0o z^I%7~D;O@7-fMQ~z=34FQ)^>P5Lp#@a)NM9dN|pFgF~e_mW@r3cK!NKx@c-yWKwx~ zbs)BUzb&R>#9#1?R)1<`=sbAfl`B>p*uNhIe$IEq^}@JW=(IGh8<|r;3({0qPm!pS z(~sojsJsI=Z^o<_IakcI2{XRn*hIhH>Sl6>mWlDs8!IdHuRVN*>oj%w9J%isatht2 zFi?W*n7lx9Hs0LaK=x@F)wOfc!(OvJ?ZqFPhwyNdy z$vm%F!)k*TbTwCXZ_!p(Xw!s{L!R}fmM8h3KDu)X4A94?IbdNJmQykADjL4)IZYSw zJ7a4!o~%BD5n*(l3^qFHaS_z5t!;${vMu9bV>$Wn$5J9JI`-No&BSRHf8^`Ni%WF& zl3Ih&ZSG1DPH_~n;4_?;$%G(hKtTHDyw$@l%B&}JpM0~?fQ7D{<;O0vqOHiS4L(P@l|AxqV zH&qX{oFK8}2ejlE#GI;UJd_tGjc`fpOQ|XF5kx#e-l8R=EDviQi)j{^Bcq&@r1Ey9 z1Wyj$89iZwwiLJx(hsa@np#>A0wVX8+BjhDtXag>qk5>eM@mO1s;RB&I#X^brXufT ztXumG9IDP$dNG^`0MTE9bQ?5y;$3&e?qBBTm|1@f|4yn zu~r@Uo~!yqf&4YpT$O*%Fuq_;13dHSk^Z=GD5`8yIlz7w1LN##6xSjV2pm=H=WpK% z{*>2c!m!|w@#X8+?h+F4r0@Rymouu9(Bv}-fbNbK4AjliGGzI3sa*va6=*=#WoK8H zmtVn;1MGUBKtgw+Pc?OQafyi>K6AXZp6v!6LR{8wSGFtVkO}~-9+HxCXV2!$8VvZD zcY-|9-0~xr(~{6Hp&z4fsymxD()C&^U>~yiuspMIHgqCyk%C6a)>cT=k6*KcUXm6RB1L`98 z0<>*Cr2}dN@&po0J^R(2?FCTCrep?3L4rE%|slS|}`x$b!r?m8ZPSQofMztJUaf>NMm@ORa*fI!#QL9(KYPLx!rF&(;T4w!x zcL;a_XJmnxI5G9&<;xuY3eAlam_Dl{krVyyGdzcgpx>i%)B%eJGw6V24kkG37!QSK zMD!f6d7o5=%HIwqbnfTHq{1nFm<>L7P!-2j;83H1OkETdL>4lPV~*P>bqK>XVEdfm z#QYYx7_Nylub52}z>Ngl#(4oo4B^KSBP%~u9{J`qulidB4WbJ z+4uUZ3l|J^<2cF6i{l2CE=4v;l~91XWQs27ynp}9ix=O2{Fp!fnkqdU1wEra)*C;e z-#9TXQQAWWi5Y1pX0FIT%SuZa8+J~oOOMpJUsbgTP`1a`(dOnK-oCX&3j2 zDI_~G6d8#g3Z|6@D@;s^zbVB?h7A{BIul1$MfMEeikr~&WU68li+Th@CZ~$74NOwll3e?3#vhwl(W=LLP>3C@_r2A3K0)7_!;&%oY2Ya z5lI($*W$%TNzjg|2RZqM2ZA-_CAcRhs^fC) zYeEl-*&$^WCAsP0UT8{ycQj%_Z5OXuqsatSO6gJYlKb~hQHyzc-sMCcQl_nK%>`}7 z;kq0la6;nvUk-jqVGG78H_$}t|<3u-MoRw z$0+}I%`KDSB)RZO;(cXQm-r~zjg}ptUM8m>9_MhJ&5O95V_H)5wrlk`cd4cOt0k_?snd(G=&z=>t!+9mTeubB-+UY90rYRSqLPB2Z&Kwx&4!#e?V6a>_Tub0D z=v3t7gz+KRQ#rZF)l5hVUQ*N{ZQa~Xy0?y2Te#&@U3==yC5GycYJFMq6nkQa{3tPy zs3l}oR71uxHWC(&*Je_kFQ5=kh=ORMt_Xg-uKm)Dneqd zlRY{4~9*4zphJ=3kB(I zf18>xrC^XW0Z|vhJ+_d72=Cp%#vOkidQI=xvD7bnYU}>?cXgi~vt}0r4dJ-$!aB0n z*YDqn10fW1=Z}AvS~PN-R8(kaO{axac+T5*mNy56NcfqK*U|Ch{L+&rrL1?$Teka# zFKy!_N{v{_KW9t;jlz9L_epV1N8Rf#>ZgWb9XN)Mk43J}TnTGk{Z?rl;V`JZ9l^ea zWC;m&^MJ!f_O#|Yafs4GA_{w71oSN}Zm6o?u2WZ2!!l3I$bh@Teh1d!=JT8ABQ$4b zeR?5wwaI&@6%F&r!n$?WX?g;5N-VJ{RX3OVh}gNdNkw{HCtXP@i@dB0+nmwGH9p}AM5PJayzjtc2IW~8%h z{@je=y7zwko{L*Uw5=hn%Z;eM()qhi zF+`T0^>KaOffu^W?*MNgO(k|TqGMx2fD})gveqhS%I&mgAd%sj!}Szg{0x*lu-^{B2O{n9-vH()+iTvl;Nb;~ zjE$#t(DHu*SgL>bj(M$(w+vagpx|Y&OZ5R%~V25dfITP&RFfn{IL7_|l!9aZ989;pr*_978M3ba%pO zYdB`3Nmt;NUU4F9Wlq&vVP>xeS4)n}UT^x7YrN^5^rAEm2?eKqhoar35N zaOl47)bg=`9te+kn95y}Itu|7zy~Rr6 znvQ^wKr0JHEx-hii{c8k6r+ZmRn4v95ieHF=QwY){xoZ%<*QdC8D=(n_44H^8XCq7 zB%M^q%b-9*lLPCHW;E^MMaE8D7c3Yc;>6=AX-_fTIF^#af9ZS2N{4o;Xu`ibrYc6B z?6X4{6~d?h_=_Ay+0GJ%aU9WaIJpg3gg>pX?cbu#F9T} zW({-Kxl7H;K;a$-;MHwff1`5Xl!6DdbrOo{!F;N-URPBywZVlWM!{c=^Tv0c3;y1` zP%&D<>^gbc$f)e$!>K86sV~Nl7Y+~c_4$n6gKB^xj3sVfK$|}mb6v)TrcaN>fRm<} zk`97n)-dRmZR$Sm?rlHXJSc`#V@}K(#>a9%n=)R4YqmM3(*=U0k_;gPxiSycaH{10 z&RXH_(6ezYK#}JW^G)j@v8g(z=ssm07haIwk5iKX5Ry9E>lsL{wL{o}L?PNXyzmpJ zMf1i4JZ6uQ!@{h|t1Nt4L;RWo1Cbq65T>f;wi?o-UWPp-Kr#Xc-UmtvYG*z*-L&gi zuJc4ORJOFSoH5Fjki9*#i^35{eHe1)>9CxrJ5ZITqfo#yT1gr&f{@OR;Onk@Yh(sg zq)^d30w64q0@fZKn!D{}krf}tPY^!Tgl?NKZsf>^cklj-*Y8KPbd8O8^pOyzf-RY#q(&5H)N&*l&r|nMM{)*uR z)PP_Hlu5wZ=<+Iua1yMyj}JhLbNVddq=F!xO@IS6F*ELjH7x17{XU6{WllSVSI z{5YGHX6en`ak?yQm~)y~U?^1;6@2}|i$bZr$kK;6r8chU%-OS(be<4tH5vqVqn|emv!K8|hzyMSEpnC82 zQLXp8xhiU_34uz)Q9gSd=m%?Rj&cqv{u#l)E>SI_Tm$j}+heO>IHd1-t>pQ0$Q-0I zVyhz{f#^?5`z}%OXKDpaHILEE)bvxpEm$P5FfkE~BV!VBGOjo{_=)K!5T`9TF7@r( zc#e3$v0+1B$yvP_5TR<{wrv|$Avh)tP*v^V)NzVhQ7G|~x008WW7Y24yO+r=`95Yw zl3+`RO>*C^1C2w*Mr3Y{W%7>`wr(9pat?jY@`3k<7LmCB_PT2`mqFJ?=KvYbmmxAS zO3xg}uy_O*P2N!;M0^a`5{Gf+RnR@_C^mvUwvM1c<}PB^7x@;^*y5-uz7^EH!WiC~ zHPdzDu%rD)koF?RBchx>a|UA{U^$cZ@21$;0B2gw5P&HZE{JAenn4&qoZuB`IPmjC z6T$~mO@QsJShL1{##mfN*@G-hqPEA0P;5Y>nHEl;#cE_D)6OyRz@d#z&(|NF*W>p< zPJm-I;@xVZcHMQF_8xKtt7XUOC5(XC>c)W>qsGQ*WMWFGp3;53ID%Tn_1lE`M{nPZ}3CQ>7~5-t-GDu`X|Ug{5N(Y?oyL%uZZ`4vx5#Z+ii6C~{8AoT0STK!vSKhX6!3dfYgnP>Hr>4b$SQUs8NFxT0y^0sKeK zIO$pZ{xC**>8mxXWb;Oh7_oR}yyIIYRk)!RxIqyP7~eQQ|FX0wgCdY`d=hCo+G{-U z(MDoq8ntiu8LT|!rO)c9)9mEiszfeb#(_RTKY=BQa}Zw~0l=Gd9iq2--Sxv0QvixM za6!!HV}7rBFvhoL0}L~lWoW2am5y-)zUz9(DUcUtXLo`(f={SKvOMLd4ItLh9Wt=n z?fh7MeXsyA5!y~-3uyrMYWp!3)PqNl81Ne`cxMHpWb?hA!buFn;@@1|@0eP}DZv<( z;fo~-MSdU5tVx$MB|tp`9GltOo`ydW7M3V5|2vuRy;7MrnEk@=#|97@E`_~L$unyh z^;6}Q)rYLKatu~c9#ekmZKpRyNfLsO4g+tP?NLi`&+Y9cMZQEPw*D@&GeeHEM>v)D z)ho5U489MWFz;Cg^ALP^#$>2t4$%BnQ?ppY8dhAeOCs4L5)u;uf0Unhi`Bx6)r^Bf zsF@Jn36^(M-o&owQsErI@t*#?mz0!&p&{tFu=<(&k<~=Bs4-xGOp;NM*#>|OvL8if z^6yv7t!4MT95gY>5C1bIeXfX?jdVV(Y zDN3q_toY)$K>r-l+FitP>A{%QqC7xK#mVTJYHa^AGOT!EoS-VmWFQBU$ zJ)G78v{-KJp578n(Lh&I7~{=}nXl_LUw8UMG9B~`HwGQZ@gHE`#rb`iG(>Ce9 z)C8{MXqb#BRJ;c+xpi$YYsp?cj!0FVL9IdNcKwH0uiXa^N()mnINbrzwg&HU*tTFB zS9eYQ=ZEKGOnQk#65YFFE=L>t0H5g>d#PXY^X>E#21$MD_}wDRMIpZQG(4VLphnTXi$YP8L;fn4fukuYNo%d<6Tw5> z=KpH*qR19hEB5E@maF`N66KrfC?@M|KYu`YXlTjVli$C8hnE6oryYWNr5J|YScIs` zADbeSypE}SYxvWG@4|VrApD~r2AZfW?nKKuP)dBrHbGRyfwdJC_A~rQz&+~2?rUGW zlegI5=zLkxVh;ICD4wCj41t=4MnO_TSQr)EY4`H!21ABu1w<&+?F7&HT1R_Hy8-EI7`rj9YFu(bY;+&5vN##ZH{PaDaV+kUMR zVKM`>WxhxFtRCg!2CTTpUa7Sr4y(@}Zoo3H(6BUN~4oDEae zS5`g$#KbRlr#m+-`Z_Y7ZU(~#=A?H}_UxFJ5gOPZ)7bO#?d|J1H1_Uh(W2M;S95ck zo^EmZK}Nw>gAE1kLtjkFJYtu!=g026%|~ptY3HbHd!F}x(C)89kDO<- z%1;bj1jG_JFVz|73iL-;Q#FYrIS&}79z80uR#;wh;`s5M%9$@8JmBPT3uuVvB_#@9 z7Equ4oxeoyEhv6KrL}AxRp-%xpq&UesWLdJ5I_ATOSD&=a@CKGi7DIPdeURrGLA`# zhmoi|T7 zx0mu!!WtcZYo<=W9o@yl1ZxXX^9mx_6*yY7oNJCKBYXQ9)WK0q1?@_9GxQU7OpYu# zPD_t?APcVfuLzs|x3xVvrG|#tguAx_Do_xz*`v5_#TzWRqy0LD`*h|^bdMUvJTA_l zoP2_}q<6Csj~hfqb-Dt6=uJ)G!-p^_^SFLOrpex0=re=c@|C%erp=aGgd-AhQ;SvS zpZ&eVSbxsxcc-6CNx6t81bi;RA?S)|oPXZvr!Qar29@SJ!sRSpOjLJ->X~)QWd!Hw z)XGFi)13RSU%z!s*t>ULF%dU=`eH`7QS8w*R4Q$wWASsDm_5m=_5Q$H0&sd>lHQ0b zq|cL+m;c_{`hyi+4J(KOav1;Z6ACuP~9N>RZOpd!OFvOP9!Zu*y8EJFZ;k?GSXlMsrk8-Sib zkzH>*us0BFSuo6DCeE;fm@Becw^@0-sR|fhus+qgfrklHCjxb#=1^y;laG z0*nkWL8D;3lT)Cdp@O7eSYYgc-nBA}GkBkzVIYb}2?JDBDPwrd1CAycsDZ!_DA_VH zybuH^R@VB01#6dB9z;crnu%aD<)-^Q%|P zTZM|KU%&cLhS!vcl)R^wU8x@(nh&NL^fUk%jkE_pojQ?-`Rj5?Z{0t1{OvXIq4yRg zQ>I3hR9{(kop;p#q7B0epbnk~=)S3``PHbwqPZ1ZLuxwkd`2Y(EgmZacFORQsQpOV`Kayo!pnBvl`<7kvx22QbYw%rCz(tk9m@ zq*{&&4}LyN;sA*mc5(6c-x`x4Ic0?A$A%Jp0R$j0&f2Xl&@uoU1^!-kQPoeO+aw(9 z`l15)g{DXVfPVi5vLpWAOi!T>T3APCfn{G%9m@b=l(`r;e?#|ZR?C(K~x@8N58fsoxFI)nS0ha)-UE>U>e5P6p z1~m-;hUM$y;^og?&2@uC88P`FAZPiNo!DAmUppTm+nr8u?b-{L{0)6X3C_5pww5V1 zYkN>w@RT#I?$zs-S3TS~=#0=iQBr}SExgcJ^^kd+t+z0Ll+Cl9w@q$$!-y*%*Z3tV z4bxy*okZ)$A%K;ogg1CoMg7|I4~B;~u#y%!&pa!7CA2~_-hBkEgXHAQFxmH(A0t0W z%7-g2;)WUvq#R)cNH#-0jTEGKZTD{7fMGQ*;^ZLMlIIH3qkoIvDqWzr&Ry4MhWwq| zw|R$WFJ273yNa?NiV=r7`^ns`v&;SSV%`Pohog%mJCrG<(G_uNyql{cMtdIRzA!?& zkUjm(LSYwI|DYpGUKNdxE)(XB=FliOWo}zrj&;K3uwGk7@`?oRuBQmTnUN<<^|!PFb-k&)D7i#-Cc#Q-%b@%70TON-TLZ&;!YMBOCDQqAT5QEPef?(CWmZL?1B%W=0#a5#yD zp^eReeQ!>+uVwxMA*tpzhYQ(Ge0*h~DL5*Z!g!FvgP&uMGn#;6g-UhBimqiB&Y!=@ z4tk1pbMwcNpYbDkO|vN-YTAG7jwAo(PTr5Z;)wLmlOmNCr|}#*CKP^5w8o54(0#{5 z7!SeSdFC!NY5rkY@lRkY6ZJ`K+rjf8zsH}m=gx7^@eWvUVz=W1m}KNnrXKOvjeDx7 zY`*nY@OArh=afco90bhG{o)+>(9}yny*9Vi7hkYoc3P)d69_x-k%vU!Y|nNhPU`~BLoGr#>cUILO>tw6( z7j9FmhG5yqOB35!|0B0s!e-yn&5*qqY0Nppn5eJZFksiei{y5PA3i*8t&&HQr8hBC zCG#N32^bh?am;`oC@~?gK|E%hKK&`K%;-05Np=7O%^$-Ta6e+dV~z6k{d?i>k(Jni zfIKX~y#(lcF&rxH{QJW!1-DgA zVI}Q_HIXf&@sUAgbee~#rPl;ue zMYvHEsuwOnW(PJtjFm(gS%F(!E5vQA_LYuiC!<;{trkeqK|CYThc{W54M++(?g^ zo+HXwXKoWb{QLD=z{X!X%)b%#n^2m7L20|W@c#E2Z)4x$u+6a)%TJ$1eOwk>E-YY; z*XN*3axKsKcr0D||n^95HCfNHow}~N{s(9+68YAO-A7_tgxeQG1 zY|)eSUDmERJy=NZy5^~yAUTVPxG;Iz8~^pLX;9mMSXfj>tq2KsGw&l*VC}#m7Cdwy zE8!`MX5GYO4^vHm=*|PY)&A|A$;`;$5gV)|1K6&|014M2qJP(}+bQ}<0%BaLdHtP1tWqO z!)w7fe6T9XVcc>WsDNC!LOXxq{J?`JJM=;)5iYPCMM`zb&KgZkBrpJ&miY}c;f9^xXQ+u#UM*TNkE zINQ5tPXT~UK>_VP2l{$aQm%FaFewkpl>UM|6zU|yo28+~UE<|=RH;PxCx8oa6-1e+ zNMmRQ#gZ*lxOz}Q(@21Gi#ilU_G{N3GC2)_dn-C;N5_(5WAX^rB_%F8QjcoP;d(o) zUVVMzYaJ37=Yetzq+>@1?Uo>gVq`ey4A-fspn%^?YUEO)aRi0tIs*bZ)9JBY6YV#I zUBDckS=tpGzu1#YUqVp_^vuVfr5j{C2rU3tOYp>S7FYhm@1`1jX2&JL|7XgQD{CfoNw|934_)wG? zZw7TRUn`@s1Cu?o5Q`ryEsR0EaATtZ7Dm@ckCIb(U1I;xaKz(Ml9I5oZ?8t_%L1>E zyT_+)pAe9XpF0rLM7B8e9m~`Kx15CY=j;CbVg3!Tn#tRvHz$u#;2~b8rFrt%{gxFU zUZDIjWr0|$r1T7^fiFcxP8*#LOm*V%vtdS*&rG2ijUbDL?kWt1SI9SHc(tXknSJyhwMwiTAN4Gf(o;C1rViYJV7?Qw^ zxG;Invus;8`HvkT5lx$tdURBg*-h2Cc{p;0J7}cmN3e^y1JfN6}H7TCV`g9Zamtp0X0Z4*-Av*BBxW=q`%~b+T zTY1$smoNd3gCGclMpV9E_dRFf8|d1-a|>yR zzs&#AH&w~(&Jz<+c-yey0oosp$4Ctg0GJOA%`iL=RZe2z6;pbP5t*n>nbjl7!c3k!%hjChIqJfyETdSJBSZU@l=>l4rSTZgfX znL~!+i5V>sgHgRDTHyyPSYVCtIKPj2(|H4Pr31lKetG5`cUW08+9-U1QDMxt&}>2a zVPx`e2UI3(lKJ!o z^2w4@LstBs)03%m{GN_>O*P1ssvHL5Igd#Z{0?FH;Wc^3E+i`d_bK|atnpc%il;rT_L zRuaMRBXel~pcPV#aLhH1FMa9o_;Vvl{MV(WzOXs?Yg}vgOTB442;?=*x4p0EDjf&M z2MfmAk_$iy7<XIkX5f@TVuvq0td%HU*h&{mLCv*q5WP$nZ zb?W2BJu5DDVlq$G6p4E8M*&?SurY|FUa61^8PMjwAK;e!$v+m454YQg)bnU%A z$j*|y2dBuy!~~iXq9bZ53DH$Rr1;~+#QE%pJAc05$&+j769Dg0)`2lUdcw*rk~9kl z{?1PVJU_XAf49c_*DVuhndoi_&%boYl6+M@->FuBM(5l2@7yaqTA|zu%XxTK8D_v( zOAwY+JxM?eHji#n@jUf^u>TbdEfz~d}gquLj zV@(Li(qSFM20Ue3kU$Z5AOv3rq+Vz3Xki;3szTc4Jm~frb6K3sl=2;FcOOu z$abf=Zxx!uL?YZhIe!;o{y;zm8ljOo5$hxpv0#ffL1-p)Q?Wk*lz|()Y{iPagmHEE zwr<}JefVa4d>-goTG}?aJ4|`m77MkGzy`~U69safIp%+)oD7klsnN<0?Q7{C?pC0N_B2K5pvYU@-^K0dj%&{ zi86#3B*;G85(Zj4A>`@6x%T8aVa^YMgX330^9ywB^dL{ik%zfiOnP z&5Ci?D}7Koxx7jK%rk^{FU9d|Apc{*(m1ZxI^Ll!-rWL829i5U;$21q{ndz)R|T#j zL2%_X9H*#331y}xCImhaejXS3m`j%|!S(_A2xSR(tnE`39?D>NAI`GvDY7j^Yzt%A z*z4N#ii8(PJ1oy5mevhp0+{K>p~2tMCJY(+uJ?aw+sWW?)(ry?OY(02Eo~ByzH+rQ zfUx^{%#8(%lVM+``{#vdAkbqO4`M4uo^AjwZ%cDC1``kuiI=#lELy~(x}K7ToCwfF zbESS`O^1w&6~ow`iK^>^sTXK>0AJ(xPh`w2)3+xRDn4t|d900d!;cung4`)?kZp6@Jg$X?u;QkF&Mi&v@1H&m4KJjGz{8EVfTms) z8yj0reaQohP+3FiqNeLTiF;`iUCTvnOD|Y3)!l3SbNeAXY&+q=()(y^0icBG93Vm6 zc#opp=Ow5r+=#vT6aEJ@wLJ$~Endrb2OO<3yQOIsEKSUawU%r0b zEAOg+OSxC_L&?|O3U@JqzB8>6GUWx5lC0pjQxIf(>D%D7_@cRe*oDC{Wjp?3 z`%*jq*fpkei36}7qYn%hhfdfrbP<#iYt{)9*0*ol#=sCzT1@nhHusA}L~`NS$L#nW zIrD}_@Q2j?Qj^AMYvWS#{`$J^(`MvqZ*1%q4P7&eOP6FR>of}!*FJsnPgrp-9y=tD z(VguWd*w>U`|UqQF1x1AV!7%VU&MCq9v(qPz8TS^EP{IFbM4vVrD^TEcYnD@OW5eS zjlpSkanw@!mJ=ssO{aLd6%d-^;3MyC=U(a1tum848XIw!i)egJ47W6 z_#z-G?QOS$QlVN@*cfYnzzm-#{qEgglID^hyUK3;TB4;4z>8^<#6S03atKhL*A}W} zD#%BXPo6)ARy_V}*{<>{5~nT?L%cDSk|aJL3kOza$qye2mla>#8kU`k_CUF+(y7Fb z1hyE#GOw%%r&EoD-Jq73zQJY8hil=yAMqu$*?Z3+GMKq09KdO5{rcg;E{^hn&p9E0 zg80l6GlJtlCM`;0p&Z>y7Y`FZaw51q)iO>VY$ zxC`7m=@{S!A|x%uVbk2NI)r`AVexrw6i4mtJ`Tm$ySd%6673`$hJ~5i*$vFN%L7JY z?)|6hjK`eEdLs{1w%xkn3M5SE^X5`RJGr>*Zr{?)Oeyg9sNgu>VUN?ktmLIFKcTbc zJ{(7(;;6hZS6y++#x)H6Sk7=y%Dpda;}&O+89J>|>y@6pVQflwhp#9e84n@e??hFU5uK8hH>2Og4 z?=wIk&RvepG)9kbFaXxBzutJtj5~DEyp*mE)3jqpjxY%}+k-B8n(l_3_2wl}IDhjhF^5yzorr=QbwVCn#umBFy4;+Pn<;wA`PoI%McjJQf6= z@}NQDqFA&v7!y?1m!Cx*Z)Wz0+!-Gi2Uo7K?9x~e9~vZ=?7yt5T&SfyJxtbLt<1Zj z7+-mtMT;QzG4WyGa#`Ws7M8sbRXMKxe$+m7NTy1Q#uty~(oS0yi%8JJ)l!c^m;Ki6 z0J;IG|Ag))Y-*^`A z0P0Q$?KGTG^Q9ld3qOvjj3ea1!l{9E%~Lt0fA>)u&{+ZJxvu$TWgRmDg4^|RVbTh= zcWml6bnM3y0rp~Dr0(pRSbg(YPxGZ?*3GbZcK5{Cnv1di3JR`0B{ZZJXAD`Vsxx+1 z;i>A@_}a;3ZwKxfm3ArB7v|ZcMLb(u(mpj_SX3=6=|&F-%^wj1On*MZd*mH1-H+-R zbbuT#SWv>0=hMfJS1n<;T*7dp`3-w2J2=b~l8zXPrRqrg%S%SWLIzDFdkqn!1j}!_ zp7KwzUbt`*M}vpyew^)=1E_4~yT!)aZ^$%IJGcXOZ?;Et=js6lE%U9?+&`C^-Vr>3 zCoriLbYG()N`GrIb|#I&-YDNC%F*6;ch!!DD!smPmQ7qtUzlRUhK!K~(;dy;858yI z${3m&G%wK`r6hypl4RnOQ9u(7GyQK4Al*7;Gp%H~bac$9ct*qFYu%0UH#cc)n8D;g zON$y_CV$2t1=n6*WDq}4$Imu3W#$C`gQD$QMlqO!UXtj7S6kDVJ%Xh#m;yu7GPRN7 zeg+jL_#$GPt&%=N47xwhaY}@esA%wapH3f7p~i1F6d@?~@4N8(&l$5NiZxMYvGwcx zRWpq#Fv@`zDZDMUU@&b4^QhkPsj3RRHDH#6UKP5qQ4w7yXn6W0T592#?YJVr2_Vvl zrJD4p9$y)N7Cn5pMDG&1?mj1_;f`K=kU($r(N!;6iDk5OdbKsnS0&xV5azP|D%B-W zx&cSbZ#WIP-h;^D9s!LzL z_L~|4=qJ4F#vV>9Y*n##1Gw#X>k8{Qm=338RcZu7vv6NEustq)VqM32U3;M!eA)2n z{DliU0=AEeHvREoNY1E_DQBli8on9dl2XK(Yi;~o`T6r~HF@5*P$6Ep@Ot*vP8R^( znNbkFI;Sfr$-wFI4oFVU985A1_pAH;eTDqss!KcVa995vB4y5u`oQlc;#--ut=9|& z#SEX?#rpLt(j|`t4B}aV%zrf4K>8q3BF>le<}+ql6cqP8>m>}C1kCmJ&fp^k1?$d{(`4+hocCnO| z-FoT3#t+P|?9{n4O@kb(<_y%>gxHG80e5a zI@Rkds0Oj&XbNcBu1yQg&3WKe_FM`HcsdHIJYVn5n^$g_$}u@GNX-=404cD2>k-+$ zTY+P-fk^G7c(+-MB?}}hnwFStHfLELasE7pk`Plkd)7AlZa0^mE`7euyGZNbui;Vt zS@FfqM=VQKxkq(Or;nvA=T_8v8k#Gqhveio&&rXo5|(NF_tn-|{_oZKNxmK~=$tdWMho;j6V%?-z&+P zE)_V-#7kHX)RzAo9hfb?TX_BU>R*lz`Xkh0J~njdOfBV(r%uhObzNn@W{3Z%F97r7 z9PQa7&Fb3B@t&hqgQ#o=3|$V=?;GbfN$efZx9$o0HKai=-tGT9VVX}{vP+p?UEOvH zAJ#K>xNlC|4dlF|RowYqR^^AcbFnOsapro3ej?UONXc?qck?hZQ7|yrN!Er!22zAb z8xp1Cnl-enSt-l?43H~v{yMwX0xeB9GD4-vGuhG4Ij)qBKzGa-3~&8t8vP!b&bv+t zM~UC~y%Z){6Tk$0HtrD~n>MwKDGmt@t#;Mp^hoG435xzU9{bsw zz;#dtdANjg`;4YfhrB^2n||pbvj$-SDC`CX5v;00bTDtIXVo2w0f@2`TFoLialdjt z78;0}$RZ;D*Ob>$V-hgM#N2VK6a<9f5ajwV^qHy3mQ0ijy2D zyB0H(Fb&{P28v+(z~38IU@mtjKYy_Fp~y(A z8{`blP_oe31BXG^75qpReulsxAXuXx(7a&n#f}fmHH{eEE?IKaKn*N4yEXU(WxQwTj(}$4dUtC?FeTlk%c+GI=wktFNFFl9 z=o2#CDuX~TF#BTH9}9dvzvK)kVMc>?n=4BH%K9MvcPCsN% znW!IvJd3T&g9r1%OrG7n$StP_%vp!6I~o_OQIdvaZQ6&kPd|h4*gQ|+W>V{V>QoRD zt&zoD`tt1r7G!<~b)TOO+iU#9*^iI(2d{F00$J@9Ab0Fzn;1i!a_j3PpzD-vF z!oviK=D)C{%M(1 zG3(QDs@;QCK;11EFLbnn%{Qt@1?1Xla~nB0r6b|c7ge~Ph0Ud|2)4raaBQ&DT9O`! zo>-2@!F=&f-V+tJsSKAA=?BOLzB$fN3}Z(Fqd{2@{Zim;cLv z6ZRUj!HQ`aJt)yvH3--n8XncRq#?)=Ozi`9(1&L)SkU>!9{^^SUoz>vFWbR0!oz#* z{i|D>*FkZHdxm>8f?N(6BQnUdLlg_CFn7L6zSN%_0G`1c<@5$P5=Ni~Y*|Sm@`quuBi}1oYm_~O z<7`)TGo;hF?UdY5c8*aJZ@Laeos#Qo}RQ=FMGtQ zBuh%0s0E$%AC$vx{z;27TuDaHR81aj;FH9^={>xrti-3nOyk>m11K9#m4}WN&us{OR+zE&tf3)+L&>lD>BaAzx@g{RTO?wIEdj4vR+ZeQ=n<)V^4ys5Q z!YO$(wLP2^I&j5tL5K&x^3U(fY}PWm zZOL!CV|88DJI^+mXO(n&-M3?pmtJY_r82-~Ss?+H+x)o3d@x&$9!6ux9wa%a;`Q}v z<3VnZ;{qG1iv!g(hEGJ(*3jJCY3RL~tMm6;C%dwOLHG8L_q)|J1`l4H7c`%X)Kgkg z*LhclSM#-ujN65UZZ8sgnj{d&C&pQG2^nLuq0ngW;;8rAsW9tWy0{d3_b0`I<{dA=#a^Xmdz- zc;4UE?o!?RXRNPmi7mgx6PuV|&zg#dC&vrgeU0GSuCHt?EI(FMxOL=Cm)kwo=j|(S zcUG7mKKzVqyKYCDgY()68;@0EC)Iz(6gjyx8N)~Er%zw}@@4RD2~K@+6pJlge*SEr zSUx-NK$ek6w-FncaK_jZO_bjO7b72p0@Y)tslE~-flIA zeADdXUyjGd&V}rg=G!4AX^3Q_t6bK$R*!~KQ(x=AH;an4$E}7j7A64duMfQr^-Ms^X=Fdz?1wz zCr4p1b$r}`>L@@oKn8pdk&^SP-(7cYK6 z#5Q^PBz;`Kuv4?LvZCps)DVX4J$kT+gF#3B{yv!hV9eRhjVQq3_gg_ zw_*1L6g*&A+7ZO2a5LE|N;aZ1!rkT_@CNsWi?R}WLXRGcSdo>G0AF*`syoty!oW@m zp=2XCvD9H?C|>cOJZnOj30rVMWedDsq@b`wdcOZlqDo3~LkwU%h+WaF|J8{q zrhjFsc9w3J(gpzUU!X0$={8tZt$Z6=Rq~cFXB`xV$$=e)r4aRQv^vM*m%O8eU9W#> zg{I3ZVN=RBJ+8p=<*2bb%c^R#HCbr}Rthf8&L^Q_5=_2+b+ofn=+&#axnUifEiu|+ zK_l@0UgJ&3sM+U)b?bFYEr!9|J_H~}@^>m+8O;4`XrP-947|&<7+@d6RWdr0a{h&d z9Y-0yqqb8s;e(R2aFOM60M~g+`;%2kq-;Tf*MmI~h|EA~coWno%siN%_1Ct|fvMq_ zx)+HAJ{Fs9QSS7gxaqXNrvJBzta*x|!K65a8&vb2GMdf;t9s7PDM8`06`CrQIru*< z99~ra?YdUj%UEC-?uh`-0L|1m%tbs44i3aO=phbI4WF2k?hgvO#|yXq`Z`NZo}LgV zZ2l=}_=q%;TkP-YgKPMfEv&s+<=|iv|JY3F%wq>cgQ#$@K79G)$(OiOV*h&B-uss< zTXrG##h)+F=T4tKSVspR&m%wc3CP%Ye0mtI*<+%lp?&ws@}_DNWO|B&M5Elp&ze6% zao;Bv1*nHiYP}B`?j=hKg_B z+G^iTmI|PF9)s$Z3$NU>C)Q<%n!LQc4CJA-s46I!v+5OrdUP~iq!bNU^aq%Y{9{Ew#{t$dQ&e=vG~E;DVkqb8|3&Y;WhYuP}waRU39 z({805+@sz<^v|>*L#7VSyZ!cr(ZFFtv!cf4hnT20etG`&Z|h-#R`*|x$=5j2yX;gA zA9u9wRMQYQe3ZW+27MTTORiyk-x8hKgHf@JMu?$>$YEEa1h}I zFb-!Uy>z{EwDy_5t9Od^rZ|tTWXND>|kw4Lur4}=7L+B zNm&`>zfT`N{QT{7yEL`Stk~((r|!1j(Pp`Dp^RY|NQJY5gM7%0ABz?~dGgfa@Z#hx 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�n|Gc;Vt@gv)Pf}(-e#>q!+ zK^nzy8qGJcxQDad2GWmuLPByeLd}bm&7|!o2ZHSMqZ^{^L}-K$!1FromN~fvVF@}a zII{dAD(UFar_4NWMd@g3Q)6_#CF`QGw&_iWW+%>kVGDJpJfsUsPQG99O!7$f1oKx$ zrOX`}lQD%enZ5-VCOVm_u(m6pDJx>{O4r8Ox1#&zidURpIl3#nA5vMlH?e-~xp`d1 zUA|AN^WJ{oMZ6ITx%s9&u|+Q{>rpIU%h<}VeD4*QD*N^k^2%g^J&lKaU2hnK2N7Vr;A;cB=OHOld`OC?GKqcx)`r zy)rrqS^?gg^ZJmuuzSZ2^g}5Vs0KK`_+Fg9L_US95XmCxHGxE1taC84b19-vbkc7R zOfd?417)6cTh*YF_33pqO^Oc{-J6tW5n*Y-8Nv@n=uhoehr0~SyhB5+RHA1QJxZ}a za-~9U@^qqZva`ivvD8D&j#0dH?wySDx3c$%e<7;F`qn=ASW+k>IWvgW5y`JYZNfBc zf8tJTHG?h?pprW&eEeOz0i3rc1CS%(Eb)8%5Tjv!w>V3SkN?JJj!-qo@7SFINY#}i ztF9E&dnk@riSDvTok^&TErbU$V*p|kN+Km=4U+ry?d!Fv@UC~`C0xoDITH13kjzm< z$zxw8BM})HHJn%%O$X5K;@0T3auioW&ge2rjfKpS2FUA7VCCO2<>{r+8Nz>poe z+`ra_h9CG_Foy24?Zbzy>DDa;XWT`bxAoNY6*h<&-!6*L@k4`Y(gS!hQ$OmP@uG_k03qph8Bm;)QCmRtsLtt-; z)KIbnAa{tgGN-rt&9mlOkdx_cZoVRT09-x}N8T$2<(t#%T!tHwtzm&>9ThwLT^a-c zys%&OhkhpdxI@Acw4kqFpY|$@poxZVMBzsx1bPqb3peKl<^c2>$5K*LXV5aC3GMH+ zLrP^3XS39l!%ToU&^VJ|{cuXu){?UEi{lJMwe>v288qSm=rmJ;nHDzFU;jMQJ@i;^!Bawing7&zkk`ym``74EYRzuW&l}5-bQWpKlQR;iDlh zp+E+)!%rh3pyBP?sV**okjU63GPQn)6+%Ds`lc#nd4bw1O@T@oh!{N9c)Ji-r?s6X zltxKgOi__tRE;jHjTl#i;_3ka*y*N)#GurcVvsodCci`FspH=#Hx6?j?ggE~tfc7nHECVh8)1?&K$MGMIJ7zYAkEbXRjeB1b9s z67Jmz6$!`#kv@JPDm)#SLVWL~7TQGlwX3bQ2T0RXu3U);KBH~!A@}nEIy*#AFX2hR zx&=6A7Qutt?~;9qSAlYw!+dC}6(ZE3sn07b{pZgY@J3dv_d-YgB=DDTgW=dyA?i%4n3ZO<#@1lW{y70 z5pf=c?61D*0jx=a%>nBJ_wweJ@jUl!08FI84O2fsIOyV2On%_hJymD2HDJycEUjp);mU1IFiK2crd1iTpR( zT7~AE#mLZ*$DQl(^4>iVywl!A3Kjm)44|~0kxH4ceCbjK*Sr{5U0gl#@A-~9Gc)@g zTo|!@tw~o(Lt#)Nu}DWJlH<;X<_^ZvSzh4_f5KgHuZg!zgow|802rc^ zbeBQl2V^s|;Yu#+)wm7Cu1fM%@>~7SkG>=f`$5cOi&6G?hJKOP+E?(;-Dl4*`8`Eb z%a6(nOa?gT8F=8-tSMBRHt?T^=LT^os#{ky5>$(ngb{e11tUp8Q~pv_ciF(PX}v@ ztP>nWI=Km4*D`lMmQl5hKEv0SwhfSe0C%!`U%1Ko2Dvjhvu&ND=%ns$%h zF#7KkK@&k`{O8!hAqKo?oKi6O_v^V?!D<7kij*RMvQ9pBAHenbA0No{DkHbVFpa+I zB$2~bz_bJyod*j|H-77m+kX6wki?Wy@ZG94^WYG&ZRIWuz9#ioy3GcmhN@L_tZ3tZ z7KUwq&z*zLtm~V(*w^=4ad*$Sy|Lpm@Cr;T^wR3tlNU-ZhS5R#B_@0%w=%~j+dnc@6%=4`CsM#B3}tBSBun> zg^9y$?Kf{82|tiV7J!}eU)L^e*gIRaQ~qF4m8RWR z9DY@zVhkwR&g4p*q}$Ga6qd*od)G5C9JwzBd@755-t|X_P8M)KrIS;Ca*PQWX|El?%h#ZSLJ3xO7iroev-e@-Lu!7sl8pq$Fs8VYDM#Kz~6x~2hK65NrPlf zn;bHesurm&z{}f^qvGFk*Vp{q8jFI98`>6xWrXmtMWU6Uoq-|n#Vtj z45R{PQ6%Byd!zQNq<@IofQH%FGtf_bemZ}K(W8nxBwX%F8kf&cm~`=zBd-nw)O^?M zIdlGcR}Cn2{69`5)iD> z-{Sb>b)fE3B%CHa>wOPJ9NWxpP;pT42<%s0*3T2~Oh8cO<>dILs_yTi#~N?<#Jz`l zDIdrRJ8p$~=2ZKs?ti=d1WL*!+7stqXJ-!G`1p9;0XO^{9YHMfP`+yE{VIWm*;`*< z<`1flpFe*tS+JnznjaJm9A%*WK+Z|`uz2}|_z5Zv&jv6G4YyZ7ncr!K*XDKZjfWg* z&*%o(@<^%-7e?V}`|6hG*7Dfu>YeO*{NcXkGY(}f1taT0he^MmS6&A~CQ41RW{Q8jf`Qn6N zdW-#%K_xPcb|w&@d8KMI-c6Dn6REf67q~KnFCB)zAlw$a;U$GN{tB&>u{C1oWUuyy zvy$Spckdd0HUxl%jq9fX7*Lm^q-Ssodtq zN18|-cQKh&`e?cljWVc*kz=Elbm1L$Bh7aMAcUYf>mD0zeca;n`XH&#JG(cnD-fTC z^x9R#g~b&Eteu-X16;4Yn{H&4!V)7NO=oz3Hj|3DIE_tXAmv(UpQJ0dvU+~!&L@gv zZ574!qqM1V%l793ksV&?L_L-A;dy4&B2Btu&5JbRu ze%gt$&z|k4rZj55$)G`tiQQp9ML&jGk(-UhMsYwmBp+nDSc7tb0OuoaxbbjR)X{%> z7^5RsJyr;lQqYZnoVN#nLEdsS-j2o1t5-gZni36$3~?Qp!g1y>b}XhZP*$0o93nOa zbN?|>DEgWF@x7qF>L-<6zYez;$`o7jOG~I`ELAK|hH`*BHhd#7_m7JslrdoK+AHjE z3YOU7)%+ls_UI`u z`43d9fOKm@LX;Pe%beU{njKVyO=EoMl3}1pB!Z`7e#<-R&|dtg@DOQr_`{G9%y+G2 zp$qnS78&g*{nwUI+_{c&-jJy3~a5>U`QmNbmd$H2_WjrZF*baa=6;^91Eufry%zaNwz}*~$Mi zFi^1ap~+<7<+#Tc)xg?=6u5cwZLoeIJ4J<`unD0#QGW4x2vOrg9+$!7epB%)xFqP< zPzp05VDzg1?ju?3?+^aU@!hd==gj-{+~;tqz}kASjVk;l!5og8V`E3VYB&yW2!YVx zvuM#D>Tbk4pna@XI8*6$AU2~%jpAgdapU%<;K%rW^Je*sLOxYNwctp}UjVjYp->-Z zPA;nngh>mzVT5)(b+6zjh6xnh1^y~n4J8pyd&ey41pisO6*fJ%tHApC4e$^6!8fDs=kszQVdW-{;jYbu%a0JgJJj*&TGJ#gTS(o$N60V7AwGSYngB}7{VdGh9d&W?`c9Pwb-Y4AM3bb^;H z6YOc0zu)R2_BbCvf>JrOrwu12QbQuNmAoxSg^FcM7P|TaDW3sMCyTeDP~kx37~-Em zF^EywJOC_ID_4?IH8g} z1?1hb?tcM8IO7nK8w$I49}W zQYNrTL1G!)G(Z~t{8@F;BH@|t-hG({jE|R?CCzloxx#29>pbMQ4-w7ll{Z+;}r|0O(vdz!A9N{@2VvhF2_E=qwPTl)RO2_pFt z=h%0Gqob0t@^16RJCTB-2cRFuf8*?esi>MMS6nsb<+#&fJgTT@Zn`1zE9$OD0=;R z#s&NOfsAla!DBK=CT?qQa`LbxFPY+BVI442%$~#Zg9dX9Fpc&|SjC`IN8C8RfI%PA zYMw5)xyc|A!;$C|4t$R}b5!CgD5?@lfX%q^sboN|X63KD0t|qFIl8Dv^JD-$?qnmEOw8vl1#75I!JQEg+yeA-92K@`p4 zDNIOUSs?hJt-rlvNFT5Rb%WFo+uHd(V0A|Dr+oIS@h&cFa*T&|9NJF2QO zJ8LWW%~n;JsP3#MgtB}sf%1HFWB8EJ}&P0>3=7I z-vgH0PjT8|;!W4!WUvg#k^93)^X9W>y%I|1RyDwj>ACp_G^$85XIa@uoD2Y)@yr>j zB?O<~(*?(!{PWdZ?g03=vo=T*BJuXC=Q+NOjw!t_KCb|E8Vu&3APapsGE1kV)ZEaWsx8ZKDJ`TwwrIcEI~DuBK#pt z54vAjN%@uI;FLL;QfhkEoX&e60OzwAsCh6ZX0V}a6MFc>36>kTEq>FMu3mcCr!FOs&7G+7#~ZUo=iJJU%`{_E!R6I<2isOh}y@}2M+}L6=Mh@H3&o_`4Kp77UVydOFISWT6G#WV|+7|+0wm~ zWWjG46X3JD6Vi^->3Qvi-36pMnES&Igd;+3dU6>InGUN7D@p!|8B}ue>EQZ%n0w(i z=#*xoW3R^ghWd9lD{F~+vU;wd1qxD&5kO-+of$;1ck$Yk_G{%h0`Zi(L15VL`a@}4 zdH73EnmhJ=n(ZwM$@$(rS_K?7(FpM2aibm3WNZEpeLdp@+0Pe1V(gb+Sl4=yE2Zwb zET}D$3J}EQ%a*|b6pYotzIY4lFJv=0CIx6zQP}J|t7xe~ERE;7mQ0Q){s4C*c<+4E znQm?m*zWj&!t;gD$177*XXHEO$OFKHoBr85DP7@nJA{|Gwgw8@@yNLh!Q~Ghs3E9u>Xb zjyd~X;QTfOYNa|UEU-S;KfdHOx@av;P4m*QPJU7*CiYajYu1cB*U&e)jFQ4(@`oY6 z^$6ys6axn57n|ElAyHf9(1i;Knlz7R$%dzNN+`i4+>HS-s@{S?XZOXaaFjmem^wYn#LO(E48G@Lfh03w!pz*DevyUEK<@Fi|O8TQ~wktnzS9ftRl)hkP_aYlshA zR4wHV1g?Ua$8jyaS!nm$gPIonq<9baSJeFg_v z(tesSq6q^nkTb1%VEA+=l*kJg$b6Z!!-OtkA?f9!a&|W@6Ji#qv#=hD7v&BvSa^bV ziZEUe>8!JRbythSh991p5E0STik-(YtqpV?vOya^IdJ8$ei%jHKeW{>kHS4b`z>ps&Ub((u&P*I(8~4X@wU8$<2aU+^6&@abr; z79paFh%Q<_Y##h1Qtzqdko!U(!?-tt(Mo}tp1oS*hhy$x=&J_1!j8$PP>~$Ias$3R z0n9n>Foax z$0C%x<7XhtDAmOKDxC>MTL46Ekt4K1-19Vg?qVyueBd$`2Cen=@X&jysYxBQM%ngc z$*kOI_N2TrOn(=xx6WnCln=+Q{*K0Z`KTi%8oomlyP@!?TgIOSEBU3BRzBV8csh2( zJVCm08eR;vAp4t~AKg~3%JyhAk{iHRVKy{9&aBS1t1Nm&5W$C!9x(KlgH*_>YFE%mXvsz zya@Jz(7SuYT>QCUidGxLksdD^fBr^&{U}!tCV}iJFi2vfKEeB64oeYW~~qbS+u>Cf*3|F zTu5=-YebN5TmEx?5&+?tE1l8hvG+iZ7}UYwa#~MH0=)cRH%O79zO5p2(mrvF{;I!! zaz|y;_#$s|nG0$D&h6W+_m5JCvA+O_6$g63N;!GSKD2 zKpIer;0u)cHUX?NUS_JCwyhH!O{%-K@&OUvbZSJX(4{OIcrk}OXK>tTyBPc0JIA2j^W&ov(ZGN&dqUWo(6smXPj7goMQx2DQff!=+(1?K(48l1;W{ zk(!!nGn7PT!5g+W>FhF>@eArqW_HwHenV3^L71NYx_{I_O^JE#6+GD>^H3S%pqCPv z!>IPfM|Muf+#tR^PZmU&!ia@CWSde za)!#RFA$Fx_ZWx(YlAk4w=3DZlux`uHxBKAmLzcLQVd5PR#ZqC&!PXn#KeHM>3ngH zExs3mYl1R&>38Z6HDjmV8!*JcJbAIi|M1Xp>(& ze-5O|5!D=O6LNx~pNcZyaslI;y;)}g&bM#fx|{LP={F87Mkbz`PNrBH3m&qwdxHON z&9hSjkz;-$5wBZhPPEK8+)6?Mm;>l0IEd8jjLb>YSaDP0zQ+1>hpQ%+u~6hWldvJ# zm%Gq7;j&OH&cXBa#`h~6-Y_}wVBWa zj#Q9Ymg`acQDi*9a~P^5JiWPnOy&ex?B?OoU;rFa*(C07pCr@h@xxLq2|D1VuN5?7 z>0KDX;WBtZo|A#>p&b)4BdqvT5dPti*hS(9rJq#U)|;T$jko=ny|J@#T<7PZ(2?}# zut3u4`sjhZk3lj%K>HbSHRj>yu*jUIv6n~v4-7M3eF+h5cr^)i5`yc@o}{L72eAb+ zYU9Tj@T7UqKs#>u;gr0#cbcTEfRH^(v@yMBw~tsw(_G;g1Bt=i=n=dP8Ch9yZ~6{! z)%2Qnp+7$sM}uk4%@Z;aVpJ^e_N<%TP&(w7F9Upi<*xVipJ<{Wab)lAYb!9h<&(qa z<3!-?q|B4eb~l1Qb~`c@7zfifbd;a!MaF7MtVQH%g_U$HAf0m=EBFtfTZj7=_|6Xe zcJsLVckjBc7%ijV2T~3epLfuk&r!X}ZWhWH;7PCUhwj(&J=sm9i11V$rYVoEetFP; zp~*es9m!v5XgF}c-pgT3x%;sKh5Ze6szrfJnVIy^d0i|Uu>GdJi6`?k8gvt7On$gr z>*{EjhNdcS@NOI`5h+=e!a}6v+V65$EbrLKl9?mRnDGI!dpdPCv~cQ`*&Ui1Ox(R) zu&dSvW*+c(lN{kx0!z}1d5y^A49UzahO|6-w5*%Px3n4{BBhJ=<&QZ6q4H0U&x_gu zTQ)7N&CG1Un^@$U@3+6$NX6My1&jaZ*RPbDpKR@!kDlN9zO4f%sE{#mk zBs#i}5>st9etqyoLNH>B31@f)SFPCR%k~r*nP<3cGK}o4gx$miPJ7V9td_o>6P7I- z7HIuGmSQVXo-NfQjd=?#>K5A6&_C_3pU)0#|hONK^fBf*UYkzGH5{<1(VpzgZ zQBhrSp{%l^$GpxhBU0jIWGf0t?&HUbhQDEh)V-562@Jm!3jNX9Ii9)#nk47*U(=U2 z&r2U4+IoNTpJci;Zim11CkatWg?Y62@w)=PL5I$rr{;lF^L~HN?Avl3>Hwl3ot9mb zyyU+OL1g)Zh?PNuPH_9v&`R8AiQ8;kgipA&EdjiK&YS=;9&QicH%o@jHMp$#vzX=p4cFSXg-JKx0uC@ssMFMJ9eMQqVBEum>kqG)&ub=U|NE&^z{+j?S&I5qX>hO*5dcb+Y-J2M__wEgqh1Hkji1*8CB9qka>&U;I6){EI z>+cM7?uKcln}wBp9zO|gvBH`u_zTesubMz12I{$PcGwKE$!K+8XVb)t4Qb9-+W1Mv z7c~T(o9OtCtfQ}ah1qWkl=223$9zPPuPTjPL zj`&6wbIK2XuA>(9Q&MSb7!(43O5DtdZ>3yEP86uJ^;O+8`N>Csv>)BLK_HVu%#=~Z zK1*F)yCj!UAj<8n!itxwkCRFuXp!d1BIfpmBE9-WHk^2wfwXV^Ii+>?9afWrnev}8 zJfl$F)bdN{iAa_eii468PW+!w#k>c;IbdqWh!hq-r7?iTC zfSnIvnL&$9fx#YM7{K?bzV#S1JL{X>3oad|eOw}#V{|OLMEIdKE>FBALUS?v4h$Ti zTm-ztdTf2LV$>)Z3#AUR#pY&aAo3nbTK0+1{qj^Q$nxN(`|V*E#6kk&g20hgn+-O^ zG@Mj&{wXnJOa`Y4#1^Ue501Qo9v2zj_3s~DUR(R-4FXC|X_|fx#&0v3)WfCchUHVG z^~0imHWOCmBJNRcQ?DLxK(P2wYI0@1rx@@VZ{I~`lP^te5&LIlGS7cq;JF(RIg z6U&pgNU>e%D6X6%&z|c-y4Jh1Hs(Cc>=-0T76)>B0mtzb_z9}TuOO96>=GH-r%b?%YXnLhet6KXD8EwejPjBSb3eL6Ylzh(Flcd>+bt4(@|!k z8HI`T>hbMuqxK6k26!R%iJTv-Ts|{73FjYQW4XMrn)*wT?7L0Z^1ju#sq=lZ6diBV z_W{bZ%GDh{c1-rHq}Yd&7qUlzPfkJa2}YVQ)dGR>!qO^R`y`j)pnK4HPewl^wUJeAxR-enHmD{uIMvwAfX{l#>f}GR z_pY7TQU@ocaVEj+dU33?QNMms&WFfHdi(AjvIWX$Rp>AypLEPSN(J_+W3V+Wzrc zvZM+PX_qcFU~UMtGbbbW{U+ET>R6g`;N|2bjmschyOt?Ggm5EGJkQ{Pi#x>?deL+b z(Nb>Qkg#bJ-dHe?;NsC|m)8;sLZl$>9-Ix(?$jehHfefYx)6}-t+f|vI`d(!Y4F38 zl!tIqx;^5(|ve4Zksi3{KEZpAU;NWH3NK65X=UrH;&>nCex=IGT`f-wV z2`S0w^;JY%I*K8lW$H-yJM`;$d3l%%0Jt)d=S-s&!xnkjhMPQCAm1REG|*fW>bW69 zhrVNe$#9C&t@2UgB!Zm0{TSAA5mlx1;zrlg`tsD#r@;Y1%#C>pN(6*&`)xO_Tep9h z+gy%aOxIBQ2DSb~WAv`Ln2G-=61TYF@ zp~tgNqNkyi!LmT6QI0U^q^VQU`UtcKVm&ar zf5Zuh_X!1ZiUUWqJ5>fg(zH0duF2wb@1M0U^dgRqCUH}^eMIizGDEuxe!wveph&Vj zDDS6&q?+>b296>o95*sDeD+wOV+zxuTHU@~5k?AQe9S1I%Th#ePPb{ zSJS6XU3g{nOVAS@Yy3QDA_Q(?iFNG_FiVbnyOWS8ew@?eWUjFM49W{Nm?)yfJSQwa zUWfA<9V$$uhv*YJZMlOC56FvwXJG5kt`TKfSvGjPu@&=6MTKMz{M5@UDz0p(LOSb@ zB?Vg)#vUEiRd$~SUL5-s7`TuJrysP$zX5&OP~c(vRVpF^E``rlMKhMWqnDgm z5GCn)o0jM!!yZus;22U5ejzp?tt0ePEdM?xnDVdX;UKokH zxfz)qk~aN_|BT6k%kqEC%0LGwHJM@Uw{3!nNTvVguTYCPD{#SKm_4bEVD|>o*wWR9 zM-V)VV+us z4l`HUA_rrHe)En*f!0FNB@31tH_lkSxp5D-NuSmxDc1ay`n{+GVQbI z^@|r2Phj#_sR$^&aV>=6nUNvn%(<;zjlY*LVlrt<9t^UG_Xq=I!LszcD#aegNdwRR z0B}geN%LZw@-nnzJZl(240A6uGmOJ&1N@75EyPI#EFok6Qy~h9a=oW)`hvHK_z8IN zfN2MCe}OJKipec!QX4U$G~1_P0!Sp``8=u5prHH+P(i4K_kH7f6XOIk1Ai6Rzl~q_ z)>KzxMB7bUyCieAnIdXvP!|wE%^m99x=HWr17j>><9R090$E!UNzZPRJ6D!F_T>u` zCra#!9EA}4zc|VF7I^s)7CdQ^T#B#HID|J_?%@}# zCUp;_(A@mXr*Xqj=CS6WNu#bK7J*6~X+BFAhj+jRdY^&IM_Tq?`}xTc`b}UvnaLQ!{XC`(nW*=kUl(Ehd`~$_i zu=GHv1$n^Dtyi~h;3x*FdE79%KbhrIIG~vH7b|Ct7600o{K^lABe)Y4sKUu_bPN1d z3ME)jG;CaJscY^io@~7VL_w14=<9<@!G zEagx`Ix5;k?6;v)BLC?oCklt zEWSn7*RO!vm)^YSLYWT~3BHX^mL7~+RZ#@vaU6ADE)#CoRFHD8mp26k9+vo48l4wB*BL+p@NZk{q|$Q#{rfRcf(=xq+rdy-+8tX*r)RsS@|k5_2N0yp z?n~(=%*h@fEXwdP6^UtyIri51W6g?>mxJ5a2OUOs*>7txcrc(|&FNR;R4!A^f#1Uz zM=;2eXk7h5oAw(24XAx^5FzJ#b~Sd90s7rr0C;{6VD=VtMF5XMbUVmL-)MUd1c-Zjaa{IabY*klppu)iCmfWj} zy)koQBIGnszGH=H*oZPp>(pJj-yybv~mb|ieNo7 zbsU$A=f%U{KLZLn=humu1E2VCs-fdQA;cv@x$fYenYBRR|Crcmr>hl3U2 zfI;bB+FTD21^&X?2@*shK66!SrzwBH&! zKyHKq((bR0KV8W)%jCuK+pfvSvBiXeJ$%rhX}pTosDuYg4J%8(e?Po$-_;cbT843) zlbx3vGdO}yk_j%yzd~1Mz@S7|>X%GaLI>g>&DGwd0tTpOX@AgTd zcvfMF@D?}};AU^Lxe+&Aa5mzpXE6Mr63Y&O9nU3Z(vFr0hgU`KxuxpQjL=@wYuHVl zI+D({{s%unLy>;t#s)W4t(ez?_29b)XSIgOBUvoS}{z=*^o!~YGm3?i-tYzN+)HHViwiRbEN}EHcven<}oFe3bS_e>;Y{>c}of3n(%^OnB)^6+a2 zJvLsY4Zrw4TynXXMGF>as;RwfAH>Y6`i95}XOU*Ux}N;ASFi3>c*V_Pl9`t`1@o?~ zT&a*%6R$-Bv}R{#E6U15lojMDEiIguau`oiDvF>3yR)4!$vSL>-V(gAX+yki|6W_O z_|a;mZ@&g0-k&i8x61FZxdoH5$MDZu3ZP))WO~WLxONy_HDnO^u#}=|@M3GViF&bM z96t>IxhAX|s8d*1f8G!6?)jHSX73fz|Jl%mgiq}WHP1EGX5<~S-rCy1T;etlc8foa z>QCO?8nc{=(P_!a*N2OG0F7WTf@x#V!ewo=R`hQ&VilA4UfsK=VM0eA^;h91Fs~iE zvhfZd-osetXmaDY|Cyh;jpkBkb_aA_yLL?0U5NRkmqd7n+xG7=N>V^@HdFLwzrYYH zo>TS=#=kNSRdo7lsn1#%D)&jamGSiX#c&%P{PvXXyLIG5t(3~b6ySut0o(SEhK59F7BqxNX z!R@uB1yNZc3cJ~ZB^G_4~g)Jni$Cl!%w zMWXr2C&_I+^x9e|)tEXhPbas<<^*W#Dd+5D0ZOAa0HJL#9)m;BS8TBLh7 zH%*@!8dhH;D!wF)#s2$MUmSi$7>WGPuaeP!8KnRBhYiyLtLS@gFI)G&KT%q^fFgc$ z$?Wr!a@AOX|NY7u=*Wj>w>}RGSmvy8&-Lj8 zjlA|rU~`Wvyf_^3S!NdT_;DK?cG&K1evjqD3^I+{`gnBt+t_C>9gOf5-G1Aub@pvr zyn9&&_o3|IKz{a&sU00*rt4!TY7a&@v6EXZGIInY-mwhxce?Hkt*x1@l9pC7ZU2bk zz{Wyi@PZfYyEt*xs-lPU*S{;yMFtk!@{DX^`zP;D))dIibgDF&2cUA2#?F3kWRa@g?Zwvlw?Kj9oB z!|oO(kinivG9yv~sWLz~9TzV22LW*G4s~IGzP@nCbJVJcu+3(}7nD&zMhq5JAkqx$ z*yhADMA=jL?AaxjnP&xGb6cqW?Ab`$xm9#;F0b24xj)GZb^`jRoBHnr2E8%pjE zpHqc`>s(R8)tbT|KJk~9RGP>hb98c=ZWz~gewkS1Ze;@l&f8Cehs5XqX_>NW?OMlF zuOBB3({G1LiF8T5F0olMYu4gEUn>g*D3^uSE*8Ewm)%`_CY;G|}*VM|BJ zW)J7zS!1o68ysc2Kr_WIW@kBASoRER zU>3Fitn2&p-OHDt+UfnMJ2`UkcD?vmrqPsXcT+LZ=RcLSl~esig~y5f^BU%y6G08}RcSYRwfZFzXe1z);+nTk7r$*@TLH*!Hw zo)IT~06p({`&YX100!L@wy217<%Nn}paD_r@bCyw&FRx$fKo$DI!io}A`m!!dmgkJ z_~)v{6ZO0OA!4&z)baMOziaTK=b6Plp74yu%G>j9pYE<4ri1Z@{NN`^?@fd9>-3~u4RpFMgK zBV%KaAePDxhGZ5H@TucB<;^;uA3Q%f?@nLM!~>1q8**cs-((E`oENvXrHhu0N@I0V z!}iAQP>k}HUP=lc6PFl|P3>~bL9%?>j!p;y^8NiAWNQC`gi(P_0kzKYf&R^iftTIe zz6zoA1nq5%fT*RL7>mDn?V&&O%enbOeB{34|MjJ5JmwS8@y6#bdf2GkE%2z@J8%!X z`r7xGcI3Dgy?F!TI_==+KG)q=+%Gr@orPM8ik)v~Zss{aE2bpPrzE#t;kC;JzBco< zhZ-@ZrN<6vYQ|{iI<de#DtGPSkv3CoZ)Wo|AKU>@{v11X}V}_ zd|E^D;f?*55zi2{N4MsEg@S0T|HzEd{?fFY-ao!xxqh9TuTK{jr~STGvi9!1F$c#4 z9>{Eu=#^QrJtp|si@V6}wT=}-PqEXBrNx;&*KrKu=ll2lr9(Y$zP2>IxNhEsiIkOJ zzkJc^GR6Y?^2FioTXzJ0{x-U8jw=Jh=p9$4*<`(gs#Am&w zkTL=WgE_o{!hzu)js%4hR*!e~WOaD^-J%%0A?94UV#T~gi`daQ7m)a0OOt;1zgz$p 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 U?XC8}@k@zK8=UP6?3nTY3$l?sLI3~& literal 0 HcmV?d00001 diff --git a/rfcs/20190630-tfx-on-kfp/tfx-oss-xcom-passing.png b/rfcs/20190630-tfx-on-kfp/tfx-oss-xcom-passing.png new file mode 100644 index 0000000000000000000000000000000000000000..d7f249466aaa6db855d4db0dfcfdfad93cbcb33d GIT binary patch literal 55791 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 Rl_oyFyo{oBmej3#{|6l6Zb|?E literal 0 HcmV?d00001 diff --git a/rfcs/20190718-tfx-orchestration.md b/rfcs/20190718-tfx-orchestration.md new file mode 100644 index 000000000..c786664f5 --- /dev/null +++ b/rfcs/20190718-tfx-orchestration.md @@ -0,0 +1,558 @@ +# TensorFlow Extended (TFX) orchestration and configuration + +| Status | Implemented | +| :------------ | :-------------------------------------------------- | +| **Author(s)** | Kevin Haas (khaas@google.com), Zhitao Li (zhitaoli@google.com), Ruoyu Liu (ruoyu@google.com) | +| **Sponsor** | Konstantinos Katsiapis (katsiapis@google.com) | +| **Created** | 2018-12-18 | + +Note: This design document captures the initial state of the TFX design as of +Q4 2018 and is being published for historical informational purposes only. It is +not a representation of the current TFX design at the time of publication, but +rather the initial design document as proposed in Q4 2018. + +## Objective + +This RFC documents the initial design of TensorFlow Extended (TFX) using open +source orchestration frameworks, and defining a Python-based configuration +language (DSL). + +TFX will use [Apache Beam](http://beam.apache.org) for data processing, +[ml-metadata](https://www.tensorflow.org/tfx/guide/mlmd) for artifact +management, [TensorFlow](http://tensorflow.org) for training, and will support +two OSS orchestrators ([Apache Airflow](http://airflow.apache.org) and +[Kubeflow Pipelines](https://github.com/kubeflow/pipelines/)). This is achieved +using a Python-based embedded DSL +([domain specific language](https://en.wikipedia.org/wiki/Domain-specific_language)) +as an abstraction layer between the user’s pipeline configuration and the +underlying orchestrators. User pipelines will be constructed as an +implementation-agnostic Python library. + +## TL;DR + +* TFX will be tightly integrated with ml-metadata for artifact tracking. +* TFX will run on two open source orchestrators, Apache Airflow and Kubeflow + Pipelines. It will run on a single machine as well as running at scale. +* TFX pipelines will be configured using Python. The pipelines are also + portable, allowing a single pipeline to be moved interchangeably between all + open source orchestrators. +* Wherever possible, internal TFX code will be reused for the open source TFX + version. +* TFX will be extensible and allows users to create their own components and + executors to be used within a TFX pipeline. + +## Motivation + +### Architecture + +![TFX orchestration](20190718-tfx-orchestration/tfx-oss-architecture.gif) + +### Overview + +The goal of TFX is to allow external users to configure and run TFX pipelines +which are similar to those configured and run internally at Google. The emphasis +Note that these pipelines are smiilar not not identical: + +* Internal TFX pipelines are configured with service configs (protobufs), + while external pipelines will use Python. To achieve parity, the Python DSL + must be serializable into internal TFX service configs. +* The internal TFX pipelines primarily use the (pubsub design + pattern)[https://en.wikipedia.org/wiki/Publish–subscribe_pattern], whereas + the first few workflow engines targeted for orchestration are true + orchestrators. While the pipeline DAG and the executors can be expressed + using the same DSL, the execution of the pipeline will vary across + orchestration and pubsub systems. Given this difference, not all + functionality is expected to be portable across orchestrators. Ideally all + deltas are “system internal” and do not need to be exposed to the pipeline + authors. + +Users will define their pipeline using the TFX DSL and a set of Python classes +that emulate the existing TFX protobufs. The DSL provides methods to instantiate +TFX components link the outputs of one component to the inputs of another. The +pipeline must be a (DAG)[https://en.wikipedia.org/wiki/Directed_acyclic_graph] +and cycles will cause an exception to be thrown. + +### Orchestration vs choreography + +TFX and Kubeflow both follow a runtime design pattern generally known as +(service +orchestration)[https://en.wikipedia.org/wiki/Orchestration_(computing)], which +is different from (service +choreography)[https://en.wikipedia.org/wiki/Service_choreography#Service_choreography_and_service_orchestration]. +While both TFX and Kubeflow have eventual plans to support both patterns, the +initial launch for each will be service orchestration. + +Note: For anyone not familiar with the differences, Stack Overflow has a good +[explanation](https://stackoverflow.com/questions/4127241/orchestration-vs-choreography) +describing the differences of each. + +## User Benefit + +### The TFX pipeline configuration will be written in Python + +Python will be used for the user-facing +[DSL](https://en.wikipedia.org/wiki/Domain-specific_language). Of the many +options to choose from (go, protos, yaml), Python was chosen due to its +popularity within the machine learning community. The TFX pipeline configuration +language will be called “DSL” for the remainder of this document. + +### The DSL must be portable + +The DSL must be orchestrator-agnostic, and the implementation details of the +orchestrator must not bleed up to the configuration. This will allow users to +easily migrate their pipelines across orchestrators, primarily from a local +implementation into a managed production cluster (for example, Kubeflow). + +### The DSL must be extensible + +As this DSL will also be used by Kubeflow, the DSL must be able to express +non-Tensorflow pipelines as well. The TFX components should be interoperable +with non-Tensorflow pipelines provided the input and output types match what the +TFX components expect. + +### The DSL must be declarative + +The DSL must focus on defining which operations are to be performed. The order +of operations will be determined based on data dependencies. The DSL will allow +users to configure individual components and reuse prior components’ outputs. +Some orchestrator-specific parameters may need to be configured via an external +config file. + +### The DSL must support existing TFX pipelines + +Wherever possible, the DSL must be capable of configuring Google-internal TFX +pipelines using the same APIs and data structures. + +### Component execution must be portable + +The execution of a TFX component must have the same semantics regardless of the +underlying execution environment (local, on-cloud, on-premise). This will ensure +portability of the pipeline between environments. + +### Multiple orchestrators need to be supported + +The initial launch of TFX is based on Apache Airflow and Kubeflow Pipelines, +both of which are +[centrally orchestrated](https://stackoverflow.com/questions/4127241/orchestration-vs-choreography). +Internally at Google, TFX also supports a +[pubsub](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern) design +pattern. Support for the pubsub orchestration pattern is intended for the +future. + +The DSL must be serializable into a variety of orchestrators, including Apache +Airflow (Python-based) and Kubeflow Pipelines (argo/yaml-based). While this does +add some constraints on the orchestration functionality exposed to the DSL, this +is essential for portability as we do want TFX to be extended to additional +workflow engines as needed. + +### Requirements on Orchestrator + +The underlying orchestration system should support: + +* Linux, macOS and Windows; +* Python 2.7, Python 3.5, Python 3.6, and Python 3.7; +* Running executors/drivers in any language through subprocess and/or + container image; +* Local-mode and cloud execution environments, including GCP +* Support skipping of operations, as cached artifacts from prior runs should + not be recomputed + +## Design Proposal + +### Pipeline configuration + +The pipeline configuration allows users to connect TFX components into a +pipeline with a high-level Python SDK that abstracts both the TFX protos and the +runtime environments (local/cloud, Apache Airflow/Kubeflow Pipelines, etc) from +the user, allowing the pipeline to be portable across all supported environments +with minimal changes. TFX leverages +[ml_metadata](https://github.com/google/ml-metadata) to provide a fully +typechecked system, where the inputs and outputs of a component are defined +using the existing TFX protos. The full definition used internally includes the +artifact names and expected types for each input or output artifact. The pipeline +config will also perform type checks on component interfaces to ensure that a +pipeline is well-constructed. + +Because TFX already has a configuration API for internal usage, we will annotate +these component definitions and use code-gen to generate Python classes for each +component. + +Additional helper libraries will be provided on top of components to connect +them into pipelines, which can be executed on supported orchestrators (for +example, Apache Airflow and Kubeflow). + +## Detailed design + +### Component + +A TFX component is a wrapper around the corresponding TF/TFX libraries, and +manages existing pipeline details such as input type-checking, local/remote +worker execution, and metadata publishing. While users won’t see the internals +of a +[TFX component](https://www.tensorflow.org/tfx/guide#anatomy_of_a_component), +the components contain the following “sandwiched structure”: + +* **Driver**: The driver provides a pre-executor hook for both TFX and + user-specific logic to be executed prior to the executor. The outcome of the + driver may affect whether the executor runs. With the internal pubsub + design, the driver manages the worker scheduling and monitors the actual + work, and determines the inputs for the executor. For TFX, this task is + performed by the workflow engine, and as a result, the drivers perform a + different role. In both cases (orchestration and choreography), the driver + is responsible for checking if a cached artifact already exists. If the + artifact has already been generated using the same executor logic and input, + the executor will be skipped and the cached artifact will be reused. +* **Executor**: An executable, Docker image, or Python module; including + wrappers around other TensorFlow libraries. The executor focuses on running + a specific task. An executor performs the task with no local state + maintained across executions. Filesystem locations of outputs are managed by + TFX and passed down to the executor via command line flags. In some cases, + the executor may execute functions provided by the user (for example, a + [user-supplied preprocessing_fn](https://github.com/tensorflow/tfx/blob/master/tfx/examples/chicago_taxi_pipeline/taxi_utils.py#L106) + for tf.transform). +* **Metadata publisher**: [ml-metadata](http://github.com/google/ml-metadata) + allows TFX to register the artifacts created and executions performed by + each task to track provenance and enable further analytics on executions and + artifacts. Component inputs and outputs are passed using artifact ids, + ensuring all execution and artifact access is properly logged within + ml-metadata. + +![TFX orchestration](20190718-tfx-orchestration/tfx-oss-component.gif) + +The component interface is meant to be extensible to allow the open source +community to build additional components (for example, community-created +components for other machine learning libraries). + +All TFX components must have strongly typed inputs and outputs. It should be +possible to connect TFX components with non-TFX components provided that the +appropriate inputs and outputs are equivalent types. + +#### Driver + +Driver is an optional part of the component. The responsibility of the driver is +to resolve optional inputs to the component when some inputs are neither +explicit user inputs or outputs from upstream tasks in the same execution. This +usually happens within continuous training. + +Some examples how the driver will resolve ambiguous inputs: + +* The trainer component can be warm started by previous training’s checkpoints +* The model validator component needs to resolve the + [last blessed model](https://github.com/tensorflow/tfx/blob/master/tfx/components/model_validator/executor.py#L38) + within the ml-metadata database and compare its evaluation metrics with + current model +* The pusher component needs to resolve the last pushed model to avoid a + duplicate push to Tensorflow Serving + +Drivers must implement the following interface: + +``` +def Driver(input_artifacts: Mapping[Text, metadata.ArtifactAndType], + output_artifacts: Mapping[Text, metadata.ArtifactAndType], + execution_properties: Mapping[Text, Any], + fetch_history: Callable[[List[ArtifactAndType]], List[ArtifactAndType]]) + -> ExecutionDecision + +class ExecutionDecision(object): + __slots__ = ['input_artifacts', 'output_artifacts', 'execution_properties', execution_id'] +``` + +It can use the `fetch_history`functor to obtain additional artifacts by type, +and augment `input_artifacts`. Drivers should be stateless, idempotent and +side-effect free Python functions so it can be easily ported among different +platforms. + +We provide a _default_ driver if the component has no unresolved inputs after +pipeline construction. This usually satisfies simple one-off pipelines and can +reduce the barrier to create a custom component. In the future, users will be +able to extend the default driver with their own custom logic. + +An example flow of how a driver fits in an orchestrator: + +1. Orchestrator resolves ml-metadata artifacts based on inputs from upstream + tasks or less commonly, “external” user provided URIs; +1. Orchestrator invokes component driver with `_fetch_history:_` + * Driver invokes `_fetch_history_` to fetch all `_[execution -> + List[ArtifactAndType]] _mapping _history_mapping`._ + * Based on `_history_mapping_`, `_input_artifacts_` and + `_execution_properties_`, the driver either + * decides not to proceed to execution and skips to the _publishing the + output to ml-metadata_ step below, **OR** + * decides to execute, and then augments `_input_artifacts_` and + `_execution_properties_` accordingly. +1. Orchestrator records a pending execution with all the inputs in ml-metadata; +1. Orchestrator invokes the executor through Python/Docker/etc; +1. Orchestrator publishes the outputs and executions to ml-metadata. +1. Orchestrator records the outputs to its inter-component datastore. + +#### Executor + +The TFX executor is an executable, Docker image, or Python module that wrappers +and invokes TF libraries. TFX will use a common executor interface shared across +all TFX instances and add a thin wrapper on top to translate ml-metadata +artifacts into the common +[`_Do_()`](https://github.com/tensorflow/tfx/blob/master/tfx/components/base/base_executor.py#L51) +function. + +Docker images containing all of the TFX components will be available. The +image(s) will have 1:1 mapped versions to the underlying PyPi packages. This +ensures that an executor always produces the same results regardless of the +environment, thus satisfies the “Execution is portable” requirement. Initially, +the executors will be based on what was shipped as part of the +[TFMA end-to-end example](https://github.com/tensorflow/tfx/tree/master/examples/chicago_taxi). +The long term goal is to open source and reuse the Google-internal TFX executors +as they become available. + +##### Runtime + +Common logic shared by various executors will be provided from a family of +Runtime classes, to provide an abstraction for the underlying environment so +that executors can have consistent: + +* Beam pipeline argument passing +* Initialize logging configuration +* Optional cloud-specific connection and runtime parameters + +#### Publishing to ml-metadata + +After an execution succeeds in the executor, all generated artifacts and the +execution will be **published** to ml-metadata. Only published artifacts can be +used in orchestration to avoid feeding incomplete results to downstream +executors. + +Generalized publishing workflow: + +1. Ensure the executor returns with a successful return code +1. If execution failed, mark the execution as failed in ml-metadata and skip + all dependent downstream tasks +1. Publish the generated output artifacts to ml-metadata +1. Associate published artifacts with underlying execution with the component’s + “output” attribute for consumption by dependent downstream tasks +1. Mark the execution as **DONE** in ml-metadata + +#### Type Checking + +TFX is a strong-typed system, and type checking inputs/outputs of each component +is essential to the correctness of the underlying pipeline. The pipeline DSL +supports the following type checks: + +##### Consistency Validation + +Consistency validation ensures that output artifact type of an upstream +component matches expected type of the dependent downstream component’s input +parameter. This is implemented within the pipeline DSL level by explicitly +declaring the expected types of inputs for each component. In addition, all +artifacts generated by TFX are also strongly typed. The expected inputs and +outputs types of each component are defined by the internal TFX API component +specifications. The component specifications will not be pushed to github at the +initial launch, but will be released at a later date. + +##### Parameter Type Validation + +This ensures that the non-orchestrated parameters of each component have correct +type. This will be implemented by generating type hints in the codegen, allowing +us to integrate wth the +[ML Metadata’s Type System](https://github.com/google/ml-metadata) and support +more powerful type checks and semantics. + +### Pipeline DSL + +The following Python libraries are provided to connect components into a +pipeline and provide pipeline level configurations: + +* PipelineDecorator: A Python decorator using a context manager to register + the pipeline being constructed in the function. Possible parameters include: + + * pipeline_name + * User defined inputs: + + * inputs for + (ExampleGen)[https://github.com/tensorflow/tfx/tree/master/tfx/components/example_gen] + * Hyper-parameters + * user defined functions for the trainer and transform components + +* OrchestratorParameters: A family of place-holders to capture orchestrator + specific configurations. Each supported orchestrator will sub-class this to + allow pipeline users to configure orchestrator in the desired way. For + Airflow this includes: + + * ml-metadata connection config + + * scheduling_interval if running continuously + +### Orchestration + +User pipelines will be constructed as an implementation-agnostic Python library. +Helper APIs will exist for the two targeted orchestrators (Airflow and +Kubeflow). The external interface for the users will be the same, so it will be +trivial for a pipeline to be moved from one orchestrator to another. This +satisfies the “DSL is portable” requirement. + +#### Apache Airflow implementation + +Airflow workers are named Operators, and Airflow supports a +[variety of operators](https://github.com/apache/incubator-airflow/tree/master/airflow/operators) +as part of the base install package. Of these operators, the TFX components on +Apache Airflow will use the following operators: + +* PythonOperator will be used to execute TF/TFX libraries when the pipeline is + running in local mode, as well as any user-defined driver logic specified as + part of the pipeline. + +* The + [BranchPythonOperator](https://airflow.apache.org/concepts.html#branching) + allows branches within the DAG and for the execution path to be determined + at runtime. This approach is used as part of the artifact caching, as if the + artifact to be generated already exists, the executor and computation of + that artifact will be skipped. Downstream operators will continue to operate + unaware that the computation was not recomputed. + +* The SubDagOperator facilitates composition of Apache Airflow operators into + a single template for reuse. Currently, the TFXWorker is implemented as a + subdag with a BranchPythonOperator (artifact caching check), an optional + PythonOperator (the user-provided driver), and a Python/BashOperator (the + executor). + +The TFX Apache Airflow helper APIs provide the following libraries: + +* tfx_airflow.py: This file provides methods to build the Apache Airflow DAG + from the TFX DSL as well as an Apache Airflow template for the TFX + components. As components are defined in the TFX DSL, an internal method in + this file will also build the DAG based on data dependencies between the + various components. +* tfx_types.py: deprecated in 0.12; originally used for type-checking the + inputs. Functionality was moved to ml-metadata in 0.12. + +![Example of a TFX pipeline with Airflow](20190718-tfx-orchestration/tfx-oss-dag.png) + +###### Why no Kubernetes with TFX and Airflow? + +While Airflow supports Kubernetes operators, we’ve chosen to use Kubeflow as the +preferred TFX-on-Kubernetes implementation. + +#### Kubeflow implementation + +Coming soon! + +### Continuous Training + +There are several requirements for continuous training: + +* There must be a mechanism for users to choose to avoid duplicated + computation +* The system must be able to get the status of previous runs +* The system must provide a way to manually execute previous runs +* The system must provide garbage collection support + +We were able to fulfill the requirements above by the combination of +per-component drivers and ml-metadata integration: + +* Each driver will check for previous component runs and decide whether or not + a new run is necessary if caching is turned on +* If caching is turned off, the pipeline will proceed without skipping any + component +* Drivers in some components such as Trainer and Model Validator will fetch + results from previous runs that are necessary for the current run. The + driver of ExampleGen, the entrance of a TFX pipeline, will decide the data + to process in this pipeline run. +* We will provide Python utility function for marking artifacts as 'DELETABLE' + when certain conditions are met, and this garbage collector can be wired as + an optional component into a pipeline to automate the process. + +A pipeline is the smallest unit to run and each component always processes the +output data (cache or uncached) from upstream components. While this is not an +asynchronous system like Google-internal TFX, it is more natural to express +continuous pipeline runs compared to continuous component runs in workflow-based +orchestration systems without losing too much flexibility. + +#### Internal pipeline data representation + +TFX organizes the internal pipeline data in the hierarchy of span, version and +split: + +* Span and version are monotonically increasing integers determined by + ExampleGen driver. We also allow users to define the rule of generating span + number through UDF support. By default, we will associate span number with + execution time. +* Splits are currently fixed to train and eval, but we plan to support + customized splits through SplitConfig on split-aware components. + +#### Partial Success Handling + +Sometimes, a component (especially custom ones) could be a wrapper for a whole +bunch of other logic, producing multiple artifacts. If the component fails when +only part of the artifacts have been produced, this could problematic. + +The proposed solution: orchestrator will keep all artifacts in _PENDING_ state +when an execution is still ongoing, and atomically publish all artifacts into +_PUBLISHED_ state only after execution successfully completes. Notice that +drivers only consider _PUBLISHED_ artifacts as valid orchestrated outputs, so a +_PENDING_ state artifact would not affect cache calculation. The downside of +this design is that the executor might waste some resources to recompute the +already successful partial output. + +#### Component Hangs + +For various reasons, components could be in a “hanging” state in which it is +neither dead nor making progress. + +Proposed solution: Each execution of a component will be assigned a deadline, +and the executor will terminate itself with a DEADLINE_EXCEEDED status message +if work is not finished within this deadline. The deadline could be configured +to be minimum of (global deadline for current dag execution, deadline for +current component). + +### Extending the Pipeline + +(This is how to satisfy the “DSL must be extensible” requirement.) + +There are several levels of customizations to extend a pipeline. A pipeline +author can create new executors to override the default TFX executors or create +new components to run in the TFX pipeline. + +#### Custom Executor + +If an existing component (defined +by same inputs and outputs) can be reused, the pipeline author could choose to provide an +alternative implementation of the executor binary when initializing the +corresponding component. The executor could either be provided in Python as a +sub-class of BaseExecutor, or a binary (docker image) supporting the same +command-line interface. + +#### Custom Component + +Occasionally, TFX pipeline authors will need to create custom components which +are not part of official TFX components (for example, a custom example_gen +component for other data formats). This can be achieved by providing a custom +component which can be hooked into TFX pipelines just like official components. + +To implement a custom component, the component author needs to: + +1. Provide a component definition as a Python class which extends + “BaseComponent”, or a proto definition of the component which can be fed to + codegen +1. Provide an executor implementation which extends a “BaseExecutor” class +1. (Optionally) Provide a driver if the custom component requires one + +The TFX team will provide supporting infrastructure: + +* Build script for packaging the executor into Docker images; +* Abstract test class for testing component definition (mostly type checking), + executor implementation and driver logic. + +### Future work + +After the initial release of TFX with 0.12, we will be exploring the following +areas: + +* Additional workflow patterns beyond Airflow and Kubeflow, including pubsub + systems like Pulsar. +* Apache Beam-based orchestrator. +* Garbage collection policy. +* Incorporating additional TFX executors as they become available. +* Custom components and executors. +* Support for xgboost and pytorch. +* Composable sub-pipelines. +* Providing a symmetric experience between on-local and on-Kubeflow-on-cloud. +* Integration/support for a TFX frontend. + diff --git a/rfcs/20190718-tfx-orchestration/tfx-oss-architecture.gif b/rfcs/20190718-tfx-orchestration/tfx-oss-architecture.gif new file mode 100644 index 0000000000000000000000000000000000000000..863c5949c08e3ab0cd791f9c9ee093176fab33c4 GIT binary patch literal 36121 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%0DlMHNX)zfU96pfI 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�-_hTsJ`S~ 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 UrmB6ujT`Rw_X+ZD_KeB>7l*(7UH||9 literal 0 HcmV?d00001 From d3e12934d992f7c592437a50c3b77e9fe382d8bf Mon Sep 17 00:00:00 2001 From: Edd Wilder-James Date: Fri, 2 Aug 2019 13:58:37 -0700 Subject: [PATCH 009/365] Update CODEOWNERS Add @theadactyl to be an RFC codeowner --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index 4845d0ce9..82ba9a548 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -19,4 +19,4 @@ sigs/testing/ @ewilderj @dynamicwebpaige # RFCs -rfcs/ @ewilderj @martinwicke @goldiegadde +rfcs/ @ewilderj @martinwicke @goldiegadde @theadactyl From 1423772aae3e85dfc95363464d9b023cf633c60f Mon Sep 17 00:00:00 2001 From: Edd Wilder-James Date: Wed, 14 Aug 2019 14:49:07 -0700 Subject: [PATCH 010/365] Update CHARTER.md Add in Gitter channel URL --- sigs/micro/CHARTER.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sigs/micro/CHARTER.md b/sigs/micro/CHARTER.md index c7188aa62..6c0cfd596 100644 --- a/sigs/micro/CHARTER.md +++ b/sigs/micro/CHARTER.md @@ -12,7 +12,8 @@ Archives of the mailing list will be publicly available. ## Resources -* [sig-micro mailing list](https://groups.google.com/a/tensorflow.org/forum/#!forum/micro) +* [SIG Micro mailing list](https://groups.google.com/a/tensorflow.org/forum/#!forum/micro) +* [SIG Micro Gitter chat channel](https://gitter.im/tensorflow/sig-micro) * [TensorFlow Micro code](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/experimental/micro) ## Contacts From dafb2e24f20f68b8d92ee1104bb6baeec950a039 Mon Sep 17 00:00:00 2001 From: Edd Wilder-James Date: Wed, 14 Aug 2019 14:49:59 -0700 Subject: [PATCH 011/365] Update CHARTER.md Add link to meeting notes --- sigs/micro/CHARTER.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sigs/micro/CHARTER.md b/sigs/micro/CHARTER.md index 6c0cfd596..6ede4fe8e 100644 --- a/sigs/micro/CHARTER.md +++ b/sigs/micro/CHARTER.md @@ -15,6 +15,7 @@ Archives of the mailing list will be publicly available. * [SIG Micro mailing list](https://groups.google.com/a/tensorflow.org/forum/#!forum/micro) * [SIG Micro Gitter chat channel](https://gitter.im/tensorflow/sig-micro) * [TensorFlow Micro code](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/lite/experimental/micro) +* [SIG Micro monthly meeting notes and agenda](https://goo.gle/tf-micro-notes) ## Contacts From b6ea8f4d3a5ad90058f25ba80ce283720c758968 Mon Sep 17 00:00:00 2001 From: James Ring Date: Wed, 14 Aug 2019 14:20:04 -0700 Subject: [PATCH 012/365] add draft kernel RFC --- rfcs/20190814-kernel-and-op-registration.md | 658 ++++++++++++++++++ .../device_api_overview.png | Bin 0 -> 43897 bytes 2 files changed, 658 insertions(+) create mode 100644 rfcs/20190814-kernel-and-op-registration.md create mode 100644 rfcs/20190814-kernel-and-op-registration/device_api_overview.png diff --git a/rfcs/20190814-kernel-and-op-registration.md b/rfcs/20190814-kernel-and-op-registration.md new file mode 100644 index 000000000..32b0471d5 --- /dev/null +++ b/rfcs/20190814-kernel-and-op-registration.md @@ -0,0 +1,658 @@ +# Kernel and Op Implementation and Registration API + +| Status | Proposed | +:-------------- |:---------------------------------------------------- | +| **Author(s)** | James Ring (sjr@google.com), Anna Revinskaya (annarev@google.com) | +| **Sponsor** | Günhan Gülsoy (gunan@google.com) | +| **Updated** | 2019-08-14 | + +## Objective + +Tensorflow (TF) currently provides a C++ API for implementing kernels and ops. +The Voltron project aims to create a modular/plugin-based TF implementation with +API and ABI surfaces. Plugins will be able to create and register custom kernel +and op implementations. + +In order to provide a stable ABI, the Voltron team has chosen to provide C APIs +to plugin authors. This document introduces the C API for op and kernel +registration. For authors who wish to continue using C++ to interface with +TensorFlow, an ABI-stable C++ header-only API is provided. + +## Motivation + +Presently, there is no ABI-stable API for extending TensorFlow with new kernels +and ops. There is no guarantee that a plugin written with one compiler will work +with a version of TensorFlow built with another, even on the same operating +system and architecture. This makes it difficult to distribute plugins without +also distributing the source code and requiring end-users to build the plugin +alongside TensorFlow. + +An ABI-stable API for extending TensorFlow will simplify the distribution of +plugins and allow plugin authors to distribute binary artifacts without +necessarily publishing plugin source code. + +## User Benefit + +Plugin authors will be able to publish plugins that users can use more easily. +In turn, the TensorFlow community will benefit from an increase in the number of +variety of available plugins. + +## Design Overview + +In general, the kernel and op registration C APIs aim to permit the +implementation of any kernel or op that is currently possible with the C++ API. +Where possible, existing C++ function implementations are reused from within a C +wrapper. The purpose of the wrapper is simply to provide ABI stability. + +Since plugins will be dynamically loaded (e.g. via `dlopen` on POSIX), the API +avoids relying on static initialization. + +The intention is that existing kernels should be able to be ported to the new +APIs with a minimum of reimplementation effort. This precludes a from-scratch +re-imagining of TensorFlow APIs. + +The following diagram describes the components built with the proposed C and C++ +APIs. + + +----------------+ <--+ + | | | + | Plugin | | + | | | + +----------------+ | + | | | + | C++ header API | | Plugin + | | | my_plugin.so + +--> +----------------+ | + | | | | + | | C API headers | | + | | | | + | +----------------+ <--+ + | | | + | | C API impl | + Core | | | + Tensorflow | +----------------+ + libtf.so | | | + | | Core C++ APIs | + | | | + +--> +----------------+ + +In this example, there are two object files: `my_plugin.so` and +`libtensorflow.so`. `my_plugin.so` is implemented in terms of the C++ +header-only API, which is in turn implemented in terms of the C API headers. The +C API implementation is provided by TensorFlow at runtime when it loads the +plugin's shared object. + +This design addresses changes that are required to the existing C API that are +required to support op and kernel plugins. It also introduces the C++ +header-only API, which currently does not exist. + +## Ops + +This section introduces changes to the C API that are required to support ops. +An alpha version of this API is already checked in at `tensorflow/c/ops.h`. + +### Registration + +In the C++ API, ops are registered at static initialization time using the +`REGISTER_OP` macro. For example: + +```c++ +REGISTER_OP("Bitcast") + .Input("input: T") + .Output("output: type") + .Attr("T: {bfloat16, ...}") + .Attr("type: {bfloat16, ...}") + .SetShapeFn([](InferenceContext* ctx) { ... }) + .Doc("A bitcast operator"); +``` + +The equivalent C API will be a series of functions that operate on +`TF_OpDefinitionBuilder *`, a pointer to an opaque struct (i.e. a struct whose +content is not made known to the user). The functions include, but are not +limited to: + +* `TF_OpDefinitionBuilder* TF_NewOpDefinitionBuilder(const char* op_name)`: + constructs and returns a new op registration builder for an op with the given + name + +* `void TF_OpDefinitionBuilderAddAttr(TF_OpDefinitionBuilder* builder, const + char* attr)`: adds the given attribute to the builder (equivalent to `Attr` + above) + +* `void TF_OpDefinitionBuilderAddInput(TF_OpDefinitionBuilder* builder, const + char* input)`: adds the given input to the builder (equivalent to `Input` + above) + +Additional functions are provided for setting other properties of the operation +(e.g. `TF_OpDefinitionBuilderSetIsCommutative`). + +Registration is then actually performed using the `TF_RegisterOpDefinition` +function. This function populates a `TF_Status` indicating whether registration +was successful and frees the resources associated with the op definition +builder. + +The C equivalent of the bitcast op registration example above is shown below: + +```c++ + +#include "tensorflow/c/ops.h" + +void InferBitcastShape(TF_ShapeInferenceContext* ctx, // see the section below on + TF_Status* status); // shape inference + +void InitPlugin() { + TF_OpDefinitionBuilder* b = TF_NewOpDefinitionBuilder("Bitcast"); + TF_OpDefinitionBuilderAddInput(b, "input: T"); + TF_OpDefinitionBuilderAddOutput(b, "output: type"); + TF_OpDefinitionBuilderAddAttr(b, "T: {bfloat16, ...}"); + TF_OpDefinitionBuilderAddAttr(b, "type: {bfloat16, ...}"); + TF_OpDefinitionBuilderSetShapeInferenceFunction(b, &InferBitcastShape); + + TF_Status* status = TF_NewStatus(); + TF_RegisterOpDefinition(b, status); + if (TF_GetCode(status) != TF_OK) { /* handle errors */ } +} + +``` + +### Shape Inference + +A significant feature of certain ops is their ability to infer their output +shapes. TensorFlow will invoke the registered shape inference function (if one +is provided) when it needs to know the op's output shape. The registration +function declaration is shown below: + + +```c++ +void TF_OpDefinitionBuilderSetShapeInferenceFunction( + TF_OpDefinitionBuilder* builder, + void (*shape_inference_func)(TF_ShapeInferenceContext* ctx, TF_Status* status)); +``` + +A series of functions prefixed with `TF_ShapeInferenceContext` is provided for +the following purposes: + +* Examining operator input shapes (`TF_ShapeInferenceContextGetInput`) + +* Creating and deleting shape and dimension handles (`TF_{New,Delete}ShapeHandle`, `TF_{New,Delete}DimensionHandle`) + +* Manipulating shape and dimension handles (`TF_ShapeInferenceContextWithRank`, `TF_ShapeInferenceContextDim`) + +In general, C analogues to the C++ methods in `tensorflow::shape_inference` +(see `tensorflow/core/framework/shape_inference.h`) will be provided. + +## Kernels + +This section introduces changes to the C API that are required to support +kernels. An alpha version of this API is already checked in at +`tensorflow/c/kernels.h`. + +### Registration + +Kernel registration with the C++ API is accomplished with the +`REGISTER_KERNEL_BUILDER` macro. This macro expands to code that relies on +static initialization to register the provided kernel with the global kernel +registry. See below for an example of registering a kernel with the C++ API: + +```c++ + +#include "tensorflow/core/framework/op_kernel.h" + +class BitcastOp : public OpKernel { + explicit BitcastOp(OpKernelConstruction* context) : OpKernel(context) { … } + void Compute(OpKernelContext* context) override { … } +}; + +REGISTER_KERNEL_BUILDER(Name("Bitcast").Device(DEVICE_CPU), BitcastOp) +``` + +The equivalent C API provides a series of functions that operate on +`TF_KernelBuilder`, an opaque struct obtained with the `TF_NewKernelBuilder` call. +The kernel builder is registered with TensorFlow using the +`TF_RegisterKernelBuilder` function. See below for an example of registering +the bitcast kernel using the C API: + +```c++ +#include "tensorflow/c/kernels.h" + +typedef struct bitcast_kernel { … } bitcast_kernel; + +// Bitcast_Create, Bitcast_Compute and Bitcast_Delete actually implement the +// kernel. See the section below for discussion on kernel implementation. +static void* Bitcast_Create(TF_OpKernelConstruction* context) { + bitcast_kernel* k = (bitcast_kernel*) calloc(1, sizeof(bitcast_kernel)); + /* initialize the fields of k as needed */ + return (void*) k; +} + +static void* Bitcast_Compute(void* k, TF_OpKernelContext* context) { + bitcast_kernel* kernel = (bitcast_kernel*) k; // this is the pointer returned by + // Bitcast_Create + /* compute the result */ + TF_SetOutput(context, ...); +} + +static void Bitcast_Delete(void *k) { free(k); } + +void InitPlugin() { + TF_KernelBuilder* builder = TF_NewKernelBuilder(/*op_name*/"Bitcast", DEVICE_CPU, + &Bitcast_Create, &Bitcast_Compute, &Bitcast_Delete); + TF_Status* status = TF_NewStatus(); + TF_RegisterKernelBuilder(/*kernel_name*/"Bitcast", builder, status); + if (TF_GetCode(status) != TF_OK) { /* handle errors */ } + TF_DeleteStatus(status); +} +``` + +The registration function prototypes are provided below. Kernel authors must +provide a compute function. Creation and deletion functions are optional, but +if a creation function is provided that causes memory allocation, a deletion +function that frees the memory should also be provided, otherwise a leak will +occur. + +```c++ +TF_KernelBuilder* TF_NewKernelBuilder( + const char* op_name, const char* device_name, + void* (*create_func)(TF_OpKernelConstruction*), + void (*compute_func)(void*, TF_OpKernelContext*), + void (*delete_func)(void*)); + +void TF_RegisterKernelBuilder(const char* name, TF_KernelBuilder* builder, + TF_Status* status); +``` + +### Implementation + +The main classes for C++ kernel implementations are `OpKernelCreation` +(provided by TensorFlow to the kernel constructor) and `OpKernelContext` +(provided to the kernel's `Compute` method). The analogues in the C API are +`TF_OpKernelCreation` and `TF_OpKernelContext`. The aim of the C API is to +provide functions for working with these structs that match, as closely as +possible, the C++ API. + +### Inputs and Outputs + +Kernels must be able to retrieve their inputs and provide outputs. In the C++ +API, the tensorflow::OpKernelContext::GetInput and SetOutput family of +functions provide this functionality. The equivalent C calls will be +`TF_GetInput` and `TF_SetInput`. These functions operate on `TF_Tensor`, which +is already part of the existing TensorFlow C API. + +String tensors will be supported in an ABI-stable way. This will require +changes to their binary representation described in the [tstring design +document](https://github.com/tensorflow/community/blob/master/rfcs/20190411-string-unification.md). + +## C++ Header-Only API + +As described above, the main motivation for providing a C API is ABI stability. +However, some programmers may find the C API less convenient than the +non-ABI-stable C++ API. To address this concern, we plan to provide a +header-only C++ API that is implemented in terms of the ABI-stable C API. This +API will contain classes such as `Tensor`, `OpKernelContext`, and +`OpKernelConstruction`, whose names will be familiar to existing C++ API users. +Ideally, this API will be as close as possible to the existing non-ABI-stable +Tensorflow C++ API, so that kernels and ops currently implemented in C++ may be +ported to the ABI-stable C++ with as little implementation churn as possible. + +## Device C API for Kernels + +So far, this document has not dealt with the challenges of providing an +ABI-stable API for kernels that run on GPUs. This section describes an API that +addresses these challenges. + +There are a few approaches to running kernels on GPUs: + +* Assign computation to Eigen device (for e.g. see `OneHot`, `Transpose`, + training ops). (>200 occurrences in TensorFlow) + +* Call `device.parallelFor` (for e.g. see `BatchSelect`). (4 occurrences) + +* Call `ThreadPool::ParallelFor` (for e.g. see `MatrixDiag`). This is a + TensorFlow wrapper that eventually wraps calls to Eigen. For example, + `ThreadPool::ParallelFor` calls `device.parallelFor` in Eigen. (29 + occurrences) + +* Call `Shard` (e.g. `CTCGreedyDecoder`). This approach is deprecated in favor + of `ThreadPool::TransformRangeConcurrently` but no kernels use the latter yet. + (42 occurrences) + +* Call `GpuLaunchKernel` or `CudaLaunchKernel` directly, i.e. without calling Eigen. +(58 occurrences) + +* `Matmul` op calls directly to `StreamExecutor`. + +* Possibly others + +In all approaches above, TensorFlow core is responsible for maintaining +respective device queues, streams or pools. Kernels then use these queues to +schedule computation. Therefore, our primary goal is to implement a C API that +enables this scheduling. To give an example, one approach we can take is have +Kernel pass a callback across C API. Tensorflow core would then call this +callback. See diagram below: + +![device API](20190814-kernel-and-op-registration/device_api_overview.png) + +Furthermore, note that most of the approaches listed above eventually call to +Eigen to parallelize and forward computation to device. For example, the first +approach above uses Eigen APIs directly. Consequently, we need to understand how +Eigen works with devices and in some cases make changes to Eigen codebase as +well. + +Finally, we should aim to create a smaller API. Some of the approaches listed in +the Background section seem to be very similar. For example, calling +`parallelFor` in Eigen is quite similar to calling into +`ThreadPool::ParallelFor`. Therefore, we will only provide C API equivalents for +the following: + +* `ThreadPool` and its methods. + +* `CudaLaunchKernel` function. + +* Computation assignment to device in Eigen. + +This proposal focuses on these 3 components for now. Due to the complexity and +variety of TensorFlow kernels, it is very likely that we will need to consider +more approaches going forward. For example, how `MatMul` op would call +`StreamExecutor` directly has not been investigated. + +### ThreadPool API + +Here, we can just wrap relevant methods in the `ThreadPool` class. + +```c++ +TF_CAPI_EXPORT extern void TF_ThreadPool_Schedule( + TF_OpKernelContext* context, + void (*fn)()); + +TF_CAPI_EXPORT extern void TF_ThreadPool_ScheduleWithHint( + TF_OpKernelContext* context, + void (*fn)(), + int start, + int limit); + +TF_CAPI_EXPORT extern void TF_ThreadPool_ParallelFor( + TF_OpKernelContext* context, + int64_t total, + int64_t cost_per_unit, + void (*fn)(int64_t, int64_t)); + +TF_CAPI_EXPORT extern void TF_ThreadPool_ParallelForWithWorkerId( + TF_OpKernelContext* context, + int64_t total, + int64_t cost_per_unit, + void (*fn)(int64_t, int64_t, int)); +``` + +Note that we just pass a `TF_OpKernelContext` instead of a `ThreadPool` +instance. Implementation of these interfaces on the TensorFlow core side can +then retrieve the actual ThreadPool object using: + +```c++ +OpKernelContext* ctx = reinterpret_cast(context); +auto thread_pool = + cxt->device()->tensorflow_cpu_worker_threads()->workers; +``` + +For details on how we plan to switch between `std::function` and `void +(*fn)()`, see Appendix 1 below. + +### Device Assignment API + +This approach lets us construct device objects (e.g. `Eigen::GpuDevice`) on the +plugin side. This is preferred over the approach described in "Alternatives +Considered" because it is more flexible when it comes to Eigen assignments and +operations. Basically, we get an Eigen device object and can apply any +operations we currently apply to an Eigen device. + +We could wrap `StreamInterface`, `ThreadPoolInterface` and `Allocator`. These +wrappers will consist of a C API and a C++ wrapper on top of the C API. A +sample C API for `StreamInterface` is given below: + +```c++ +TF_CAPI_EXPORT extern TF_EigenStream* TF_GetEigenStreamHandle( + TF_OpKernelContext*); +TF_CAPI_EXPORT extern gpuStream_t* TF_EigenStream_GetCudaStream( + TF_EigenStream*); +TF_CAPI_EXPORT extern gpuDeviceProp_t* TF_EigenStream_GetDeviceProperties( + TF_EigenStream*); +TF_CAPI_EXPORT extern void* TF_EigenStream_Allocate( + TF_EigenStream*, size_t num_bytes); +TF_CAPI_EXPORT extern void TF_EigenStream_Deallocate( + TF_EigenStream*, void* buffer); +TF_CAPI_EXPORT extern void* TF_EigenStream_Scratchpad( + TF_EigenStream*); +TF_CAPI_EXPORT extern int* TF_EigenStream_Semaphore( + TF_EigenStream*); +// This would just delete the C API handle for TF_EigenStream. +TF_CAPI_EXPORT extern TF_EigenStream* TF_DeleteEigenStreamHandle( + TF_EigenStream*); +``` + +The following C++ API will wrap the C API to provide a `StreamInterface` implementation +on the kernel plugin side: + +```c++ +class EigenGpuStream : public Eigen::StreamInterface { + public: + EigenGpuStream(TF_EigenStream* eigen_stream) : + eigen_stream_(eigen_stream) {} + + const gpuStream_t& stream() const override { + return TF_EigenStream_GetCudaStream(eigen_stream_); + } + + const gpuDeviceProp_t& deviceProperties() const override { + return TF_EigenStream_GetDeviceProperties(eigen_stream_); + } + + void* allocate(size_t num_bytes) const override { + return TF_EigenStream_Allocate(eigen_stream_, num_bytes); + } + + void deallocate(void* buffer) const override { + return TF_EigenStream_Deallocate(eigen_stream_, buffer); + } + + virtual void* scratchpad() const override { + return TF_EigenStream_Scratchpad(eigen_stream_); + } + + virtual unsigned int* semaphore() const override { + return TF_EigenStream_Semaphore(eigen_stream_); + } + + private: + TF_EigenStream* eigen_stream; +}; +``` + +Now, a kernel can create an instance of `Eigen::GpuDevice` using this stream: + +```c++ +TF_EigenStream* eigen_stream = TF_GetEigenStream(); +Eigen::GpuDevice* device = Eigen::GpuDevice(EigenGpuStream(eigen_stream)); +... +tensor->device(device) = < computation > +... +TF_DeleteEigenStreamHandle(eigen_stream); +``` + +Note: `gpuStream_t` and `gpuDeviceProp_t` might be aliased to ROCm's objects +instead of Cuda structs. See Appendix 2 for details how we are going to handle +ROCm support. + +Wrapping `Allocator` using similar approach should be trivial. However, +`ThreadPoolInterface` takes `std::function` and this approach would +require passing `std::function` across C API, which is non-trivial. For details +how we are going to handle it see Appendix 1. + +### Alternative for GPU Device Assignment API + +We can take approach similar to the CPU device assignment API. On the CPU side, +corresponding Eigen object - `ThreadPoolInterface` - has a `Schedule` method. This +method schedules a kernel function in a thread pool. + +Similarly, we can add a `Launch`/`Schedule` function to `StreamInterface`. The +default implementation would have same behavior as `LAUNCH_GPU_KERNEL` in +Eigen. However, we can customize it on the TensorFlow side and implement launch +logic in core TensorFlow instead of the kernel. This way, `cudaStream_t` and +`hipStream_t` only need to be referenced in core. + + + +Advantages of this approach: + +* Don't need to pass `hipStream_t` and `cudaStream_t` across the API boundary. + +* Supports customization of the `launchKernel` call which might be useful if we + want to handle it differently later. + +Disadvantages of this approach: + +* More invasive change to Eigen. + +### CudaLaunchKernel API + +CudaLaunchKernel appears to be a fairly thin wrapper around `cudaLaunchKernel` +in the Cuda Runtime library and a part of their C API. + +For reference, this is the signature of `cudaLaunchKernel`: + +```c++ +extern __host__ cudaError_t CUDARTAPI cudaLaunchKernel( + const void *func, + dim3 gridDim, + dim3 blockDim, + void **args, + size_t sharedMem, + cudaStream_t stream); +``` + +where `dim3` and `cudaStream_t` are structs. +This is trivial to either wrap with the TensorFlow C API or just call into from +plugins directly. + +However, ROCm's side of things is harder than Cuda. `gpuLaunchKernel` might +call ROCm's `hipLaunchKernelGGL` here instead. Its signature uses templates. +Fortunately, AMD is planning to add an equivalent function that provides a C +API. (see Appendix 2 for details) + +## Appendix 1 + +Certain parts of our design involve kernel plugins calling a function in +TensorFlow core of the form: + +```c++ +void foo(std::function arg) { ... } +``` + +We can't pass std::function across the C API boundary. Instead, we plan to wrap it with a struct and break this call up into 3 steps: + +* Wrap `std::function` with a struct. The struct will contain pointers + to callbacks for manipulating std::function pointer. (This will happen + on the kernel plugin side). + +* Pass the struct across C API boundary. + +* Wrap the struct with a callable object which can be used as + `std::function`. (This will happen on TensorFlow core side). + +Step 1: The wrapper struct will be defined as follows: + +```c++ +// Wraps std::function so that it can be called across C API. +struct FuncWrap { + void* func_ptr; // pointer to std::function + + // Function that takes std::function pointer as an argument + // and calls that function. + void (*call_func_ptr) (void*); + + // Function that takes std::function pointer as an argument + // and deletes it. + void (*delete_func_ptr) (void*); +}; +``` + +Note that we would need to move `std::function` to the heap because `FuncWrap` +might be placed in a queue and called later. Specifically, `FuncWrap` +construction will happen on the kernel plugin side and will have the following +implementation: + +```c++ +// Wraps std::function with FuncWrap struct. +FuncWrap get_func_wrap(std::function f ) { + // Move function to heap + auto* f_heap = new std::function(f); + + return { + // Argument to pass to callbacks to call/delete it. + f_heap, + // Callback that calls f_heap. + [](void* wrapped_f) { + std::function* f_std = static_cast*>( + wrapped_f); + (*f_std)(); + }, + // Callback that deletes f_heap. + [](void* wrapped_f) { + std::function* f_std = static_cast*>( + wrapped_f); + delete f_std; + } + }; +} +``` + +Step 2: `FuncWrap` struct constructed in this manner can now be passed across +the C API to core. + +Step 3: Since we place `std::function` on the heap, we need to manage its +deletion. Therefore, we wrap it with a class in TensorFlow core so that it can +be deleted once all references are gone: + +```c++ +class CallFuncWrap { + public: + explicit CallFuncWrap(FuncWrap wrap) : + wrap_(new FuncWrap(wrap), [](FuncWrap* ptr) { + ptr->delete_func_ptr(ptr->func_ptr); + delete ptr; + }) {}; + + void operator() () { + wrap_->call_func_ptr(wrap_->func_ptr); + } + + private: + // CallFuncWrap might be copied when it is passed to functions taking + // std::function as an argument. + // We use shared_ptr to make sure we only have one copy of FuncWrap + // even if CallFuncWrap is copied. We want a single copy of FuncWrap + // because the pointer stored in FuncWrap should only be deleted once. + std::shared_ptr wrap_; +}; +``` + +Now, the `CallFuncWrap` instance can be passed in as a `std::function` argument: + +```c++ +CallFuncWrap call_func_wrap(func_wrap); +foo(call_func_wrap); // foo here takes std::function argument +``` + +## Appendix 2: Working with ROCm across C API + +We need to access `hipStream_t` on both sides of the C API. Since its +implementation is actually in C++, we will treat it as opaque pointer that we +get from a HIP function (on the TensorFlow core side) and pass to another HIP +function (on the kernel side). + +Ideally, we should only rely on extern C parts of `hip_runtime_api.h`. There is +now an equivalent in the C API right now for `hipLaunchKernelGGL`. However, AMD +have said they are looking into adding an equivalent function to the C API in +the near future and are willing to add more functions if needed. + +Note that we have to update `LAUNCH_GPU_KERNEL` in Eigen to call the HIP C API +once it is available. + diff --git a/rfcs/20190814-kernel-and-op-registration/device_api_overview.png b/rfcs/20190814-kernel-and-op-registration/device_api_overview.png new file mode 100644 index 0000000000000000000000000000000000000000..8803ead7976648535a8e29907cf9e7109413e8ec GIT binary patch literal 43897 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 z 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 literal 0 HcmV?d00001 From 19ad326f69df5cb53acbdc052108d9455729fb2d Mon Sep 17 00:00:00 2001 From: Anna Revinskaya Date: Thu, 15 Aug 2019 13:28:56 -0700 Subject: [PATCH 013/365] Update 20190814-kernel-and-op-registration.md --- rfcs/20190814-kernel-and-op-registration.md | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/rfcs/20190814-kernel-and-op-registration.md b/rfcs/20190814-kernel-and-op-registration.md index 32b0471d5..6dacd8593 100644 --- a/rfcs/20190814-kernel-and-op-registration.md +++ b/rfcs/20190814-kernel-and-op-registration.md @@ -399,12 +399,10 @@ For details on how we plan to switch between `std::function` and `void ### Device Assignment API This approach lets us construct device objects (e.g. `Eigen::GpuDevice`) on the -plugin side. This is preferred over the approach described in "Alternatives -Considered" because it is more flexible when it comes to Eigen assignments and -operations. Basically, we get an Eigen device object and can apply any +plugin side. Basically, we get an Eigen device object and can apply any operations we currently apply to an Eigen device. -We could wrap `StreamInterface`, `ThreadPoolInterface` and `Allocator`. These +We could wrap `Eigen::StreamInterface`, `Eigen::ThreadPoolInterface` and `Eigen::Allocator`. These wrappers will consist of a C API and a C++ wrapper on top of the C API. A sample C API for `StreamInterface` is given below: @@ -546,10 +544,10 @@ TensorFlow core of the form: void foo(std::function arg) { ... } ``` -We can't pass std::function across the C API boundary. Instead, we plan to wrap it with a struct and break this call up into 3 steps: +We can't pass `std::function` across the C API boundary. Instead, we plan to wrap it with a struct and break this call up into 3 steps: * Wrap `std::function` with a struct. The struct will contain pointers - to callbacks for manipulating std::function pointer. (This will happen + to callbacks for manipulating `std::function` pointer. (This will happen on the kernel plugin side). * Pass the struct across C API boundary. @@ -649,9 +647,8 @@ get from a HIP function (on the TensorFlow core side) and pass to another HIP function (on the kernel side). Ideally, we should only rely on extern C parts of `hip_runtime_api.h`. There is -now an equivalent in the C API right now for `hipLaunchKernelGGL`. However, AMD -have said they are looking into adding an equivalent function to the C API in -the near future and are willing to add more functions if needed. +no equivalent in the C API right now for `hipLaunchKernelGGL`. However, AMD +might add an equivalent function to the C API in the near future. Note that we have to update `LAUNCH_GPU_KERNEL` in Eigen to call the HIP C API once it is available. From 07b989e6b52d0790818207ff7c0dba7cd30aba39 Mon Sep 17 00:00:00 2001 From: Shanqing Cai Date: Thu, 15 Aug 2019 19:36:52 -0400 Subject: [PATCH 014/365] RFC: TensorFlow Debugger v2 -- Callbacks for Eager Execution and tf.function (#127) * Add RFC: tfdbg v2: Callbacks for Eager Execution and `tf.function`s * Graphics and grammar tweaks * Be precise about what ops are created * Fix some typos and arithemtic errors * Correct status * Fix typo * Update 20190815-tfdbg-v2-callbacks.md * Update rfcs/20190815-tfdbg-v2-callbacks.md Co-Authored-By: Sergii Khomenko * Add mention of tf.data objects * Addressing some comments * Address more comments * Fix comment * Update timestamp * Clarify what to do in a callback function * Update timestamp and status --- rfcs/20190815-tfdbg-v2-callbacks.md | 414 ++++++++++++++++++ .../graph-instrumentation.png | Bin 0 -> 91274 bytes 2 files changed, 414 insertions(+) create mode 100644 rfcs/20190815-tfdbg-v2-callbacks.md create mode 100644 rfcs/20190815-tfdbg-v2-callbacks/graph-instrumentation.png diff --git a/rfcs/20190815-tfdbg-v2-callbacks.md b/rfcs/20190815-tfdbg-v2-callbacks.md new file mode 100644 index 000000000..e9d7d5fb1 --- /dev/null +++ b/rfcs/20190815-tfdbg-v2-callbacks.md @@ -0,0 +1,414 @@ +# TensorFlow Debugger v2: Callbacks for Eager Execution and `tf.function`s + +| Status | Accepted | +:-------------- |:---------------------------------------------------- | +| **Author(s)** | Shanqing Cai (cais@google.com) | +| **Sponsor** | Alexandre Passos (apassos@google.com) | +| **Updated** | 2019-08-15 | + +## Objective + +This RFC presents an API-level design for how to achieve debugging +instrumentation of [eager execution](https://www.tensorflow.org/guide/eager) and +[`tf.function`](https://www.tensorflow.org/beta/guide/autograph) in TensorFlow 2 +("TF2" hereafter). This will enable users to "hook into" the following types of +events in TF2 with a unified API: + + - Eager execution of an operation ("op" hereafter) at runtime + - Creation of an symbolic op at graph-construction time, i.e., when a + user-defined Python functions is transformed into a graph (FuncGraph) with + the + [tf.function](https://www.tensorflow.org/beta/tutorials/eager/tf_function) + API. + - Runtime execution of FuncGraphs. + +## Motivation + +Such "hooks" will allow both observation and overriding of TF op's outgoing +tensors, including concrete `EagerTensor`s and symbolic `Tensor`s (see details +below.) This is a foundational part of the effort to bring [TensorFlow Debugger +(tfdbg)](https://www.tensorflow.org/guide/debugger) up-to-date with TF2's +execution paradigm. + +Currently, tfdbg is compatible with only the `tf.Session` API of TensorFlow 1.x. +However, users of TF2 have raised questions and issues that indicate needs for +a dedicated debugger, ones that cannot be easily met by a generic Python +debugger such as pdb. The most common examples of such needs involve +finding the source of numeric instability issues like NaNs (e.g., see [GitHub +issue](https://github.com/tensorflow/tensorflow/issues/26543) and [StackOverflow +question](https://stackoverflow.com/questions/55823557/converting-darknet53-gives-nan-results-in-tensorflow-2-0)) + +## Design Proposal + +To expand on the aims listed in the Object section, the proposed API will enable +three key capabilities: + + - **Capability A**: The ability to intercept eagerly-executing TF ops. + Specifically, we want a way to register one or more callbacks that are + invoked immediately after an `EagerTensor` has been computed through the + eager execution of an op. The callback should provide visibility into the + input and output `EagerTensor`s of the execution. If so desired, the + callback may _override_ the output `EagerTensor`s and thereby transparently + affect downstream eager execution. + - **Capability B**: The ability to intercept the creation of symbolic ops + during function-to-graph conversion in `tf.function`, including the cases + assisted by [AutoGraph](https://www.tensorflow.org/guide/autograph). This + will form the basis for simulated stepping through lines of + `tf.function`-decorated Python functions to assist debugging of graph + construction in TF2. Like in Capability A, the callbacks should be able to + override the output symbolic tensors of the op in order to affect all + downstream graph ops. + - **Capability C**: Similar to Capability A above, we want the ability + to intercept the runtime execution of FuncGraphs. Note that this + requirement could be folded into Capability A, if FuncGraphs are + regarded as a special type of op. + +Capability B will enable the interception of TF ops executing inside FuncGraphs +at _runtime_. Although this is not listed explicitly as a desired capability, it +is critical to runtime debugging in tfdbg v2. Similar to Capability A above, we +want access to all the intermediate tensor values computed in a FuncGraph. + +### Design: Debug Callbacks for Op Instrumentation + +The following API meets the requirements listed above. The code below shows the +API and the detailed signature and semantics of the callbacks that can be passed +to the API. + +```python +# Exported publicly as: tf.debugging.op_callback() +def op_callback(callback_fn): + """Intercepts op execution and op creation. + + The `callback_fn` will be invoked immediately after any of the three types + of events: + - The execution of an op under eager mode, + - The execution of a FuncGraph under eager mode, + - The creation of an op during graph construction (e.g., in + @tf.function-decorated Python functions.) + + Args: + A callback_fn that has the following signature: + def callback_fn(op_type, + inputs, + attrs, + outputs, + op_name=None, + graph=None): + # op_type: The type of the op, as a string. E.g., "MatMul". + # For the special case of FuncGraph execution, op_type + # takes the name of the graph name, e.g., + # "__inference_my_func_24". + # inputs: (`tuple` of `Tensor`s) Input tensors to the op or the + # FuncGraph. + # In eager execution, these are `EagerTensor`s. + # In graph construction, these are non-eager `Tensor`s + # that form the inputs to the just-created op. + # attrs: The attributes of the op or FuncGraph of which the execution + # or creation caused the current invocation of the callback. + # This is applicable to both eager- and graph-based execution, + # as well as graph construction. + # This is a tuple of alternating attribute keys and attribute + # values, e.g., `('adjoint_a', False, 'adjoint_b', False)`. + # outputs: (`tuple of `Tensor`s) Output tensors from the op or + # FuncGraph. + # In eager execution, these are `EagerTensor`s. + # In graph construction, these are non-eager `Tensor`s that + # are the outputs of the just-created op. + # op_name: Name of the op or FuncGraph. + # If the current invocation of the callback is due to the + # eager execution of an op, this will be `None` as op names + # are meaningless in eager execution. + # If this invocation of the callback is due to the + # eager execution of a FuncGraph, this will be the + # internally-generated name of the FuncGraph. + # In graph construction, this is the name of the op. + # graph: The graph that the op belongs to (if any). + # In eager execution of an op, this is `None`. + # In eager execution of a FuncGraph, the is the FuncGraph + # object per se. + # In graph construction, this is the op's containing graph. + # + # Return values: + # This callback function is expected to return a `list` or `tuple` + # of `Tensor`s, with its length matching `len(outputs)`, in the order + # that corresponds to that of the `output` argument. + # In eager execution, these returned `Tensor`s should be + # `EagerTensor`s. Their values will replace the original values of + # `outputs` for downstream eager execution. + # In graph construction, these returned `Tensor`s should be + # non-eager `Tensor`s. Their values will replace the original + # `outputs` for downstream graph construction. + + Returns: + A thread-local context manager. Within the scope of the context + manager, all eager op/graph execution and graph op construction + will invoke `callback_fn`. + + Raises: + ValueEror: If the `callback` does not return the a `list` or `tuple` + of `Tensor`s with the same length as the `outputs` argument passed to it. + """ +``` + +This API follows the style of TF2's op API, namely a style that **unifies eager +and graph modes**. In TF2, the same op API (e.g., `tf.matmul`) executes +differently depending on where it is called. If it is called in an eager +context, it will execute eagerly, consuming `EagerTensor`s and generating new +`EagerTensor`s as outputs. If called in a graph context (i.e., in +`tf-function`), it'll construct a new symbolic op by consuming inbound symbolic +Tensors. Our proposal captures both cases with a single API. + +The proposed API achieves Capabilities A and B listed above, due to the fact +that the callback(s) registered with the API will be invoked for both eager op +execution and graph op creation. + +Capability C is also met by this API, due to the fact that the callbacks are +invoked not only during the eager execution of ops, but also the execution +of FuncGraphs. In this paradigm, when a FuncGraph has been constructed and +undergoes execution by TF2, it is simply treated as a special type of op. + +The example code snippet below shows how Capability A is met, i.e., how eager +execution of ops is intercepted by the callback mechanism. + +```python +def my_callback(op_type, inputs, attrs, outputs, op_name=None, graph=None): + # Do something with any of the arguments. The author of the callback may: + # - Log any information contained in the callback's input arguments. + # - Return the input `outputs` arg directly as the output, which means + # no change to the outputs of the op. Or + # - Return a list or tuple of output tensors different from the original + # input arg `outputs`, in which case the callback will override + # the outputs of the op, in either eager execution or graph execution. + return outputs + +with tf.debugging.op_callback(my_callback): + x = tf.constant(3.0) + + y = tf.math.log(1 + x) + # ↑ During the execution of the line above, `my_callback` is invoked twice: + # 1. With the `op_type` arg being 'AddV2' and the `outputs` arg being an + # EagerTensor with value 4.0. + # 2. With the `op_type` arg being 'Log' and the `outputs` arg being an + # EagerTensor with value 1.386 (≈log(4.0)). +``` + +The code below illustrates how Capability B is met, i.e., how creation of +ops inside a user-defined Python function decorated by `tf-function`: + +```python +with tf.debugging.op_callback(my_callback): + + @tf.function + def log_1plusp(p): + return tf.math.log(1 + p) + + x = tf.constant(3.0) + + y = log_1plusp(x) + # ↑ During the execution of the line above, `my_callback` is invoked *three* + # times. The first two invocations happen during AutoGraph's transformation + # of the function `log_1plusp` into a FuncGraph: + # 1. With the `op_type` arg being 'AddV2' and the `outputs` arg being the + # symbolic Tensor output by by AddV2 op. + # 2. With the `op_type` arg being 'Log' and the `outputs` arg being the + # symbolic Tensor output by by Log op. + # (In reality, tf.function and AutoGraph may create additional ops such as + # constant ops for Python constants present in the Python function and + # Identity ops to marshal the FuncGraph's input and output values. Those + # extra ops will be captured by `my_callback` as well.) + # + # The third (last) invocation of the callback is due to the eager execution + # of the FuncGraph, with the `op_type` arg being `tf.Graph`, the `op_name` + # arg being something like `_inference_log_1plusp_30`, and the `outputs` arg + # being an EagerTensor of value 1.386 (≈log(4.0)). +``` + +The example above dealt with a relatively simple FuncGraph. But the proposed API +applies to more complex FuncGraphs, including those that involve control flow +such as if-else and while loops. For instance, see the code example below. + +```python +with tf.debugging.op_callback(my_callback): + + @tf.function + def collatz(x): + n = tf.convert_to_tensor((0,)) + while x != 1: + n += 1 + if x % 2 == 0: + x = x // 2 + else: + x = 3 * x + 1 + return n + + y = collatz(tf.constant(42)) + # ↑ During the execution of the line above, `my_callback` is invoked + # for the creation of all ops in the TF While loop's body and condition, + # and the TF Cond op's branches. In addition, `my_callback` will be + # invoked for the runtime execution of the FuncGraph converted from + # `collatz`. +``` + +### Runtime Instrumentation of Ops in FuncGraphs + +This API also supports the runtime instrumentation of ops in FuncGraphs. To see +why, realize the fact that the return values of the callback will override the +original Tensors for downstream graph construction. Hence, new ops can be +created inside the body of the callback. (The ops created inside the calbacks +themselves will be skipped the callback, which avoids infinite loops.) Such new +ops can consume the original output Tensors of the op and generate new output +Tensors for the callback function to return. This workflow results in debugging +nodes being inserted in the op’s graph. + +The two code snippets listed below (labeled "Listing 1" and "Listing 2") provide +a concrete example of the workflow involved. The code in Listing 1 uses +@tf.function to construct a simple TF graph. In particular, the Python code in +my_func() is converted into a FuncGraph. The code in Listing 2 performs the same +action, but with the code placed inside an `tf.debugging.op_callback()` scope. +The callback function passed to the context manager constructs a debug op +(DebugIdentityV2) for each of the op’s output Tensor and returns the output +tensors of these debug ops, the result of which is shown in Panel B of the +figure below: each tensor now has a DebugIdentityV2 op attached to it. + +```python +# Listing 1. Define a FuncGraph without `tf.debugging.op_callback()`. + +@tf.function +def my_func(x): + return tf.math.log(1 + x) +``` + +```python +# Listing 2. Define a FuncGraph with `tf.debugging.op_callback()` and +# by passing a callback that overrides the symbolic output +# tensors of the just-created graph ops. + +def debugger_callback(op_type, inputs, attrs, outputs, + op_name=None, graph=None): + instrumented_outputs = [] + for output_slot, output in enumerate(outputs): + # Construct overriding output tensor. + # Note: The `debug_identity_v2` below is not a public TensorFlow API + # that users can use directly. This is the workflow that will be used + # internally by tfdbg v2. However, TF users can emulate this pattern + # by using any TF built-in or user-defined ops to override the op's output. + # For instance, using + # `instrumented_outputs.append(tf.math.negative(output))` will cause + # all output tensors in the graph to be negated (i.e., sign-flipped). + instrumented_outputs.append(gen_debug_ops.debug_identity_v2( + output, + tensor_name="%s:%d" % (op_name, output_slot), + debug_urls=debug_urls)) + return instrumented_outputs + +with tf.debugging.op_callback(debugger_callback): + @tf.function + def my_func(x): + return tf.math.log(1 + x) +``` + +![FuncGraph instrumentation](./20190815-tfdbg-v2-callbacks/graph-instrumentation.png) + +The debug op’s output is identical to its input, therefore the semantics of the +FuncGraph is preserved by including the callback. But the side effect of the +debug ops will support runtime debugging. Examples of such side effects include: + + - Dumping the tensor’s entire value to disk (similar to [tfdbg v1’s session + wrappers](https://www.tensorflow.org/guide/debugger#debugging_model_training_with_tfdbg)) + - Establishing two-way communication with a gRPC debug server and await + signals from the server before resuming execution, thereby achieving a + “breakpoint” in the graph (similar to [tfdbg v1’s TensorBoard Debugger + Plugin](https://github.com/tensorflow/tensorboard/blob/master/tensorboard/plugins/debugger/README.md)) + + +### What This Proposal Offers Beyond pdb + +This design is not a replacement for pdb. Instead, it is a proposal for +TensorFlow-specific debugging instrumentation that may supplement pdb. The +proposed callback API will enable the following workflows beyond what the usual +pdb-based interactive debugging can achieve. + +1. It allows registration of a callback that can error out with a helpful + error message with proper stack traces when any of the ops' output tensors + contains NaNs or Infinities. This will catch NaN/Infinity issues in both + eagerly computed tensors and the ones that are computed inside FuncGraphs. +2. It allows registration of a callback that can dump the full history of + eager execution, graph building and in-graph op execution to the filesystem. + This will facilitate post hoc analysis of crashed TF2 programs. + Admittedly, dumping full tensor values is very expensive and not realistic + in general. However, there are ways to reduce the cost of this history + dumping (e.g., by dumping only concise numeric summaries of tensors, + sample only a subset of the execution steps, or dumping only from a subset + of the ops.) +3. It allows real-time transmisson of debug information to a gRPC server, in + order to enable interactive debugging in the style of tfdbg v1's [TensorBoard + Debugger + Plugin](https://github.com/tensorflow/tensorboard/blob/master/tensorboard/plugins/debugger/README.md). + +### Considerations for Various Cases + +The proposed approach here will work for the following special cases of graph +construction: + +- The proposed callback API will work for + [user-defined ops](https://www.tensorflow.org/guide/extend/op) as it'll work + for TensorFlow's built-in ops. +- The proposad callback API will also work for TensorFlow's composite tensors, + which currently include + [SparseTensors](https://www.tensorflow.org/api_docs/python/tf/sparse/SparseTensor) + and [RaggedTensors](https://www.tensorflow.org/guide/ragged_tensors). + Eager execution and graph-based execution on such tensors will trigger the + registered op callbacks. In fact, given this is a low-level API, the callback + mechanism does not treat composite tensors in any special way. The op types + received by the callbacks will be low-level ops such as "SparseTensorDenseMatMul". +- Gradient graphs (i.e., graphs generated with + [tf.GradientTape](https://www.tensorflow.org/api_docs/python/tf/GradientTape)). +- “Nested” invocation of FuncGraphs, i.e., a FuncGraph invoking another + FuncGraph inside. As mentioned above, this includes control flow v2. In While + v2 and Cond v2, the body and conditions of the control-flow constructs are + themselves FuncGraphs. +- In addition, this approach of instrumenting the graph will work for + DistributionStrategy. For instance, + [MirroredStrategy](https://www.tensorflow.org/api_docs/python/tf/contrib/distribute/MirroredStrategy) + replicates the computation (eager or `tf.function`) across a number of + processors (CPU and GPUs). The proposed callback API will capture all the + eager execution and FuncGraph construction replicated on all the involved + processors. +- [tf.data pipeline](https://www.tensorflow.org/api_docs/python/tf/data) + constructs, including built-in data functions such as + [Dataset.batch()](https://www.tensorflow.org/api_docs/python/tf/data/Dataset#batch), + as well as the graph construction and runtime execution of user-defined + mapping functions supplied to + [Dataset.map()](https://www.tensorflow.org/api_docs/python/tf/data/Dataset#map). +- Furthermore, the proposed API can support TPU debugging as well. In + particular, if the inserted DebugIdentityV2 ops are placed inside + [tpu.outside_compilation](https://www.tensorflow.org/api_docs/python/tf/tpu/outside_compilation), + they will be properly compiled by XLA and run on TPU clusters. For + performance, we will likely need to consolidate a large number of outside + compilations into a smaller number. But the basic principle of instrumentation + remains the same. + +### Alternatives Considered + +1. Instrumenting the graphs at C++ level. This is in fact the current approach + of tfdbg v1. An advantage of the C++-based approach is that it can reflect + the graph rewriting performed internally by TF (e.g., by Grappler.) However, + compared with the Python-based approach proposed above, it is harder to make + the instrumentation work correctly for all the special cases, including TPU + if we were to pursue that route. The C++-level instrumentation may be pursued + in other parts of the overall tfdbg v2 effort. But as a goal, it is outside + the scope of this design. +2. Instrumenting the Python-level graph in a place such as + [`_EagerDefinedFunction.__init__()`](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/eager/function.py#L345), + i.e., a common pathway where all `tf.function`s are created in TF2. To this + end, a graph-rewriting function can be implemented. Compared with the + proposed approach, this approach has the following disadvantages. It + doesn’t result in an elegant API that unifies graph instrumentation with + eager instrumentation (see Capability A above). In addition, it doesn’t + support step-by-step tracing a FuncGraph’s construction phase, which is + supported by the proposed API. + +## Acknowledgments + +Thanks are due to Dan Moldovan (mdan@google.com) for extensive discussion in +the process that led to this design. diff --git a/rfcs/20190815-tfdbg-v2-callbacks/graph-instrumentation.png b/rfcs/20190815-tfdbg-v2-callbacks/graph-instrumentation.png new file mode 100644 index 0000000000000000000000000000000000000000..a1d45d21be9c1356bccd830bd83583eca1652757 GIT binary patch literal 91274 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 Date: Fri, 16 Aug 2019 10:31:32 -0700 Subject: [PATCH 015/365] Added TFX notebook design doc --- rfcs/20190815-tfx-notebook.md | 573 ++++++++++++++++++++++++++++++++++ 1 file changed, 573 insertions(+) create mode 100644 rfcs/20190815-tfx-notebook.md diff --git a/rfcs/20190815-tfx-notebook.md b/rfcs/20190815-tfx-notebook.md new file mode 100644 index 000000000..addfcc930 --- /dev/null +++ b/rfcs/20190815-tfx-notebook.md @@ -0,0 +1,573 @@ +# TFX OSS Iterative Notebook Proposal + +Status | Proposed +:------------ | :------- +**Author(s)** | Charles Chen (ccy@google.com), Joe Lee (joeyounglee@google.com), Kenny Song (kennysong@google.com), Kevin Haas (khaas@google.com), Pushkar Joshi (pushkarj@google.com) +**Sponsor** | Konstantinos Katsiapis (katsiapis@google.com) +**Updated** | 2019-08-15 + +## Objective + +We want to build a notebook user experience for modeling / iterative +development using TFX Components. This will provide a fast, familiar environment +for developing model and pipeline code with standard TensorFlow + TFX utilities, +plus automatic notebook → pipeline export: + +* Imperative, + [define-by-run](https://ai.googleblog.com/2017/10/eager-execution-imperative-define-by.html), + cell-by-cell workflow + * Start directly from Colab – no running pipeline needed + * Run TFX components as you need them, in separate cells + * No explicit DAG definitions or continuous execution +* Simple Python API per TFX component + * ExampleGen, StatsGen, SchemaGen, Transform, Trainer, Evaluator + * 100% TFX compatible for automatic notebook → pipeline export +* Analyze artifacts natively in Colab + * Built-in TensorBoard, Facets, TFMA visualizations + * Dataset, stats, eval metrics available in notebook for custom analysis +* Zero-setup, interactive onboarding tool for new TFX users on + [tensorflow.org](http://tensorflow.org) + +## Motivation + +The benefits of using a notebook include rapidly editing and running code, +immediately seeing the execution and outputs of commands, and running quick +one-off analyses in Python. It’s a simple, no-mental-overhead REPL environment +for iterating on ideas. + +By combining the notebook experience + TFX components, users can easily run + +* ExampleGen to generate the initial dataset used for training +* StatsGen to generate and visualize a statistical report of your data +* SchemaGen to generate a schema of your data (required input of Transform) +* Transform to write feature engineering strategies +* Trainer that wraps standard TF.Estimator or Keras code +* Evaluator to generate, slice, and visualize evaluation metrics +* Custom analyses on the output of any of these components with standard + Python + +To close the loop, the notebook can be automatically exported as a pipeline +configuration that users can directly deploy as a scalable TFX pipeline. There +is no additional modification required. + +## Target Users + +We target users who want to manually iterate on their models & components, and +prefer a notebook environment for the benefits outlined above. This is a wide +range of potential users, and from our user research, spans software engineers +and data scientists within and outside of Google. + +## Design Proposal + +This proposal proposes a set of slightly different primitives that better match +concepts in the current OSS SDK. + +### Component definition; inputs and outputs + +#### Proposal: components should take inputs, produce outputs (instead of taking predefined upstream components) + +We propose to follow the current TFX OSS style of having components explicitly +take input channels (i.e. streams of artifacts of a specific type) and produce +output channels (of another specific type). This could look like this: + +``` +# Here, with an input_base as an execution parameter with a given +# file path. +example_gen = CsvExampleGen(input_base=examples) + +# Next, we use the 'examples' named output of ExampleGen as the +# input to StatisticsGen. +statistics_gen = StatisticsGen(input_data=example_gen.outputs['examples']) + +# We then similarly use the statsgen output in SchemaGen (an OSS-only +# component). +infer_schema = SchemaGen(stats=statistics_gen.outputs['output']) + +# Next, we do example validation. +validate_stats = ExampleValidator( + stats=statistics_gen.outputs['output'], + schema=infer_schema.outputs['output']) +``` + +One advantage of this proposal is that it decouples components with our current +canonical pipeline topology (e.g. StatisticsGen must follow ExampleGen). This is +also the style of the TFX pipeline configuration. Another advantage is that +users can run components with custom/modified inputs, not just those produced by +other TFX components. + +One disadvantage of this proposal is that it is not immediately obvious what +inputs components take and which outputs components emit. On the other hand, it +is not obvious from first principles either that StatisticsGen should follow +ExampleGen (even though it is common knowledge for TFX team members). + +### Component execution, execution result objects, visualization + +#### Proposal: InteractiveContext.run(component) returns an ExecutionResult, whose output artifacts can be visualized using InteractiveContext.show(artifacts) + +##### Part 1 (Option 1): add InteractiveContext.run() **[recommended]** + +We propose to add a new `InteractiveContext` class. Distinct from a pipeline +runner which takes in an entire TFX pipeline, an instance of this class allows +interactive execution of individual components. Here, a user would construct +components with appropriate parameters and execution properties, and the +`InteractiveContext.run(component)` method would execute that component, thereby +materializing any output artifacts of that component. + +An advantage of this style is that it does not bifurcate the TFX pipeline runner +concept into "pipeline runners" and "component runners", and it is very clear +that this API is only meant for interactive usage (as opposed to the two +alternatives below). A disadvantage is that we may not want to introduce +interactive usage as a first class citizen, preferring to merge it with the +runner concept. + +(A prototype for this is implemented in +[taxi_pipeline_interactive.ipynb](https://github.com/tensorflow/tfx/blob/master/tfx/examples/chicago_taxi_pipeline/taxi_pipeline_interactive.ipynb)). +See the "Example notebook usage" section below. + +##### Part 1 (Option 2): add Component.run() + +In this alternative, we propose to add a run() method to the +[BaseComponent](http://google3/third_party/tfx/components/base/base_component.py?l=44&rcl=252517506) +class. Given the appropriate parameters and execution properties, this will run +that component of your pipeline. This will be in-process and not involve any +external TFX OSS orchestrators (like Airflow or Kubeflow) and is suitable only +for small development datasets. + +An advantage of the Component.run() style is that it is simple and intuitive in +the notebook setting. A disadvantage is that this does not encourage the best +practice for production pipeline definition (i.e. defining all pipeline +components and subsequently calling something like Pipeline.run()). To mitigate +this, we can emit a warning when this is called outside a Jupyter notebook +environment. + +An advantage of returning an explicit ExecutionResult is that we now separate +component definition (configuration) from results for a specific run +(execution). + +##### Part 1 (Option 3): don't add Component.run(); have separate run_component() + +Alternatively, we don't have to put the run() method on the Component class. We +can factor out a utility method `run_component(component)` that does the same +thing. This style is less intuitive for the notebook use case but may better +encourage best practices during production. + +##### Part 2 (Option 1): a user can visualize outputs of an ExecutionResult by using Jupyter visualizer for artifact class, or by using InteractiveContext.show(artifact) **[recommended]** + +Here, after a `InteractiveContext.run(component)` call, we get an +ExecutionResult, on which we can retrieve artifacts with +`result.outputs[output_name]`. This will return the Artifact pointers emitted by +that specific component execution. Next, the user may return +`component.output[output_name]` as the return value from a notebook cell. +Alternatively, a user may call +`InteractiveContext.show(component.output[output_name])` which hooks into +artifact-specific logic to visualize each artifact type (see Part 3 below). + +##### Part 2 (Option 2): Artifact execution via show(artifact) + +In this alternative, instead of running components and retrieving artifacts +after they are run, artifacts are "run" implicitly when show(artifact) is +called. This will implicitly execute the component necessary to generate the +artifact. + +Pros: One show() call rather than separate run() and show(). Dependencies can be +handled under the hood, and we can avoid visualizing stale results. + +Cons: Not intuitive as this is not what “show” means. Not the simplest mental +model and potentially confusing. If a user wants to always show artifacts after +running, it is very natural to put run() and show() in the same notebook cell. +Running code and components that are not part of the current executed cell is +also not a notebook-friendly pattern. + +##### Part 3: Notebook visualizations for well-known artifact types can be registered + +We introduce a `NotebookArtifactVisualizationRegistry` class on which we may +register visualizations (e.g. HTML renderings for Colab / Jupyter notebooks), +which are to be returned from ExecutionResult.read() when run in the notebook +environment. For specific artifact types, we allow registration of handlers to +return visualizations for those types. We will write visualizations for +well-known artifact types we use. For example, the `ExampleStatistics` Artifact +type output by StatisticsGen could be visualized by producing an interactive +display of the resulting statistics +[using Facets](https://pair-code.github.io/facets/). + +##### Example notebook usage + +Here is an example of what notebook execution may look like in this scheme. + +``` +Input[0]: +# To begin, we initialize an interactive context. Here, by not passing +# in a base directory or metadata configuration, we create an ephemeral +# context whose outputs will be in a temporary directory. +context = InteractiveContext() + +# Alternatively, we may pass in these directories for a context using a +# persistent store: +# +# context = InteractiveContext(base_dir=my_base_dir, +# metadata_connection_config=my_config) +``` + + + + + + + + +
Input[1]: +

+# First, ExampleGen with a run / read. +example_gen = CsvExampleGen(input_base=examples) +

+# Note that the output will be of type 'ExamplesPath', for which we +# may have registered a notebook visualization handler. +example_gen_result = context.run(example_gen) +

+example_gen.outputs['examples'] +

+# alternative style: explicit context.show() method +context.show(example_gen.outputs['examples']) +

Output[1]: +

+_notebook visualization indicating we have N examples at some temp path_ +

+ + + + + + + + +
Input[2]: +

+# Next, StatisticsGen with a run / read. +statistics_gen = StatisticsGen(input_data=example_gen.outputs['examples']) +

+context.run(statistics_gen).outputs['output'] +

+# alternative styles: +# context.show(context.run(statistics_gen).outputs['output']) +# context.run().read('output', visualization_handler=blah) +# context.run().show('output', visualization_handler=blah, visualization_args=) +

Output[2]: +

+_notebook visualization for statsgen output_ +

+ + + + + + + + +
Input[3]: +

+# Next, SchemaGen without a run / read. +infer_schema = SchemaGen(stats=statistics_gen.outputs['output']) +

+# Finally, ExampleValidator with a run / read. Note that SchemaGen +# will be implicitly run (see Note 2 below). +validate_stats = ExampleValidator( +

+ stats=statistics_gen.outputs['output'], +

+ schema=infer_schema.outputs['output']) +

+context.run(validate_stats) +

Output[3]: +

+_ExecutionResult object for ExampleValidator_ +

+ +Note that the user may have forgotten to run InteractiveContext.run() on +upstream components in the dependency graph. Instead of implicitly running these +upstream components, we remind the user to explicitly run upstream notebook +cells (with a readable error message). We think this explicit mode of component +execution is more notebook-friendly, and is easy to use with common notebook +actions such as “Run All”, “Run Cells Before”, and “Run Cells After”. + +### Export to a selected orchestration engine (v0) + +#### Filter out InteractiveContext() objects + +##### Option 1: Replace InteractiveContext instances with dummy versions. + +1. Search for possible import alias, e.g. `from + tfx.orchestration.interactive.interactive_context import InteractiveContext + as FooBar` + +* Search for all instances of string ".*InteractiveContext", or the alias name + if found from prior step. +* Replace each instance with `DummyInteractiveContext`, which inherits from + InteractiveContext and basically does nothing / returns empty + ExecutionResult on .run(). + + ``` + class DummyInteractiveContext(InteractiveContext): + def run(self, + component: base_component.BaseComponent, + enable_cache: bool = True): + return None + ``` + + 1. This should cover the case where the class definition is aliased. + + ``` + aliased_class = interactive_context.InteractiveContext + sess = aliased_class() + ``` + + 1. This should cover subsequent aliases of InteractiveContext instances. + + ``` + a = InteractiveContext() + b = a + c = InteractiveContext() + d = c + ``` + +Cons: + +* DummyInteractiveContext is now present/clutters the production pipeline code + (it's a no-op so mainly affects readability, not execution). +* Down the line, converting back to a notebook (replacing + DummyInteractiveContext with InteractiveContext) could be fragile. + +##### Option 2: Ensure InteractiveContext only runs in notebook context. **[recommended]** + +* If InteractiveContext is run outside of a notebook context, just log a + warning and return. +* Bi-directional import to notebook from pipeline would "just work". + +Cons: + +* InteractiveContext is still present in the production pipeline as a no-op / + affects readability. +* Puts the burden on user to scrub out calls to InteractiveContext. + +##### Option 3: Mark lines/cells to be skipped during export. + +Add custom magic to mark lines/cells as skip_for_export, can also be used by the +user to skip scratch work in cells. + +Example line magic: + +``` +%skip_for_export sess = InteractiveContext() +... +%skip_for_export sess.run(example_gen) +``` + +Example cell magic: + +``` +%%skip_for_export +# Cell contains scratch work that doesn't need to be exported. +... +``` + +Cons: + +* Puts burden on the user to filter out the InteractiveContext objects. User + may forget to mark some usages of InteractiveContext, meaning + InteractiveContext instances can get leaked to the final pipeline. + +##### Option 4: Delete the lines containing InteractiveContext variables. + +Cons: + +* Not robust to duplicate references. +* We can find the references to InteractiveContext by either keeping track of + them weakly within the class on __init__, or we can use gc module to + dynamically find the references. But then finding and deleting all + associated lines with each instance seems hard. + * What if user makes a helper function and passes in a context variable? + (not likely, but possible) + +Note each of these options only filters the InteractiveContext usage in the +exported python script, and does not prevent the user from adding it back +afterwards. + +#### Export notebook contents to pipeline + +1. Present the user with a Beam pipeline export template cell. Airflow/Kubeflow + template code can be linked to in documentation, or populated in additional + cells with code commented. + 1. User fills out any globals/configuration code specific to + Beam/Airflow/Kubeflow. + 1. User fills out a `pipeline.Pipeline()` instance to export. + 1. We can alternatively have the user wrap the pipeline.Pipeline() + instance in a function, like `_create_pipeline(...)` in the existing + [pipeline examples](https://github.com/tensorflow/tfx/blob/master/tfx/examples/chicago_taxi_pipeline/taxi_pipeline_simple.py), + but this could make pipeline export more cumbersome for users who + have not organized their notebook in such a way. We could also + potentially update the notebook example to push users into a + particular notebook organization. +1. When the user runs the cell, or more specifically, when + `context.export_to_pipeline()` is executed, export the notebook code to .py + file. + 1. It seems beneficial to keep the export_to_pipeline() line in the same + cell as the pipeline.Pipeline() declaration so the user can fix any + errors before the export happens. + 1. As a first pass, we can export the entire notebook. + 1. We may consider using IPython magics to filter out specific + lines/cells in the future. + 1. This step requires the user to fill out the notebook filename as + there does not seem to be a robust way for us to programmatically + retrieve this (see comment in examples below). + 1. We can try to hide away parts of the template cells in the notebook and + move them into Jinja template files, but if the user has to fill in + pipeline-specific config, it might be more straightforward for them to + see everything in one place. + +##### Airflow template cell + +``` +# Airflow template cell. + +from tfx.orchestration import metadata +from tfx.orchestration import pipeline +from tfx.orchestration.airflow.airflow_runner import AirflowDAGRunner + +############################################################################## +# TODO(USER): Configs + +# Directory and data locations. This example assumes all of the chicago taxi +# example code and metadata library is relative to $HOME, but you can store +# these files anywhere on your local filesystem. +_tfx_root = os.path.join(os.environ['HOME'], 'tfx') +_pipeline_root = os.path.join(_tfx_root, 'pipelines', _pipeline_name) +# Sqlite ML-metadata db path. +_metadata_path = os.path.join(_tfx_root, 'metadata', _pipeline_name, + 'metadata.db') + +# Airflow-specific configs; these will be passed directly to Airflow. +_airflow_config = { + 'schedule_interval': None, + 'start_date': datetime.datetime(2019, 1, 1), +} +############################################################################## + +# TODO(USER) +p = pipeline.Pipeline( + pipeline_name=, + pipeline_root=, + components=[ + example_gen, statistics_gen, infer_schema, validate_stats, transform, + trainer, model_analyzer, model_validator, pusher + ], + enable_cache=True, + metadata_connection_config=metadata.sqlite_metadata_connection_config( + metadata_path)) + +airflow_pipeline = AirflowDAGRunner(_airflow_config).run(p) + +# Export notebook contents. +context = InteractiveContext() +# TODO(USER): Name of the notebook file to be used for retrieving +# notebook contents. IPython kernels are agnostic to notebook metadata by design, +# and it seems that existing workarounds to retrieve the notebook filename are not +# universally robust (https://github.com/jupyter/notebook/issues/1000). +context.export_to_pipeline(notebook_filename='taxi_pipeline_interactive.ipynb', + pipeline_name='') +``` + +##### Kubeflow template cell + +``` +# Kubeflow template cell. + +from tfx.orchestration import pipeline +from tfx.orchestration.kubeflow.runner import KubeflowRunner + + +############################################################################## +# TODO(USER): Configs + +# Directory and data locations (uses Google Cloud Storage). +_input_bucket = 'gs://my-bucket' +_output_bucket = 'gs://my-bucket' +_tfx_root = os.path.join(_output_bucket, 'tfx') +_pipeline_root = os.path.join(_tfx_root, _pipeline_name) + +# Google Cloud Platform project id to use when deploying this pipeline. +_project_id = 'my-gcp-project' + +# Python module file to inject customized logic into the TFX components. The +# Transform and Trainer both require user-defined functions to run successfully. +# Copy this from the current directory to a GCS bucket and update the location +# below. +_module_file = os.path.join(_input_bucket, 'taxi_utils.py') + +# Path which can be listened to by the model server. Pusher will output the +# trained model here. +_serving_model_dir = os.path.join(_output_bucket, 'serving_model', + _pipeline_name) + +# Region to use for Dataflow jobs and AI Platform training jobs. +# Dataflow: https://cloud.google.com/dataflow/docs/concepts/regional-endpoints +# AI Platform: https://cloud.google.com/ml-engine/docs/tensorflow/regions +_gcp_region = 'us-central1' + +# A dict which contains the training job parameters to be passed to Google +# Cloud AI Platform. For the full set of parameters supported by Google Cloud AI +# Platform, refer to +# https://cloud.google.com/ml-engine/reference/rest/v1/projects.jobs#Job +_ai_platform_training_args = {...} + +# A dict which contains the serving job parameters to be passed to Google +# Cloud AI Platform. For the full set of parameters supported by Google Cloud AI +# Platform, refer to +# https://cloud.google.com/ml-engine/reference/rest/v1/projects.models +_ai_platform_serving_args = {...} + +# Beam args to run data processing on DataflowRunner. +_beam_pipeline_args = [...] + +# The rate at which to sample rows from the Chicago Taxi dataset using BigQuery. +# The full taxi dataset is > 120M record. In the interest of resource +# savings and time, we've set the default for this example to be much smaller. +# Feel free to crank it up and process the full dataset! +_query_sample_rate = 0.001 # Generate a 0.1% random sample. + +# This is the upper bound of FARM_FINGERPRINT in Bigquery (ie the max value of +# signed int64). +_max_int64 = '0x7FFFFFFFFFFFFFFF' + +# The query that extracts the examples from BigQuery. The Chicago Taxi dataset +# used for this example is a public dataset available on Google AI Platform. +_query = ... +############################################################################## + +# TODO(USER) +p = pipeline.Pipeline( + pipeline_name=, + pipeline_root=, + components=[ + example_gen, statistics_gen, infer_schema, validate_stats, transform, + trainer, model_analyzer, model_validator, pusher + ], + additional_pipeline_args={ + 'beam_pipeline_args': beam_pipeline_args, + # Optional args: + # 'tfx_image': custom docker image to use for components. + # This is needed if TFX package is not installed from an RC + # or released version. + }, + log_root='/var/tmp/tfx/logs') + +kubeflow_pipeline = KubeflowRunner().run(p) + +# Export notebook contents. +context = InteractiveContext() +# TODO(USER): Name of the notebook file to be used for retrieving +# notebook contents. IPython kernels are agnostic to notebook metadata by design, +# and it seems that existing workarounds to retrieve the notebook filename are not +# universally robust (https://github.com/jupyter/notebook/issues/1000). +context.export_to_pipeline(notebook_filename='taxi_pipeline_interactive.ipynb', + type='kubeflow') +``` + From 5524b044267d8bce33331334b2a2908cf3c45fb4 Mon Sep 17 00:00:00 2001 From: Edd Wilder-James Date: Fri, 16 Aug 2019 12:56:28 -0700 Subject: [PATCH 016/365] Create 20190816-tf-project-versioning.md --- rfcs/20190816-tf-project-versioning.md | 38 ++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 rfcs/20190816-tf-project-versioning.md diff --git a/rfcs/20190816-tf-project-versioning.md b/rfcs/20190816-tf-project-versioning.md new file mode 100644 index 000000000..7e2d8a9fa --- /dev/null +++ b/rfcs/20190816-tf-project-versioning.md @@ -0,0 +1,38 @@ +# Library versioning in the TensorFlow organization + +| Status | Proposed | +:-------------- |:---------------------------------------------------- | +| **Author(s)** | Edd Wilder-James (ewj@google.com), Martin Wicke (wicke@google.com) | +| **Sponsor** | Kevin Haas (khaas@google.com) | +| **Updated** | 2019-08-16 | + +## Objective + +This document describes best practices for numbering versions of libraries +that form part of the TensorFlow suite of projects. This practice is required for dependent +projects hosted under the [TensorFlow organization](https://github.com/tensorflow) on +GitHub, and advisory for dependent projects hosted elsewhere. + +## Definitions + +"TensorFlow" in this document refers to the core TensorFlow project, as developed in +GitHub `tensorflow/tensorflow`. + +## Motivation + +As the number of projects dependent on TensorFlow increases, such as those shipped by +SIG Addons or IO, it is helpful to maintainers to understand the constraints on how +to number their releases. + +## Versioning Policy + +All projects must follow [semantic versioning](https://semver.org/). + +Until a project reaches 1.0, it does not have to make any backward compatibility guarantees. + +Projects should not try to track major TensorFlow versioning to indicate compatibility +with particular TensorFlow releases. Instead, compatibility must be signalled +by the use of dependencies in `pip`, or whichever package manager is being used by the project. + +Within the constraints of semantic versioning, project maintainers should feel free to do +whatever is best for their projects and users. From 5c5439251a715574938231af4a41dddfb0cef711 Mon Sep 17 00:00:00 2001 From: Edd Wilder-James Date: Fri, 16 Aug 2019 13:00:34 -0700 Subject: [PATCH 017/365] Update 20190816-tf-project-versioning.md Change "libraries" to the more general "projects." --- rfcs/20190816-tf-project-versioning.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rfcs/20190816-tf-project-versioning.md b/rfcs/20190816-tf-project-versioning.md index 7e2d8a9fa..55b811d8b 100644 --- a/rfcs/20190816-tf-project-versioning.md +++ b/rfcs/20190816-tf-project-versioning.md @@ -1,4 +1,4 @@ -# Library versioning in the TensorFlow organization +# Project versioning in the TensorFlow organization | Status | Proposed | :-------------- |:---------------------------------------------------- | @@ -8,7 +8,7 @@ ## Objective -This document describes best practices for numbering versions of libraries +This document describes best practices for numbering versions of projects that form part of the TensorFlow suite of projects. This practice is required for dependent projects hosted under the [TensorFlow organization](https://github.com/tensorflow) on GitHub, and advisory for dependent projects hosted elsewhere. From 24da43aab341488e8889bdb5b7c3ba5f6e2ee13e Mon Sep 17 00:00:00 2001 From: Kevin Haas Date: Mon, 19 Aug 2019 16:30:29 -0700 Subject: [PATCH 018/365] Final updates --- rfcs/20190815-tfx-notebook.md | 44 ++++++++++++++--------------------- 1 file changed, 17 insertions(+), 27 deletions(-) diff --git a/rfcs/20190815-tfx-notebook.md b/rfcs/20190815-tfx-notebook.md index addfcc930..d2602035f 100644 --- a/rfcs/20190815-tfx-notebook.md +++ b/rfcs/20190815-tfx-notebook.md @@ -8,21 +8,21 @@ Status | Proposed ## Objective -We want to build a notebook user experience for modeling / iterative -development using TFX Components. This will provide a fast, familiar environment -for developing model and pipeline code with standard TensorFlow + TFX utilities, +We want to build a notebook user experience for modeling / iterative development +using TFX Components. This will provide a fast, familiar environment for +developing model and pipeline code with standard TensorFlow + TFX utilities, plus automatic notebook → pipeline export: * Imperative, [define-by-run](https://ai.googleblog.com/2017/10/eager-execution-imperative-define-by.html), cell-by-cell workflow - * Start directly from Colab – no running pipeline needed + * Start directly from Notebook/Colab – no running pipeline needed * Run TFX components as you need them, in separate cells * No explicit DAG definitions or continuous execution * Simple Python API per TFX component * ExampleGen, StatsGen, SchemaGen, Transform, Trainer, Evaluator * 100% TFX compatible for automatic notebook → pipeline export -* Analyze artifacts natively in Colab +* Analyze artifacts natively in Notebook/Colab * Built-in TensorBoard, Facets, TFMA visualizations * Dataset, stats, eval metrics available in notebook for custom analysis * Zero-setup, interactive onboarding tool for new TFX users on @@ -46,7 +46,7 @@ By combining the notebook experience + TFX components, users can easily run * Custom analyses on the output of any of these components with standard Python -To close the loop, the notebook can be automatically exported as a pipeline +To close the loop, the notebook will be automatically exported as a pipeline configuration that users can directly deploy as a scalable TFX pipeline. There is no additional modification required. @@ -59,16 +59,18 @@ and data scientists within and outside of Google. ## Design Proposal -This proposal proposes a set of slightly different primitives that better match -concepts in the current OSS SDK. +This proposal proposes a set of primitives that match concepts in the current +TFX SDK. ### Component definition; inputs and outputs #### Proposal: components should take inputs, produce outputs (instead of taking predefined upstream components) -We propose to follow the current TFX OSS style of having components explicitly -take input channels (i.e. streams of artifacts of a specific type) and produce -output channels (of another specific type). This could look like this: +This proposal proposes a set of primitives that match concepts in the current +TFX SDK. We propose to follow the current TFX style of having components +explicitly take input channels (i.e. streams of artifacts of a specific type) +and produce output channels (of another specific type). This could look like +this: ``` # Here, with an input_base as an execution parameter with a given @@ -79,8 +81,7 @@ example_gen = CsvExampleGen(input_base=examples) # input to StatisticsGen. statistics_gen = StatisticsGen(input_data=example_gen.outputs['examples']) -# We then similarly use the statsgen output in SchemaGen (an OSS-only -# component). +# We then similarly use the statsgen output in SchemaGen. infer_schema = SchemaGen(stats=statistics_gen.outputs['output']) # Next, we do example validation. @@ -89,17 +90,6 @@ validate_stats = ExampleValidator( schema=infer_schema.outputs['output']) ``` -One advantage of this proposal is that it decouples components with our current -canonical pipeline topology (e.g. StatisticsGen must follow ExampleGen). This is -also the style of the TFX pipeline configuration. Another advantage is that -users can run components with custom/modified inputs, not just those produced by -other TFX components. - -One disadvantage of this proposal is that it is not immediately obvious what -inputs components take and which outputs components emit. On the other hand, it -is not obvious from first principles either that StatisticsGen should follow -ExampleGen (even though it is common knowledge for TFX team members). - ### Component execution, execution result objects, visualization #### Proposal: InteractiveContext.run(component) returns an ExecutionResult, whose output artifacts can be visualized using InteractiveContext.show(artifacts) @@ -127,11 +117,11 @@ See the "Example notebook usage" section below. ##### Part 1 (Option 2): add Component.run() In this alternative, we propose to add a run() method to the -[BaseComponent](http://google3/third_party/tfx/components/base/base_component.py?l=44&rcl=252517506) +[BaseComponent](https://github.com/tensorflow/tfx/blob/master/tfx/components/base/base_component.py) class. Given the appropriate parameters and execution properties, this will run that component of your pipeline. This will be in-process and not involve any -external TFX OSS orchestrators (like Airflow or Kubeflow) and is suitable only -for small development datasets. +external TFX orchestrators (like Airflow or Kubeflow) and is suitable only for +small development datasets. An advantage of the Component.run() style is that it is simple and intuitive in the notebook setting. A disadvantage is that this does not encourage the best From 00c4402b650f36888fbed2888c0cf6e378ba7c7e Mon Sep 17 00:00:00 2001 From: Kevin Haas Date: Mon, 19 Aug 2019 16:37:38 -0700 Subject: [PATCH 019/365] Last 'final changes' --- rfcs/20190815-tfx-notebook.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20190815-tfx-notebook.md b/rfcs/20190815-tfx-notebook.md index d2602035f..32423febd 100644 --- a/rfcs/20190815-tfx-notebook.md +++ b/rfcs/20190815-tfx-notebook.md @@ -1,4 +1,4 @@ -# TFX OSS Iterative Notebook Proposal +# TFX Iterative Notebook Proposal Status | Proposed :------------ | :------- From a3315fb9a154a632b796a885df6ae1ace5190516 Mon Sep 17 00:00:00 2001 From: Mark Sandler Date: Tue, 20 Aug 2019 14:19:59 -0700 Subject: [PATCH 020/365] RFC: Standardizing Composite Operations In TensorFlow (#113) * RFC proposal on standartizing composite operations in tensorflow. * RFC: Standardizing Composite Operations In TensorFlow * typo fix * Update 20190610-standartizing-composite_ops.md typo fixes * Update rfcs/20190610-standartizing-composite_ops.md Co-Authored-By: Mehdi Amini * Update 20190610-standartizing-composite_ops.md * Update 20190610-standartizing-composite_ops.md * Update 20190610-standartizing-composite_ops.md * Fixes type in file name --- rfcs/20190610-standardizing-composite_ops.md | 532 +++++++++++++++++++ 1 file changed, 532 insertions(+) create mode 100644 rfcs/20190610-standardizing-composite_ops.md diff --git a/rfcs/20190610-standardizing-composite_ops.md b/rfcs/20190610-standardizing-composite_ops.md new file mode 100644 index 000000000..bd24b979d --- /dev/null +++ b/rfcs/20190610-standardizing-composite_ops.md @@ -0,0 +1,532 @@ +# Standardizing composite ops in tensorflow to support efficient inference. + +Status | Accepted +:------------ | :------------------------------------ +**Author(s)** | Mark Sandler (sandler@google.com) +**Sponsor** | Alexandre Passos (apassos@google.com) +**Updated** | 2019-06-10 + +## Objective + +The goal of this proposal is to create a simple API that allows +adding new composite ops in a way that they can be automatically and robustly +processed by downstream _inference_ tooling. The developers (of the composite op) should be able to +iterate on their implementation or even replace them with standard tensorflow +op, without breaking any existing tools. + +Why? Composite ops often provide building blocks for building complex models. +However, and this is especially true for embedded and specialized hardware, +these ops when implemented naively, become unusable due to architectural +(hardware) details. It is thus preferable for the downstream tools to be able to +extract such composite ops and for instance provide specialized implementation. + +The current proposal concentrates on supporting inference-only transformations +and optimizations. However we leave the door open for follow-up gradient +optimization support. See appendix for a few possible ways forward. + +### Goals: + +* Create a standard way for tensorflow community to implement re-usable ops + that can be efficiently processed by Tensorflow core tooling (such as + TOCO/MLIR), grappler, as well as third party tooling, such as conversion to + 3-rd party engines (e.g. TFLite). +* Maximize backward and forward compatibility of such composite ops, while + allowing changes to implementation including switch to native tensorflow op. +* Provide for *future* support of composite op gradient extraction and + optimization by downstream tools. +* Bonus: enable *serialized* models to benefit from more efficient + composite-ops implementations as underlying platform changes. + +### Non Goals + +* Operation fusion or any graph optimizations. This should be handled by + tensorflow compilers. Though part of this proposal might simplify detecting + desirable transformations by MLIR and XLA frameworks. +* Discussion what should live in "core" tensorflow (e.g. `tf.xxx.my_cool_op` ) +* Ultra complex functions (e.g. trained models) that are unlikely to get + specialized implementations in hardware. +* Immediate support for processing gradients (and forward inference in the presense of gradients) + for composite ops. + +## Motivation + +Historically, tensorflow API contained two types of operations: “core” operators +implemented in CUDA/C++, and composite ops that are implemented as a subgraph +containing other tensorflow operations. Here we will refer to "core" operators +that have native implementation as `tf_op`. As ops mature and gain adoption, +efficiency often dictates replacing composite op with their native +implementation. + +Some examples of ops that were composite at some point (or still are today): + +* Composite non-linearities (such as swish, tanh, and sigmoid); +* many flavors of convolutions (such as atrous convolutions (expressible via + transpose/batch_to_depth and regular convolutions), depthwise-convolution + with depth multiplier); +* Normalization methods (e.g. BatchNorm, Instance Norm, etc… ), some unusual + flavors of convolutional padding, etc; +* Advanced numeric functions (e.g. matrix exponentiation); +* Combinatorial algorithms (e.g bipartite matching and nms) +* Specialized losses CTC loss, RNN layer steps +* tf.einsum + +Many of these ops have since became standard tensorflow ops with efficient +native implementations. + +It is important to note that many of the ops above precede or appeared during +the early days of Tensorflow, when compatibility with downstream tooling wasn't +that much of a concern. Nevertheless, for instance the switch from non-fused batchnorm to +fused one, caused some disruption in early tensorflow processing tools. Some of +which are still reflected in the +[comments](https://github.com/tensorflow/tensorflow/blob/84c5a4551e2e71d854932cb389c359db11cfa2b1/tensorflow/python/ops/nn_impl.py#L1241). + +Adding new operations today is much more complex due to existence of a large +eco-system of processing tools. Even within core tensorflow there are multiple +teams targeting dozens of hardware architectures with various priorities so +adding new operations (or even changing the implementation of existing composite +ops) becomes a bad case of chicken-and-egg problem. + +Why is it important? + +Today, new ML operations and composite blocks emerge regularly. They promise +improved functionality, efficiency and often both. These ops can often be +represented as +[simple](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/nn_impl.py#L531), +and +[not-so-simple](https://github.com/tensorflow/tensorflow/blob/r1.13/tensorflow/python/ops/linalg/linalg_impl.py#L220) +tensorflow subgraphs. On the other hand, to get the full utility a custom +implementation on various platforms is necessary even if composite +implementation in tensorflow is sufficiently performant. For example using un-optimized +activations in mobile applications can increase latency on mobile devices by +more than 100%. This presents a conundrum: should implementers of such +operations create new atomic op and provide efficient implementations for their +target platform and break everyone else? Or should they provide tensorflow based +graph implementation and then rely on graph pattern recognition to extract and +match in the tooling of their choice. + +Who is affected? Tensorflow users, software and hardware vendors. + +### Why no gradients? + +Adding gradient support would dramatically widen the scope of this proposal. See +appendix for details on why it is complicated. We also have outlined several +possible options to add gradient support on top of this proposal, depending +on the needs. + +### Existing prior art. + +Tensorflow Lite have developed +[tf.lite.OpHint](https://www.tensorflow.org/api_docs/python/tf/lite/OpHint), +which solves a very similar problem. However it is positioned as tf.lite +specific extension, which doesn't provide a public api for graph consumers +(other than TOCO) to extract the hints, limiting the potential for broader +adoption by other tooling and limiting its usefulness to the users. + +`tf.lite.OpHint` also adds wrong direction to the flow of dependencies from +tensorflow to lite, should core tensorflow api choose to use to annotate +composite ops. + +Pattern matching is another approach that is currently used. For example TfLite +has pattern matching code that tries to detect various patterns that can then be +converted into specialized ops, such as +[prelu](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/toco/graph_transformations/identify_prelu.cc) +and +[lstm](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/toco/graph_transformations/identify_lstm.cc) +and others files in tf.lite directory. + +## User Benefit + +The main beneficiaries would be: + +a) ML community that get a clean way of defining of composite ops without having +to commit to particular implementation (or whether to build new `tf_op`) + +b) Tool maintainers that wouldn't need to write complicated and brittle graph +extraction code whose sole purpose is to reverse engineer tensorflow +implementations. For example here are some tf-lite transformations that +identifies composite ops like +[prelu](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/toco/graph_transformations/identify_prelu.cc), +[lstm](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/toco/graph_transformations/identify_lstm.cc), +[l2 pooling](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/toco/graph_transformations/identify_l2_pool.cc), +etc. Which essentially requires updates to lite whenever tensorflow modifies +those implementations. + +_Blog post announcement_: "How to add new functions to tensorflow" + +_Subtitle_: "So you don't regret it later". + +## Design Proposal + +Tensorflow already provides a mechanism to define functions inside a graph +called `tf.function`. In short, `tf.function` allows to define a subgraph with +dedicated inputs and outputs, that then is substituted as a custom node into +graphs. The gist of our proposal is to add a few standardized attributes to +signal to the processing/executing library that this function implements a +“standard” function. The consumer library then can choose to process it +differently should they choose to. The important part is that we define a +standard set of attributes that users and tooling can rely on. + +As a start, we propose to add “implements” as a new attribute +defining a “standard” function. + +For example: + +``` +@function.function( + implements=“google.matmul_low_rank_matrix”) +def matmul_lowrank(x, y): + “Multiplies two low rank matrices. ” + # Basic implementation goes here. +``` + +Note we use a wrapper named function, that under-the-hood will create a standard +tensorflow function with standard attributes set. + +Arguments: + +* `implements`: we propose using namespaces with the top-level namespace being + company name, with a few reserved namespaces indicating built-in ops, if so + desired. This attributes indicates what function this subgraph implements, + and provides a hint for downstream parsers that they can replace this with + their own implementation should they so choose. + +This brings us the following advantages: + +1) *Backward and fork compatibility*: the tooling by default will, ignore +`implements` and just rely on function implementation available in the graph, +thus ensuring that it “just works”. Further, if users have their proprietary +implementations they can still ship models that would transparently work in open +source tensorflow. + +2) *Easy detection*: Tools can easily detect the functions attribute and +substitute with its own more efficient implementation if available. + +3) *Simplified implementations on custom hardware*: The downstream tooling can +use provided reference implementation as a source of ground truth (that can run +on custom hardware out of the box!) when developing custom implementation on +their hardware. + +4) *Reduced implementation dependencies*: Operation maintainer can change the +implementation without the fear of breaking the downstream tools pattern +recognition (since there isn’t any.) + +5) *Forward compatibility*: Operation maintainer can even add an atomic +implementation without breaking existing tools. No overhead in keeping the basic +implementation available. + +6) *Simpler automatic conversion* As tensorflow moves forward it is conceivable +that its computation description language (today: graph def, tomorrow: MLIR) +will be fully be separated from the underlying tensorflow kernel +implementations. This kind of standard attributes allow for more automatic +conversions should the need arise. + +7) Does not change op developer workflow and can be introduced incrementally to +existing code. + +### Behind the scenes changes + +When a new tf.function is created, behind the scenes tensorflow creates up-to 3 +functions that are stored in the graph. These functions are: 1) `Inference`: +x->y, a straightforward function that given composite op implements. 2) `Forward +function`: same as inference but includes extra outputs that are needed for +backprop 3) `Backprop function`: takes as an input the dL/dY, and all the side +outputs of `Forward function` and produces dL/dx + +In the current implementation the annotations will only be added to `inference` +function, but not to `Forward` or `Backprop` functions. + +### More on forward compatibility + +Suppose later, the maintainer of the op decides that certain composite op +deserves its own atomic op due to its usefulness. If we have standardized +attributes like the one above, the TensorFlow compiler can check if op with the +name that this function “implements” is available and substitute it at runtime. +The significant advantage is that even old serialized models will be able to +take advantage of improved implementations. As the op gains more adoption and +its support becomes more widespread the previous composite definition can be +deprecated or retired. However such an approach allows both implementations to +coexist for unlimited period of time and the same graph can be both: efficient +on the platforms that support it, and “not-broken” on the platforms that don’t. + +### Alternatives considered + +#### Alternative 0: Do nothing + +Everyone just continues with ad-hoc implementations. + +##### Pros: + +* No need for RFC or new public API + +##### Cons: + + Downstream tools are stuck between + + a) trying to implement ops, even if the + efficiency is not yet a concern. In which case this just redo's + implementation in the downstream tooling using its own language. Or + + b) trying to extract certain graph patterns that can be optimizing and + following the moving target. Once such pattern is extracted there is a + pressure on op-maintainers to freeze his implementation to avoid breaking + the patterns used by the downstream tools. Or + + c) Trying to roll out their own extension such as `OpHint` for tflite. + +* New ops that could push the industry forward however are stymied due to lack + efficient implementation, software vendors are not interested in + implementation until the ops become popular enough, creating a vicious + cycle. + +#### Alternative 1: Recommend each new op to be implemented as a new atomic node in graphdef. + +#### Pros: + +* Simplified graph processing since the operation is just a single Node in the + graph. +* Clean graph def. +* Tooling (once supports new ops) stays forward compatible. The underlying + implementation is invisible. + +#### Cons: + +Introduces backward incompatible changes that could be avoided. Every time an +operation is added, the versions of Tensorflow that would have been capable of +processing the original graph (with core ops), will no longer be able to read +the graph def that contains the new to process the new version, even though the +only thing that *has* changed is the tensorflow added a faster implementation of +that Op. + +For example: consider matrix exponentiation. It is implemented as a fairly +complex tensorflow graph that uses just regular matrix multiplication and other +standard ops. However, one can easily imagine that this implementation could be +highly optimized if done as a single expm node, however if we replace that, it +will break old tools, which would either need to effectively re-implement +tensorflow original implementation. + +Requires custom version of tensorflow to add new ops outside of tensorflow which +makes it out of reach for most users and introduces incompatibilities within the +ecosystem, effectively forcing large users to be stuck at old versions of +tensorflow. + +#### Alternative 2: Use name scopes for delineation of the ops + +Pros: + +* Simple and intuitive graph-def +* Backward compatible - no new operations are added. + +Cons: + +* very brittle for the tools to optimize such ops. If they depend on scope + names it can easily cause conflicts with models that are doing something + else or accidental renames can cause scopes to become invisible for the + graph processing. +* If tools depend on graph pattern matching, this makes it hard to change + implementations later on. + +* Tooling is not forward compatible. + + +## Appendix: Future support for optimizing gradient functions + +This proposal is concerned with optimiziging inference pass of composite ops . The +motivation today is that the downstream tooling today rarely if ever deals with gradients, and when +it does, it can rely on the provided implementation. However eventually +this is likely to change, and we would like to keep the door open for extending +this composite op framework to support optimization of both forward +and backward passes. In this appendix we provide several options of how this +could be potentially supported in the future, for the reference purposes. + +### Background: why is it hard + +Suppose we have implemented function `my_function(x) = +very(complex(implementation(x)))`. Now, if some downstream library would like to +support optimized implementation of `my_function`, all it needs to do is to +replace the tensorflow implementation with its own implementation. However, if +at any point we need to compute gradient of `my_function(x)`, then to avoid +recomputation, the default implementation of gradient would need all +intermediate values produced by tensorflow implementation. In this case this +would be values of `implementation(x)`, `complex(implementation(x))`, etc. + +This is problematic for two reasons: + +1) Downstream have dependence on tensorflow's implementation of the composite +ops, and for instance can't just choose arbitrary implementation 2) If +tensorflow implementation changes so needs downstream's. + +In this appendix we outline two possible paths forward to resolve these issues. + +### Option 1: Stabilize Gradient Signature + +Option 1 basically revolves about allowing the composite_op to provide +explicit list of side outputs that could possibly be required for the efficient +gradient computation. The `tf.function` machinery would then validate that the +signature actually matches the implementation and respect the order +provided in the signature. The downstream tooling would need to compute the side-output +when providing its implementation. + +This option means that we would not be able to significantly change the +implementation in the future. For instance, if it is discovered that +`my_function(x)` can be computed as `simpler(transformation(x))` we won't be +able to change the implementation it without changing the signature. + +Note, for a non-trivial subset of fast functions this gradient signature could +be empty. In fact, *any* gradient could be computed without any side outputs, by +recomputing the function internally. Thus, side outputs only become important +when the function involve non-trivial compute. + +Thus, this option might be acceptable in the following cases, where there are no +standard outputs, or if side-outputs are unlikely to ever change. + +### Option 2: Allow dynamic substitution of side outputs. + +Consider the `inference` and `forward` functions. The former has signature +`x->y`, the latter is `x->y, s`. Either y or s can be a list of multiple tensors. +Comparing the signature, tooling can select the split point to separate inference_part +and side output for backward part + +> Assumption: side_outputs of forward_XXX are only ever used as inputs to +> inference_backward_XXX, if they are used for any other purposes, then the +> downstream can’t replace the underneath XXX until those uses are eliminated. +> (Possibly via graph transformations). This makes sense because the graph +> depends on implementation detail of tf.function implementation, thus +> tf.function shouldn’t be optimized away.``` + +Suppose the tooling have an efficient implementation of the gradient that needs +its own side outputs let them be t1 ... t_k. Then it can replace all three +functions with the re-implementations with the following signatures. + +Function | Original signature | New Signature +--------- | :---------------------: | -----------------------: +Inference | x -> y | x -> y +Forward | x->y, s1,..., sk | x-> y, t1, ..., tl +Backward | dl/dy, s1,..., sk -> dx | dl/dy, t1, ..., tk -> dx + +Important: Implementing this today would be fairly complex in case of a nested +functions, because the gradient of the outer function, requires side-outputs of +all inner functions, thus not-only the signature of the function that we change +changes, but also the signature of all functions that _call_ this function. Thus +the tooling will need to do a non-trivial whole-graph transformation to update +the signatures of **all** functions that call the optimized function. However, +it desn't seem to be insurmountable and possibly fairly straightforward with +MLIR. + +Another, cleaner option would be to wrap all the side output into a single blob which +contains multiple tensors which the implementation can then replace with its +own. There are no such structure in tensorflow today, but it might be in the +future. We should use this, if it becomes available. In this case this would +essentially make a forward and backward to have stable signature. + +## Questions and Answers + +This list reflects questions raised and the consensus discussed during +Tensorflow Review process. + +1. We should provide namespacing for the operation names early on to avoid + future collisions with function names. One option is to adopt java-style + "org.opname", basically using the developing organization to disambiguate. Another alternative is to use semantic namespaces e.g. `glinalg`. Yet + third, is to use org.semantic.opname. + + Note: since many of these functions will live in user codebase we obviously + can't and shouldn't police them, however having a recommended style guide + will simplify things later on. + + Should there be a `graduation` process? Where ops eventually move to a + higher tier. E.g. dedicated top-tier op like tensorflow.opname? If so, we + might also consider having another attribute 'aliases' to allow history of + names for backward compatibility. + +> The consensus appears to be to follow org.semantic.opname + +1. If we go org/name, do we need centralized registry of accepted "org" names? + +> No + +1. Do we need `reference` field? The idea is that points to the source of + authoritative ground truth implementation (likely not tensorflow based), + which this op is faithfully trying to reproduce? Should this reference be + structured? (For example it could point to existing scipy/numpy/pillow + library, or it could be pointing to a paper?). Should we make this optional + or get rid of it altogether and delegate this to documentation? + +> The consensus seems that this field is not needed. + +1. Name collisions - crash, no crash, etc. + +> The consensus appears to be no-crash is the most natural outcome despite +> initial misgivings. The argument that tilted in this direction is that the +> definition that will be invoked is actually well defined by python code +> semantic, (e.g. user code would call say python_lib.something.my_conv_op, +> which declares (myai.my_conv_op) and user intent is clear. What the downstream +> tooling will do is going to be up-to downstream tooling as long as it follows +> the contract. If there are two implementations available and different parts +> of the code call different > ones, we might end up with two definitions in the +> same function, but every invocation is still well defined in the graph itself, +> and thus preferrable. + +1. tomhennigan: Aligning the definitions with MLIR + + I wonder if we should consider more metadata here. For example within a + dialect MLIR op definitions [0] include a name [1], summary, description. + Maybe we can align with them? Concretely I suggest considering something + like: + +@tf.function( op_def=tf.OpDef( dialect="google", name="mm_low_rank_matrix", +summary="..", description="..", )) def f(..): pass [0] +https://github.com/tensorflow/mlir/blob/master/g3doc/OpDefinitions.md#operation-definition +[1] +https://github.com/tensorflow/mlir/blob/master/g3doc/OpDefinitions.md#operation-name + +> No, because MLIR dialects are not well aligned with semantic dialects that we +> are considering. E.g. MLIR dialects are following framework dialect (e.g. TPU, +> or tensorflow, etc...), instead of "this is a group of related ops". + +1. Should this belong to existing `tf.function` or a new alias is preferrable + e.g. `tf.library_function` + +> Use existing tf.function + +1. Should there be a specialization mechanism, where different block + implementations that are more efficient on different target hardware. (Both + for tensorflow, and downstream tooling). + +> yes, eventually, but seem not critical to get it from get-go. + +1. ycling: Should function_def have dedicated fields for describing these, or + just using attrs attrs is a good option. + +> attrs + +1. joker-eph: what about backward pass? If downstream tooling is looking to + support back-prop efficiently, there will need to be more hooks to implement + the gradient functions. In particular, the back-prop pass won't be able to + use efficient forward implementation, because back-prop requires internal + tensors (unless there is a matching efficient gradient implementation). + +From joker-eph: "Right, replacing a function with the gradient computation seems +to me like a key use-case that we will want to support. Not having a solution +for this makes this proposal much less attractive." + +> I think we run out of time on this one, but the proposal is that this is +> probalby will be left unspecified in this iteration. The potential path +> forward is to automatically wrap gradient into its own function that +> downstream tooling can identify and replace with its own implementation. If +> the tooling needs to support both forward and backward path, it seems that to +> benefit from this the tooling would need to provide both implementations (and +> do internal caching) or simply rely on default implementation. + +1. tomhennigan: Performance implication of wrapping too much stuff into + tf.function: One thing to note is that there is an overhead to calling a + @tf.function from eager mode (currently ~100us) and I suspect we will want + to be careful about adding it around lots of TensorFlow's public API without + careful consideration (e.g. if 100us of overhead would dominate the runtime + of the composite op). + +I did actually try this a while back (wrapping all functions in TF public API +with tf.function) and found it only made a performance improvement for +tf.reduce_logsumexp and tf.einsum (at least for the model I tested with). + +> The consensus is that we will eventually make tf.function fast enough that it +> won't be an issue, and given that this is likely to have very gradual roll out +> we will have time to adapt. From 8bca45dcf6849a7e38645ee4c30c34184326e714 Mon Sep 17 00:00:00 2001 From: Edd Wilder-James Date: Thu, 22 Aug 2019 10:20:39 -0700 Subject: [PATCH 021/365] Add way to allocate numbers to RFCs Start allocating each RFC a number, for ease of future reference, based on the pull request. This enables tracing the RFC back to its discussion in the GitHub PR. --- rfcs/yyyymmdd-rfc-template.md | 1 + 1 file changed, 1 insertion(+) diff --git a/rfcs/yyyymmdd-rfc-template.md b/rfcs/yyyymmdd-rfc-template.md index c647c8eb3..afb966ab1 100644 --- a/rfcs/yyyymmdd-rfc-template.md +++ b/rfcs/yyyymmdd-rfc-template.md @@ -2,6 +2,7 @@ | Status | (Proposed / Accepted / Implemented / Obsolete) | :-------------- |:---------------------------------------------------- | +| **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) (update when you have community PR #)| | **Author(s)** | My Name (me@example.org), AN Other (you@example.org) | | **Sponsor** | A N Expert (whomever@tensorflow.org) | | **Updated** | YYYY-MM-DD | From 1c87177cb21ad9e8e48a883b162ff0bedd6da42a Mon Sep 17 00:00:00 2001 From: Anna Revinskaya Date: Thu, 22 Aug 2019 15:59:42 -0700 Subject: [PATCH 022/365] Update 20190814-kernel-and-op-registration.md --- rfcs/20190814-kernel-and-op-registration.md | 22 +++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/rfcs/20190814-kernel-and-op-registration.md b/rfcs/20190814-kernel-and-op-registration.md index 6dacd8593..b07f060c1 100644 --- a/rfcs/20190814-kernel-and-op-registration.md +++ b/rfcs/20190814-kernel-and-op-registration.md @@ -535,6 +535,28 @@ call ROCm's `hipLaunchKernelGGL` here instead. Its signature uses templates. Fortunately, AMD is planning to add an equivalent function that provides a C API. (see Appendix 2 for details) +### Getting Status when using device APIs + +Kernel Device APIs described in this document rely on wrapping certain Eigen interfaces, such as `Eigen::StreamInterface` to provide a C API. Implementations of these interfaces might set an `OpKernelContext` status, which is not on the interface surface. Therefore, I propose that we add a new function that would update a given `TF_Status` with current `OpKernelContext` status: + +```c++ +TF_CAPI_EXPORT extern void TF_OpKernelContext_UpdateStatus(TF_Status*); +``` + +This would allow kernel implementations to return as soon as they see a failing status. For example: + +```c++ +TF_EigenStream* eigen_stream = TF_GetEigenStream(); +... run computation using eigen_stream ... + +TF_Status* context_status = TF_NewStatus(); +TF_OpKernelContext_UpdateStatus(context_status); +if (TF_GetCode(context_status) != TF_OK) { + TF_DeleteStatus(context_status); + return; +} +``` + ## Appendix 1 Certain parts of our design involve kernel plugins calling a function in From 5f70f12e1b4e6d45b4153e0c1dfa672ac3911d6a Mon Sep 17 00:00:00 2001 From: Neil Tenenholtz Date: Tue, 27 Aug 2019 12:47:00 -0400 Subject: [PATCH 023/365] Correcting URLs in 20190718-tfx-orchestration.md (#141) --- rfcs/20190718-tfx-orchestration.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/rfcs/20190718-tfx-orchestration.md b/rfcs/20190718-tfx-orchestration.md index c786664f5..704638231 100644 --- a/rfcs/20190718-tfx-orchestration.md +++ b/rfcs/20190718-tfx-orchestration.md @@ -56,8 +56,8 @@ Note that these pipelines are smiilar not not identical: * Internal TFX pipelines are configured with service configs (protobufs), while external pipelines will use Python. To achieve parity, the Python DSL must be serializable into internal TFX service configs. -* The internal TFX pipelines primarily use the (pubsub design - pattern)[https://en.wikipedia.org/wiki/Publish–subscribe_pattern], whereas +* The internal TFX pipelines primarily use the [pubsub design + pattern](https://en.wikipedia.org/wiki/Publish–subscribe_pattern), whereas the first few workflow engines targeted for orchestration are true orchestrators. While the pipeline DAG and the executors can be expressed using the same DSL, the execution of the pipeline will vary across @@ -69,16 +69,16 @@ Note that these pipelines are smiilar not not identical: Users will define their pipeline using the TFX DSL and a set of Python classes that emulate the existing TFX protobufs. The DSL provides methods to instantiate TFX components link the outputs of one component to the inputs of another. The -pipeline must be a (DAG)[https://en.wikipedia.org/wiki/Directed_acyclic_graph] +pipeline must be a [DAG](https://en.wikipedia.org/wiki/Directed_acyclic_graph) and cycles will cause an exception to be thrown. ### Orchestration vs choreography TFX and Kubeflow both follow a runtime design pattern generally known as -(service -orchestration)[https://en.wikipedia.org/wiki/Orchestration_(computing)], which -is different from (service -choreography)[https://en.wikipedia.org/wiki/Service_choreography#Service_choreography_and_service_orchestration]. +[service +orchestration](https://en.wikipedia.org/wiki/Orchestration_(computing)), which +is different from [service +choreography](https://en.wikipedia.org/wiki/Service_choreography#Service_choreography_and_service_orchestration). While both TFX and Kubeflow have eventual plans to support both patterns, the initial launch for each will be service orchestration. From 96fb2a52f01253bcf198e4493518e678d9c59e22 Mon Sep 17 00:00:00 2001 From: Charles Chen Date: Tue, 3 Sep 2019 14:58:51 -0700 Subject: [PATCH 024/365] Update TFX notebook RFC after comments. --- rfcs/20190815-tfx-notebook.md | 146 +++++++++++++++------------------- 1 file changed, 65 insertions(+), 81 deletions(-) diff --git a/rfcs/20190815-tfx-notebook.md b/rfcs/20190815-tfx-notebook.md index 32423febd..68436306d 100644 --- a/rfcs/20190815-tfx-notebook.md +++ b/rfcs/20190815-tfx-notebook.md @@ -82,12 +82,12 @@ example_gen = CsvExampleGen(input_base=examples) statistics_gen = StatisticsGen(input_data=example_gen.outputs['examples']) # We then similarly use the statsgen output in SchemaGen. -infer_schema = SchemaGen(stats=statistics_gen.outputs['output']) +infer_schema = SchemaGen(statistics=statistics_gen.outputs['statistics']) # Next, we do example validation. validate_stats = ExampleValidator( - stats=statistics_gen.outputs['output'], - schema=infer_schema.outputs['output']) + statistics=statistics_gen.outputs['statistics'], + schema=infer_schema.outputs['schema']) ``` ### Component execution, execution result objects, visualization @@ -184,8 +184,9 @@ display of the resulting statistics Here is an example of what notebook execution may look like in this scheme. -``` -Input[0]: +**Input[0]:** + +```python # To begin, we initialize an interactive context. Here, by not passing # in a base directory or metadata configuration, we create an ephemeral # context whose outputs will be in a temporary directory. @@ -198,79 +199,62 @@ context = InteractiveContext() # metadata_connection_config=my_config) ``` - - - - - - - -
Input[1]: -

-# First, ExampleGen with a run / read. -example_gen = CsvExampleGen(input_base=examples) -

-# Note that the output will be of type 'ExamplesPath', for which we -# may have registered a notebook visualization handler. -example_gen_result = context.run(example_gen) -

-example_gen.outputs['examples'] -

-# alternative style: explicit context.show() method -context.show(example_gen.outputs['examples']) -

Output[1]: -

-_notebook visualization indicating we have N examples at some temp path_ -

- - - - - - - - -
Input[2]: -

-# Next, StatisticsGen with a run / read. -statistics_gen = StatisticsGen(input_data=example_gen.outputs['examples']) -

-context.run(statistics_gen).outputs['output'] -

-# alternative styles: -# context.show(context.run(statistics_gen).outputs['output']) -# context.run().read('output', visualization_handler=blah) -# context.run().show('output', visualization_handler=blah, visualization_args=) -

Output[2]: -

-_notebook visualization for statsgen output_ -

- - - - - - - - -
Input[3]: -

-# Next, SchemaGen without a run / read. -infer_schema = SchemaGen(stats=statistics_gen.outputs['output']) -

-# Finally, ExampleValidator with a run / read. Note that SchemaGen -# will be implicitly run (see Note 2 below). -validate_stats = ExampleValidator( -

- stats=statistics_gen.outputs['output'], -

- schema=infer_schema.outputs['output']) -

-context.run(validate_stats) -

Output[3]: -

-_ExecutionResult object for ExampleValidator_ -

+**Input[1]:** + +```python +# First, ExampleGen with a run / read. +example_gen = CsvExampleGen(input_base=examples) + +# Note that the output will be of type 'ExamplesPath', for which we +# may have registered a notebook visualization handler. +example_gen_result = context.run(example_gen) + +example_gen.outputs['examples'] + +# alternative style: explicit context.show() method +context.show(example_gen.outputs['examples']) +``` + +**Output[1]:** + +_(notebook visualization indicating we have N examples at some temp path)_ + +**Input[2]:** + +```python +# Next, StatisticsGen with a run / read. +statistics_gen = StatisticsGen(input_data=example_gen.outputs['examples']) + +context.run(statistics_gen).outputs['statistics'] + +# alternative styles: +# context.show(context.run(statistics_gen).outputs['statistics']) +# context.run().read('output', visualization_handler=blah) +# context.run().show('output', visualization_handler=blah, visualization_args=) +``` + +**Output[2]:** + +_(notebook visualization for statsgen output)_ + +**Input[3]:** + +```python +# Next, SchemaGen without a run / read. +infer_schema = SchemaGen(statistics=statistics_gen.outputs['statistics']) + +# Finally, ExampleValidator with a run / read. Note that SchemaGen +# will be implicitly run (see Note 2 below). +validate_stats = ExampleValidator( + statistics=statistics_gen.outputs['statistics'], + schema=infer_schema.outputs['schema']) + +context.run(validate_stats) +``` + +**Output[3]:** + +_(ExecutionResult object for ExampleValidator)_ Note that the user may have forgotten to run InteractiveContext.run() on upstream components in the dependency graph. Instead of implicitly running these @@ -307,7 +291,7 @@ actions such as “Run All”, “Run Cells Before”, and “Run Cells After” ``` aliased_class = interactive_context.InteractiveContext - sess = aliased_class() + context = aliased_class() ``` 1. This should cover subsequent aliases of InteractiveContext instances. @@ -346,9 +330,9 @@ user to skip scratch work in cells. Example line magic: ``` -%skip_for_export sess = InteractiveContext() +%skip_for_export context = InteractiveContext() ... -%skip_for_export sess.run(example_gen) +%skip_for_export context.run(example_gen) ``` Example cell magic: From 441835ea827afdb1c69c8a7f3def652d57cf3365 Mon Sep 17 00:00:00 2001 From: Makoto Uchida Date: Wed, 4 Sep 2019 15:59:36 -0700 Subject: [PATCH 025/365] Initial commit of RFC: TFX Generic Container-based Component --- ...4-tfx-generic-container-based-component.md | 865 ++++++++++++++++++ 1 file changed, 865 insertions(+) create mode 100644 rfcs/20190904-tfx-generic-container-based-component.md diff --git a/rfcs/20190904-tfx-generic-container-based-component.md b/rfcs/20190904-tfx-generic-container-based-component.md new file mode 100644 index 000000000..345717955 --- /dev/null +++ b/rfcs/20190904-tfx-generic-container-based-component.md @@ -0,0 +1,865 @@ +# TFX Generic Container-based Component Proposal + +Status | Proposed +:------------ | :------- +**RFC # ** | To be filled +**Author(s)** | Ajay Gopinathan (ajaygopinathan@google.com), Hongye Sun (hongyes@google.com), Makoto Uchida (muchida@google.com) +**Sponsor** | Konstantinos Katsiapis (katsiapis@google.com) +**Updated** | 2019-09-04 + +## Objective + +This document proposes a design to enable users to attach an arbitrary +containerized program as a component to a pipeline authored using the TFX DSL, +in a way that inter-operates with other components. + +This RFC assumes some clarification on the TFX’s use of artifacts and metadata +as explained in +[this section of TFX user guide](https://www.tensorflow.org/tfx/guide#artifacts). + +## Motivation + +A key value proposition provided by +[Kubeflow Pipelines (KFP)](https://www.kubeflow.org/docs/pipelines/overview/pipelines-overview/) +is letting users orchestrate arbitrary containers as part of a Machine Learning +(ML) pipeline. Many users already have custom ML applications written in +languages other than Python (e.g. in R, Java, C++ etc), and the ability to chain +existing containerized application programs with other pipeline steps through a +Python DSL is valuable. As of 2019/09 +([tfx 0.14](https://github.com/tensorflow/tfx/blob/0.14.0rc1//RELEASE.md#version-0140), +even though TFX supports `KubeflowDagRunner` as an orchestrator, the +[TFX DSL](https://github.com/tensorflow/tfx/tree/0.14.0rc1/tfx) does not provide +a mechanism to accomplish this. + +## User Benefit + +This document proposes a way to define a proper component based on any +containerized program as a solution to address this problem. The proposed +**container-based component** is realized by a simple DSL extension for custom +containers to the TFX DSL. It enables users to easily declare input and output +artifacts of a pipeline step implemented as a custom container-based program, as +well as a prescription for how to invoke the container’s entrypoint while +passing in the relevant artifact metadata and execution parameters. + +In doing so, we will not only enable custom containerized application programs +to be used in TFX, but also augment KFP-based pipelines with the following +capabilities: + +* **Metadata-centric interface**: The proposed container-based component + provides a framework to clearly declare input- and output- signatures of the + container-based component in terms of + [strongly typed](https://github.com/google/ml-metadata/blob/ba69ae039bd2205ec2d7b982b3bfdda4718bf8df/ml_metadata/proto/metadata_store.proto#L55) + [artifact metadata](https://github.com/google/ml-metadata/blob/ba69ae039bd2205ec2d7b982b3bfdda4718bf8df/ml_metadata/proto/metadata_store.proto#L29). + This is a key value proposition of TFX DSL. + + * As of [kfp 0.1.26](https://github.com/kubeflow/pipelines/tree/0.1.26), + the + [KFP DSL](https://github.com/kubeflow/pipelines/tree/0.1.26/sdk/python/kfp/dsl) + has type system to input- and output- of a component. However, it is in + a way that it doesn’t attach semantic meaning to the input- and output- + variables in a way compatible to ML Metadata, and the way how TFX + uitilizes it to realize its functionalies. + +* **Metadata-driven component execution**: Metadata-centric interface of + components enables TFX Driver and Publisher logic to be applied + consistently, thus enabling caching of component execution as well + component-specific (meta)data-driven execution decisions + + * *Example*: ModelValidator can validate models trained with *any* + component, so long as the produced artifact is of the *type* Model. + +* **Inter-Component communication via ML Metadata store**: This enables higher + order component-specific driver logic that depends on another component’s + behavior. + + * *Example*: Pusher can choose to proceed or halt pushing depending on + output artifact from ModelValidator. + +* **Ability to share and reuse a wrapped component as drop-in replacement with + another**: As a result of the artifact centric, strongly typed input- and + output- signatures, it enables robust sharing and drop-in replacement of + components, so long as signatures (the list of input- and output- artifact + *types*) are the same. + +Additionally, the proposed container-based component will enable the following +new features in TFX DSL, which already exist In Kubeflow Pipelines: + +* **Ability to use any containerized application program in a pipeline**: The + proposed container-based component does not preclude any containerized + application programs from being used as a pipeline step. + +* **Ability to have fine-grained control on the underlying k8s execution + environment**: The proposed container-based component preserves the user’s + ability to control underlying Kubernetes runtime configuration for + containerized program execution. + +## Design Proposal + +As stated previously, custom containers may be written in arbitrary languages. +The input interface to containers is restricted to the command-line used to +invoke the application, while the output interface is through file I/O (either +STDOUT, STDOUT, or container-local files). + +Since container applications may not have access to TFX libraries, they are not +able to (or don’t even wish to) serialize/de-serialize +[ML Metadata](https://github.com/google/ml-metadata/blob/master/g3doc/get_started.md) +representing input- and output- artifacts, which is what defines the interface +to all TFX components[^1]. Hence, this design proposes DSL extensions that allow +users to declare the types of the input and output artifacts, and directly +reference the URIs of these artifacts when invoking their containers, while +retaining the ability to invoke the containerized program in exactly the way it +expects with regards to flags, arguments and environmental variables. The TFX +framework itself will generate the necessary driver-level code so that metadata +is logged and used for caching executions. + +[^1]: ML Metadata is also what enables inter-component communication to realize + artifact driven component-specific behavior (such as ExampleValidator and + ModelValidator) + +In order to make this proposal concrete, let’s consider a motivating example of +creating a simple 2-step pipeline. The first step generates examples, and the +second trains a model based on the previously produced examples. The following +shows some example code for these two steps: + +* `my_example_gen.py` + +```python +import argparse import pandas as pd + +def convert_and_save(df, file): + ... + +if __name__ == '__main__': + + parser = argparse.ArgumentParser() + + # URI location of input CSV file + parser.add_argument('--input_csv_file', ...) + # URI location of output CSV file + parser.add_argument('--output_csv_file', ...) + # Number of CSV columns in the input file + parser.add_argument('--num_csv_columns', ...) + + args = parser.parse_args() + arguments = args.__dict__ + + df = pd.read_csv(arguments['input_csv_file'], + usecols=range(0, int(arguments['num_csv_columns']))) + + # implementation of business logic to ingest dataset + convert_and_save(df, arguments['output_csv_file']) + +``` + +* `my_trainer.py` + +```python + + +import argparse +import pandas as pd +import sklearn.linear_model import Logisticregression + +def load_dataset(file): + ... + +if __name__ == '__main__': + parser = argparse.ArgumentParser() + + # URI location of input file with pre-processed examples. + parser.add_argument('--input_examples', ...) + # URI location to output the trained model + parser.add_argument('--output_model', ...) + # Number of training steps to use. + parser.add_argument('--train_steps', ...) + + args = parser.parse_args() + arguments = args.__dict__ + + x_train, y_train, x_eval, y_eval = load_datset(arguments['input_examples']) + + model = LogisticRegression() + model.fit(x_train, y_train, args.train_steps) + + # + # ... perform grid search, etc, ... + # + + # Write the trained model. + joblib.dump(model, argument['output_model']) +``` + +Given the two (containerized) applications above, our goal is to chain them into +a 2-step pipeline which will automatically track metadata related to: + +* **Artifacts**: These include the input CSV file, the output CSV file with + training and eval examples, and the final Model file. +* **Executions**: These include execution steps `MyExampleGen`, with runtime + execution property `num_csv_columns`, and `MyTrainer`, with runtime + execution property `train_steps`. + +Notably, since `my_example_gen.py` produces *Examples*, we make the pipeline +understand that it is *Examples*, and record it as such in ML Metadata. Doing so +will enable downstream components, such as Trainer, to understand that it is +receiving *Examples*, and also realize higher-level functionality such as +ExampleValidation. Similarly, since `my_trainer.py` produces Model, other parts +of the pipeline should understand it to enable higher-level functionality such +as ModelValidation and Pusher to serving. + +Hence, we propose to provide an extension to the DSL that allows users to +declare inputs and outputs in terms of ML Metadata of artifacts during pipeline +construction. The proposed DSL extension would translate the input and output +artifacts at pipeline runtime, abstracting reading and writing artifact metadata +from and to storage on behalf of the wrapped containerized application program. + +## Detailed Design + +We propose the following syntax for wrapping user’s containers in the DSL by +introducing `ExecutorSpec`. This syntax complements and extends the +[ComponentSpec](https://github.com/tensorflow/tfx/blob/4cafb7a3ddd73463d70072dade71f380e86072e6/tfx/types/component_spec.py#L73) +design previously implemented in TFX, and generalizes +[EXECUTOR_CLASS](https://github.com/tensorflow/tfx/blob/767968262233bb8d37837e8de9e11d1065b07c7b/tfx/components/base/base_component.py#L66) +attribute of components. We propose to use the same `ComponentSpec` base class +to describe the custom container-based component’s input and output artifacts, +and its parameters. + +* Base `ExecutorSpec` class for container based component. + +```python +class ExecutorSpec(with_metaclass(abc.ABCMeta, object)): + """Base class that specifies 'what' to execute for the component.""" + pass + + +class ExecutorClassSpec(ExecutorSpec): + """Execution spec for a Python class-based Executor.""" + + # An in-process Python Executor class, derived from TFX + # base_executor.Executor class. + executor_class = ... + + def __init__(self, executor_class): + ... + + +class ExecutorContainerSpec(ExecutorSpec): + """Execution specification of the container-based component.""" + + # Container image that has executor application. + # Assumption is that this container image is separately release-managed, + # and tagged/versioned accordingly. + container_image = ... + + # Container entrypoint command line program and args. + # The Jinja templating mechanism is used for constructing a user-specified + # command-line invocation based on input and output metadata at runtime. + # The entry point can be as generic as `/bin/sh -c "..."`, which retains + # the ability to control inputs and/or exec_props with environment + # variables. + command = ... + args = ... + + # Additional specifications of execution specific to Runner's environment. + # For example, k8s pod configuration for launching the containerized + # application would be included here. + # Note that each Runner also has a way to specify it’s orchestrator-specific + # configuration, such as KubeflowDagRunnerConfig for KubeflowDagRunner. + # Details and relationship between platform_config and Runner’s config + # are subject to change. Detailed design document particularly on + # this point to follow. + platform_config = ... + + def __init__(self, container_image, command, args, platform_config): + ... +``` + +* `ExecutorSpec` and `ComponentSpec` for `my_example_gen.py` + +```python +# Container-based ExampleGen's execution spec. +my_example_gen_exec_spec = ExecutorContainerSpec( + # Container image of my_example_gen.py. + # Assumption is that this container image is separately release-managed, + # and tagged accordingly. This example demonstrates the ':stable' tag. + container_image='gcr.io/my_project/my_example_gen:stable', + command=['python'], + args=['my_example_gen.py', + '--input_csv_file', '{{ inputs.raw_input.uri }}', + '--output_examples', ' {{ outputs.examples.uri }}', + '--num_csv_columns', ' {{ exec_props.num_csv_columns }}' ], + platform_config=... +) + + +# One can choose to define a dev-instance of MyExampleGen container-based +# component, based on a different (newer) version of the container image. +# +# Alternatively, by using continuous integration tools, it is possible to +# dynamically build the docker image, and inject its image SHA id to +# this code via a flag. +my_dev_example_gen_exec_spec = ExecutorContainerSpec( + container_image='gcr.io/my_project/my_example_gen:dev', + command=['python'], + args=['my_example_gen.py', + '--input_csv_file', '{{ inputs.raw_input.uri }}', + '--output_examples', ' {{ outputs.examples.uri }}', + '--num_csv_columns', ' {{ exec_props.num_csv_columns }}' ], + platform_config=... +) + + +# Container-based ExampleGen's component spec. +# Notice that this is similar to FileBasedExampleGenSpec, +# but with a different set of PARAMETERS. +class MyContainerBasedExampleGenSpec(ComponentSpec): + """ComponentSpec to drive my_example_gen.py as a Component.""" + # Input artifacts. + INPUTS = { + "raw_input": ChannelParameter(type=standard_artifacts.ExternalArtifact), + } + + # Output artifacts. + OUTPUTS = { + "examples": ChannelParameter(type=standard_artifacts.Examples), + } + + # Parameters. + PARAMETERS = { + "num_csv_columns": ExecutionParameter(type=int), + } +``` + +* `ExecutorSpec` and `ComponentSpec` for `my_trainer.py` + +```python +# Container-based trainer's executor spec +my_trainer_exec_spec = ExecutorContainerSpec( + container_image='gcr.io/my_project/my_trainer:stable', + command=['python'] + args=['my_trainer.py', + '--input_examples', '{{ inputs.my_inputs.uri }}', + '--output_model', '{{ outputs.my_model.uri }}', + '--train_steps', '{{ exec_props.train_steps }}',] + # Platform config would specify use of GPU node pool for k8s, for example. + platform_config = ... +) + +# Container-based trainer's component spec. +# Notice that this is quite different from TrainerSpec, because of +# the command line flags that my_trainer.py takes are different from what +# TFX stock trainer takes. Nevertheless, it does produce an instance of +# Model artifacts, which can then be consumed by downstream components. +class MyContainerBasedTrainerSpec(ContainerBasedComponentSpec): + """ComponentSpec to drive my_trainer.py as a component.""" + # Input artifacts. + INPUTS = { + "my_input": ChannelParameter(type_name=standard_artifacts.Examples), + } + + # Output artifacts. + OUTPUTS = { + "my_model": ChannelParameter(type_name=standard.Artifacts.Model), + } + + # Parameters + PARAMETERS = { + # Execution properties. + "train_steps": ExecutionParameter(type=int), + } +``` + +### Component definition based on a generic containerized program + +With the introduction of `ExecutorContainerSpec`, the way to define a component +based on a containerized application is no different from any other custom +component. Below are illustrations to define the components from the previous +section in full, and their use in an end-to-end pipeline. + +* Component definitions + +```python + +class MyContainerBasedExampleGen(BaseComponent): + """Wraps my_example_gen.py.""" + SPEC_CLASS = MyContainerBasedExampleGenSpec + + EXECUTOR_SPEC = my_example_gen_exec_sepc + + # Optionally, if custom driver behavior is desired, such as checking + # mtime for file updates, one can define a custom Driver class to control + # the behavior of my_exmaple_gen.py inside the container. + DRIVER_CLASS = ... + + +class MyContainerBasedTrainer(BaseComponent): + """Wraps my_trainer.py.""" + SPEC_CLASS = MyContainerBasedTrainerSpec + + EXECUTOR_SPEC = my_trainer_exec_spec + +``` + +* `pipeline.py` + +```python + +def create_pipeline(): + my_csv_file = dsl_utils.external_input(uri="/path/to/csv_file") + + my_example_gen = MyContainerBasedExampleGen( + raw_input=my_csv_file, num_csv_column=20) + my_trainer = MyContainerBasedTrainer( + my_input=example_gen.outputs.examples, train_steps=200) + + return pipeline.Pipeline( + pipeline_name = 'my_container_based_pipeline', + pipeline_root = 'gs://path/to/root', + components = [my_example_gen, my_trainer], + ... + ) + + +# It may be the case that some TfxRunner implementation (the ComponentLauncher +# thereof) does not have the ability to run a container-based component, +# in which case, an Exception is raised at the time when the logical pipeline +# is compiled for execution by the TfxRunner. +# See the next section of this doc about ComponentLauncher. +_ = KubeflowDagRunner().run(_create_pipeline()) + +``` + +### ComponentLauncher to launch the container-based application + +With the introduction of `ExecutorContainerSpec` which does not specify +`executor_class`, the default `ComponentLauncher` cannot execute the +container-based component. Furthermore, different orchestrator (i.e. an instance +of `TfxRunner`) may have different ways to launch the containerized application +program. + +We propose to extend the base `ComponentLauncher` to define +orchestrator-specific ways to execute the containerized program, including the +ways to translate input artifacts to the complete command line, by filling the +[Jinja template](https://jinja.palletsprojects.com/en/2.10.x/) for +`ExecutorContainerSpec.command` and `ExecutorContainerSpec.args`, and to +translate output from the containerized application to keep track of metadata of +it and write back to Metadata storage. + +Below is one possible implementation of `ComponentLauncher` that implements a +way to launch container-based components with `KubeflowDagRunner`, with ability +to configure low level k8s configurations. This `KubeflowComponentLauncher` +would use the k8s Pod API to launch the container [ref]. On top of this, +`KubeflowDagRunner` allows to apply +[additional k8s APIs](https://github.com/tensorflow/tfx/commit/74f9b6ab26c51ebbfb5d17826c5d5288a67dcf85#diff-6e0294d7fcca3bea10cb2c38bc7860c3), +such as volume mount and secret management to pods. + +```python +# Demonstration of a ComponentLauncher that has the ability to launch +# container-based component, in addition to executor-class based component, +# with KubeflowDagRunner. +class KubeflowComponentLauncher(ComponentLauncher): + """Demonstration of ComponentLauncher specific to KubeflwoRunner.""" + + def __init__(self, ..., platform_config=...): + # platform_config delines any Runner-specific, for example k8s-specific + # configurations for launching containerized application programs. + ... + + def _run_driver(self, ...): + # runs driver, which may be custom to each container-based component + ... + + def _run_executor(self, ...): + spec = self._executor_spec + if isinstance(spec, ExecutorContainerSpec): + # Launch the container entrypoint with the specified image, + # by the Runner-specific way to execute the container application. + # In KubeflowDagRunner's case, it is with Argo on k8s. + # The platform_config is applied here. + ... + else: + # Launch executor_class as usual. + + def _run_publisher(self, ...): + # runs publisher. When launching container-based executor, this method + # is responsible for capturing output from the containerized program, + # and write back to ML Metadata. + .... + +``` + +Another example of `_run_executor()` to the above illustration may be to execute +`docker run` locally. + +The Runner should implement suitable `ComponentLauncher` accordingly. A pipeline +may have different `ExecutorSpec`s for different components. In case the Runner, +and corresponding `ComponentLauncher`, does not have a way to execute a +containerized program with `ExecutorContainerSpec`, a runtime error would be +raised. If a Runner's `run()` method has a compilation step from logical +pipeline to orchestrator-specific representation of the pipeline, such error +could be caught at compile time. + +### Artifact Properties after Execution is complete + +It is worth noting that some (custom) properties of output artifacts can only be +determined after executor completed. For instance, `is_blessed` property of +`ModelBlessing` artifact can only be determined after execution finishes. + +When a custom image is used by the proposed `ExecutorContainerSpec`, we need to +capture the output of the component, decode value of these properties and send +them to Publisher so that published artifacts have correct final outcome. This +must be done before we transition the output artifact to Published state, so +immutability of published artifacts is preserved. + +There are few choices to realize this. + +#### Option 1: Disallow artifacts with such custom properties as output + +Simplest option is not to support such properties in output artifact from the +proposed container-based component. It is too limiting, and loses the main value +of it such that arbitrary business logic can be implemented in the +container-based application in a way that controls downstream component’s +behavior via output artifacts. + +#### Option 2: Capture container STDOUT + +Containerize application may indicate the result of execution to STDOUT. The +proposed container-based component could capture it and implement the logic to +translate into the (custom) property of the output artifact. This is also what +the previous Airflow based operators for TFX were doing, before the work to +combine driver/executor/publisher into a single Airflow operator was complete. +We do not see a reason to not generalize STDOUT to any file I/O interface. + +#### Option 3 (preferred): Use Files in shared temp directory to capture output artifacts + +This is a generalized version of Option 2, in that to capture output from the +containerized program via file I/O, and have the proposed container-based +component to capture it as properties of output artifacts. File I/O is +consistent with the way how `KubeflowDagRunner` passively logs output artifact +metadata as of `tfx` 0.13, hence natural extension to it. + +### Binding between CompomentSpec and ExecutorContainerSpec + +(A subclass of) `ComponentSpec` defines input and output artifact specification, +and execution property of the component, but does not define ‘what’ to execute +and ‘how’. (An instance of) `(Container)ExecutorSpec` defines ‘what’ and ‘how’ +to execute for this component. (A subclass of) `BaseComponent` defines the +binding of `ComponentSpec` and `ExecutorContainerSpec`, in order to be launched +by (a subclass of) `ComponentLauncher`. + +There are few possible design options as to where and how to define those +specifications and their bindings. + +#### Option 1 (illustrated above): Complete Separation between ExecutorContainerSpec, ComponentSpec and Component + +This is as illustrated as the code snippet in the previous sections. + +* **Pros**: + * It achieves clear separation between `ComponentSpec`, which is meant to + define executor-agnostic specification of a component, from + specification of execution which may be tied to a particular Runner’s + implementation, as illustrated in extension to `ComponentLauncher`. +* **Cons**: + * Component specifications are defined separately, and developer needs to + make sure to keep them consistent. + * Using `my_example_gen.py` in the above example, all of the below + needs to be defined in different places and kept in tightly + consistent. + 1. Command line flags to `my_example_gen.py`. + 1. Jinja template defined in `my_example_gen_exec_spec.commnad` and + `my_example_gen_exec_spec.args`. + 1. `INPUT`, `OUTPUT` and `PARAMETERS` in + `MyExampleGenComponentSpec`. + 1. The binding between `my_example_gen_exec_spec` and + `MyExampleGenComponentSpec`, which is done in + `MyContainerBasedExampleGen` class. + * If any of the above is inconsistent, the containerized + `my_example_gen.py` won’t be invoked properly, or output artifact is + not logged to ML Metadata thus not usable by downstream components. + * Such consistency check needs to be implemented outside of the component + class, possible as a part of `Runner` or `ComponentLauncher`. + +#### Option 2: ExecutorContainerSpec as a part of (subclass of) ComponentSpec + +Define a special subclass of `ComponentSpec`, that specifically holds +`ExecutorContainerSpec` as its member. + +```python + +class ContainerComponentSpec(ComponentSpec): + ... + # An instance of ExecutorContainerSpec + executor_spec = ... + + def _validate_spec(self): + ... + assert(instanceof(self.executor_spec, ExecutorContainerSpec)) + + +class MyContainerBasedExampleGenSpec(ContainerComponentSpec): + ... + executor_spec = ExecutorContainerSpec(...) + + +class MyContainerBasedExampleGen(BaseComponent): + SPEC_CLASS = MyContainerBasedExampleGenSpec + + EXECUTOR_SPEC = MyContainerBasedExampleGenSpec.executor_spec + +``` + +* **Pros**: + * Component’s `INPUT`, `OUTPUT` and `PARAMETER` definitions are co-located + with `ExecutorContainerSpec.command` and `ExecutorContainerSpec.args`’s + Jinja template in one place. + * It reduces cognitive load to properly define a container-based + component. + * It also makes it possible to place a static validation between them. +* **Cons**: + * `ContainerComponentSpec` defines not only specification of `INPUT`, + `OUTPUT` and `PARAMETERS` of the component, but also defines ‘how’ and + ‘what’ to execute, which violates the original design intention of + `ComponentSpec`. + +#### Option 3: Extend BaseComponent specifically for ContainerBasedComponent + +Provide a base class of `ContainerBasedComponent`, which defines all the specs +in one place as nested members. `ComponentLauncher` specific to a `Runner` +defines its behavior for subclasses of `ContainerBasedComponent`. +`ContainerBasedComponent` can be thought of as a convenience wrapper that puts +together `ComponentSpec` and `ExecutorContainerSpec` in one place, and provides +additional validation check on integrity between the two. + +```python + + +# Abstract base class that has extra facility to support ExecutorContainerSpec +class ContainerBasedComponent(BaseComponent): + + EXECUTOR_SPEC = _abstract_property() + + @classmethod + def dynamic_spec_class(cls, inputs, outputs, parameters): + class _ComponentSpec(ComponentSpec): + INPUTS=inputs + OUTPUTS=outputs + PARAMETERS=parameters + + return _ComponentSpec + + def _validate_entrypoint(self): + # Make sure SPEC_CLASS, executor_spec.command and executor_spec.args c + # are consistent. + ... + + def __init__(self, ...): + # It must execute containerized program. + assert(isinstance(self.executor_spec, ExecutorContainerSpec)) + + # SPEC_CLASS and EXECUTOR_SPEC must be consistent. + self._validate_entrypoint() + + # Instantiate Component with given ComponentSpec and ExecutorSpec + # and other auxiliary configurations. + super(ContainerBasedExampleGen, self).__init__(...) + + +# Implementation of a component based on my_example_gen.py +class MyContainerBasedExampleGen(ContainerBasedComopnent): + + # dynamic_spec_class() is a syntactic sugar to be able to inline + # SPEC_CLASS definition at declaration of ContainerBasedComponent subclass. + # In case the same ComponentSpec may be shared with another component but + # with different EXECUTOR_SPEC (and DRIVER_CLASS, etc), this class should + # be defined explicitly and shared. + SPEC_CLASS = ContainerBasedComponent.dynamic_spec_class( + # Implementation of ComponentSpec specific to MyExampleGen. This is + # exactly the same as `MyContainerBasedExampleGenSpec` illustrated above. + INPUTS=... + OUTPUTS=... + PARAMETERS=... + ) + + # This is the same as my_example_gen_exec_spec illustrated above. + EXECUTOR_SPEC = ExecutorContainerSpec(...) + +``` + +* **Pros**: + * All specifications of container-based component is co-located in one + place, making it possible to perform static validation check for + consistency between specs there. + * `ComponentSpec` remains purely about `INPUTS`, `OUTPUTS` and + `PARAMETERS` definitions, detached from ‘what’ and ‘how’ to execute the + compononent. +* **Cons**: + * Nested `ComponentSpec` class style may be cumbersome. + * Porting a pipeline to a new runner would involve changing all components + to derive from a new base class, if `ComponentLauncher` of the new + runner doesn’t know how to launch `ExecutorContainerSpec`. + +#### Option 4 (preferred): Utility to create inline specs and do static validation check hook + +This is built on top of Option 1. + +This option is similar to option 3 and generalizes it to all executor types. The +same pattern can also be applied to python class executor. Proposal is to: + +* Create a `types.dynamic_spec_class()` method to facilitate to create an + inline `ComponentSpec`. +* Define an abstract `validate_component_spec()` method in `ExecutorSpec` base + class to perform executor specific static validation. + +```python + + +class BaseComponent: + def __init__(self, spec, ...): + … + # Call ExecutorSpec.validate_component_spec to validate the component spec. + # Subclass of ExecutorSpec should implement the validation hook to validate + # component spec at compile time. + self.executor_spec.validate_component_spec(spec) + + +class ExecutorContainerSpec(ExecutorSpec): + def validate_component_spec(self, component_spec): + # Call Jinja parser to validate the entry-points with component_spec data. + … + +# Implementation of a component based on my_example_gen.py +class MyContainerBasedExampleGen(BaseComponent): + + # dynamic_spec_class() is a syntactic sugar to be able to inline + # SPEC_CLASS definition at declaration of BasedComponent subclass. + # In case the same ComponentSpec may be shared with another component but + # with different EXECUTOR_SPEC (and DRIVER_CLASS, etc), this class should + # be defined explicitly and shared. + SPEC_CLASS = types.dynamic_spec_class( + # Implementation of ComponentSpec specific to MyExampleGen. This is + # exactly the same as `MyContainerBasedExampleGenSpec` illustrated above. + inputs=... + outputs=... + parameters=... + ) + + # This is the same as my_example_gen_exec_spec illustrated above. + EXECUTOR_SPEC = ExecutorContainerSpec(...) + +``` + +* **Pros**: + * It generalizes to all executor types and keeps current component class + model unchanged. + * All specifications of a component is co-located in one place. + * Make it possible to perform executor specific static validation check + for consistency between specs. + * `ComponentSpec` remains purely about `INPUTS`, `OUTPUTS` and + `PARAMETERS` definitions, detached from ‘what’ and ‘how’ to execute the + component. + * Potentially, `BaseExecutor` can extend this model to support a class + method `validate_component_spec()` to support user executor static + validation of any logic. +* **Cons** + * `dynamic_spec_class()` style may be cumbersome. + * The dynamic class cannot be shared like static class. + +## Appendix + +### Ppeline Compilation and Release + +The proposed `ExecutorContainerSpec` and related modification will reside in the +TFX repository. + +If run with `KubeflowDagRunner`, it will be executed by `run()` method to +compile into Argo pipeline spec. As a result, there is no need to have any +additional code to be included inside the user’s container image. Other +orchestrators, such as `AirflowDAGRunner`, may have to have a newer version of +TFX SDK with the new `ExecutorContainerSpec` and implementations of +corresponding `ComponentSpec` subclasses installed in the environment in which +the component is executed. Nevertheless, it is no different than any other TFX +component’s execution in which it needs to have the TFX SDKs for components +installed on the Airflow execution environment. + +### Componentize a Python function, as opposed to a container image + +Kubeflow Pipelines SDK helps users to define a Python function and convert them +to a container-based application as a part of the pipeline (by the +`kfp.compiler.build_python_component()` API). In order for this to become fully +metadata-aware component as proposed in this document, a gap still remains that +it doesn’t help defining input- and output- of the Python function in terms of +the typed Artifacts to be tracked in ML Metadata. + +This proposed container-based component could further help filling the gap to +help declaratively configure `INPUTS`, `OUTPUTS` and `PARAMETERS` for the given +naked Python function and componentize it. Furthermore, there is an opportunity +to create a helper to build an image, configure a `python` command entrypoint +from a naked Python function, and construct command line arguments under the +hood, as a specialized subclass of it. Such helper shall eventually converge to +the other way of implementing a +[custom component](https://github.com/tensorflow/tfx/tree/80a80ffb0f833cf02344ac2898017cf1b73e166d/tfx/examples/custom_components) +for TFX via a custom `Executor` class written in Python, and package it in a +container image to release. + +Detailed RFC particularly on this point will follow. + +### Component Arhcetypes + +As of `tfx` 0.14, there are +[10 known artifact types](https://github.com/tensorflow/tfx/blob/767968262233bb8d37837e8de9e11d1065b07c7b/tfx/types/standard_artifacts.py) +defined and used. + +* ExternalArtifact +* Examples +* Schema +* ExampleStatistics +* ExampleAnomalies +* TransformGraph +* Model +* ModelEvalulation +* ModelBlessing +* PushedModel + +Based on the above known artifact types, TFX defines the following +[9 component archetypes](https://github.com/tensorflow/tfx/tree/767968262233bb8d37837e8de9e11d1065b07c7b/tfx/components). + +| **Component** | **Inputs** | **Outputs** | +| :--------------- | :------------------------ | :----------------------- | +| ExampleGen | ExternalPath (optional) | Examples | +| StatisticsGen | Examples | ExampleStatistics | +| SchemaGen | ExampleStatistics | Schema | +| ExampleValidator | ExampleStatistics, Schema | ExampleAnomalies | +| Transform | Examples (raw), Schema | TransformGraph, Examples | +: : : (transformed) : +| Trainer | Examples, TransformGraph | Model | +: : (optional), Schema : : +| Evaluator | Examples, Model | ModelEvaluation | +| ModelValidator | Examples, Model | ModelBlessing | +| Pusher | Model, ModelBlessing | PushedModel | + +The proposed generic container-based component will enable scenarios where, so +long as the wrapped component adheres to one of the above the input- and output- +archetypes, it enables drop-in replacement, while retaining interactions with +the rest of the components in the pipeline, and also the pipeline not having to +know the actual business logic inside the container application. + +### Specification of Artifacts + +As of tfx 0.14, the schema (list of properties) of metadata for each artifact +type is defined implicitly when it is created and used +([example](https://github.com/tensorflow/tfx/blob/767968262233bb8d37837e8de9e11d1065b07c7b/tfx/components/transform/component.py#L99)). + +In order for the proposed generic component-based component to utilize artifacts +and its metadata in a standardized way, such metadata schema definition needs to +be made explicit, possibly as a Python class. In other words, unless the known +artifact types are explicitly defined and accessible in a common repository, +custom built container-based component would not be able to implement the +interaction with other components via such artifact types, in turn the custom +container-based component would not be able to make use of the interoperability +and shareability with other components in a pipeline. Furthermore, the payload +of artifacts must be compatible with the way metadata (via properties of +artifacts) defines, which allows components to properly consume artifacts. + +We anticipate that +[standard_artifacts.py](https://github.com/tensorflow/tfx/blob/0.14.0rc1/tfx/types/standard_artifacts.py) +will serve as the catalog of known artifact types. We also anticipate that this +catalog might evolve with more properties of a type, or more types themselves. From cd56095ac000dd6044c26092208ad409f7f83ed8 Mon Sep 17 00:00:00 2001 From: Makoto Uchida Date: Wed, 4 Sep 2019 16:07:04 -0700 Subject: [PATCH 026/365] Add RFC # --- rfcs/20190904-tfx-generic-container-based-component.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20190904-tfx-generic-container-based-component.md b/rfcs/20190904-tfx-generic-container-based-component.md index 345717955..21b00b076 100644 --- a/rfcs/20190904-tfx-generic-container-based-component.md +++ b/rfcs/20190904-tfx-generic-container-based-component.md @@ -2,7 +2,7 @@ Status | Proposed :------------ | :------- -**RFC # ** | To be filled +**RFC #** | https://github.com/tensorflow/community/pull/146 **Author(s)** | Ajay Gopinathan (ajaygopinathan@google.com), Hongye Sun (hongyes@google.com), Makoto Uchida (muchida@google.com) **Sponsor** | Konstantinos Katsiapis (katsiapis@google.com) **Updated** | 2019-09-04 From 2b03b9283f91b98fca1d0444a2896f8c34cac206 Mon Sep 17 00:00:00 2001 From: Makoto Uchida Date: Wed, 4 Sep 2019 16:23:18 -0700 Subject: [PATCH 027/365] Format fix --- rfcs/20190904-tfx-generic-container-based-component.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rfcs/20190904-tfx-generic-container-based-component.md b/rfcs/20190904-tfx-generic-container-based-component.md index 21b00b076..0ea65fc94 100644 --- a/rfcs/20190904-tfx-generic-container-based-component.md +++ b/rfcs/20190904-tfx-generic-container-based-component.md @@ -14,8 +14,7 @@ containerized program as a component to a pipeline authored using the TFX DSL, in a way that inter-operates with other components. This RFC assumes some clarification on the TFX’s use of artifacts and metadata -as explained in -[this section of TFX user guide](https://www.tensorflow.org/tfx/guide#artifacts). +as explained in [this section of TFX user guide](https://www.tensorflow.org/tfx/guide#artifacts). ## Motivation From 2c0b009ef955975b15a3cc18b1378e0ed38f394e Mon Sep 17 00:00:00 2001 From: Makoto Uchida Date: Thu, 5 Sep 2019 13:14:38 -0700 Subject: [PATCH 028/365] Style fix for code block --- rfcs/20190904-tfx-generic-container-based-component.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/rfcs/20190904-tfx-generic-container-based-component.md b/rfcs/20190904-tfx-generic-container-based-component.md index 0ea65fc94..7ba102409 100644 --- a/rfcs/20190904-tfx-generic-container-based-component.md +++ b/rfcs/20190904-tfx-generic-container-based-component.md @@ -123,7 +123,8 @@ shows some example code for these two steps: * `my_example_gen.py` ```python -import argparse import pandas as pd +import argparse +import pandas as pd def convert_and_save(df, file): ... @@ -153,8 +154,6 @@ if __name__ == '__main__': * `my_trainer.py` ```python - - import argparse import pandas as pd import sklearn.linear_model import Logisticregression From 554267882177e434d7dd45e88d99f785af617516 Mon Sep 17 00:00:00 2001 From: pkanwar23 <40809717+pkanwar23@users.noreply.github.com> Date: Thu, 5 Sep 2019 16:08:08 -0700 Subject: [PATCH 029/365] Update CHARTER.md (#147) --- sigs/mlir/CHARTER.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sigs/mlir/CHARTER.md b/sigs/mlir/CHARTER.md index 4e52d03c2..a8ecb2927 100644 --- a/sigs/mlir/CHARTER.md +++ b/sigs/mlir/CHARTER.md @@ -30,7 +30,7 @@ We plan to start by focusing on the Graph Compiler. As such, we’ll have a 45 m ## Contacts -* Project lead: Tatiana Shpeisman [@tatianashp](https://github.com/tatianashp) - speisman at google +* Project lead: Tatiana Shpeisman [@tatianashp](https://github.com/tatianashp) - shpeisman at google * Project manager: Pankaj Kanwar [@pkanwar23](https://github.com/pkanwar23) - pkanwar at google * For administrative questions, contact Edd Wilder-James [@ewilderj](https://github.com/ewilderj) - ewj at google From 70a1ac7f94c82d12ce67b5a00d1105f9e1546cf3 Mon Sep 17 00:00:00 2001 From: Yu-Cheng Ling Date: Mon, 9 Sep 2019 11:27:11 -0700 Subject: [PATCH 030/365] RFC: Control Flow in TensorFlow Lite (#83) * Initial commit for TensorFlow Lite control flow RFC * Fix image syntax for Github Markdown * Fix Github Markdown syntax (can't line break in inline code block) * Change the status to Accepted --- rfcs/20190315-tflite-control-flow.md | 236 ++++++++++++++++++ .../20190315-tflite-control-flow/if_model.png | Bin 0 -> 333319 bytes .../while_buffer.png | Bin 0 -> 203031 bytes 3 files changed, 236 insertions(+) create mode 100644 rfcs/20190315-tflite-control-flow.md create mode 100644 rfcs/20190315-tflite-control-flow/if_model.png create mode 100644 rfcs/20190315-tflite-control-flow/while_buffer.png diff --git a/rfcs/20190315-tflite-control-flow.md b/rfcs/20190315-tflite-control-flow.md new file mode 100644 index 000000000..3401ffc88 --- /dev/null +++ b/rfcs/20190315-tflite-control-flow.md @@ -0,0 +1,236 @@ +# Control Flow in TensorFlow Lite + +Status | Accepted +:------------ | :--------------------------------------------------------------- +**Author(s)** | Yu-Cheng Ling (ycling@google.com) +**Sponsor** | Andrew Selle (aselle@google.com), Jared Duke (jdduke@google.com) +**Updated** | 2019-03-15 + +## Objective + +Support control flow ops in TensorFlow Lite + +## Goals & Non-Goals + +Goals: + +* Discuss how control flow is defined, converted from TensorFlow, and + implemented in TensorFlow Lite + +Non-goals (these are on our radar, and will be discussed separately): + +* Tackle streaming RNN/LSTM use cases (e.g. process one time step in each + invocation and preserve states) +* Handling Tensor Lists (required for dynamic RNN and seq2seq use cases) + +## Background & Motivation + +We aim to make TensorFlow Lite easy to use. One of the ultimate goals is to be +able to **convert any TensorFlow model to TensorFlow Lite and run it +correctly**. The +[Select TensorFlow operators](https://www.tensorflow.org/lite/guide/ops_select) +project increased hundreds of supported ops by running TensorFlow kernels in +TensorFlow Lite. However, some of the TensorFlow ops are not supportible by this +approach. Control flow is one of the biggest missing features. + +Currently TensorFlow Lite doesn't support control flow. The interpreter has a +static execution plan to run all the operators in a fixed order. There's no way +to selectively or repeatedly execute some of the operators. + +Control flow is used in many important use cases, like training, dynamic RNN, +seq2seq...etc. We already implemented some fused RNN/LSTM kernels in TensorFlow +Lite, but these are restricted by the model architecture and conversion flow. + +Implementing control flow is required to make any TensorFlow model convertible +to TensorFlow Lite. It is also a big step towards enabling generalized +RNN/LSTM/seq2seq models. If a RNN/LSTM only uses features that TensorFlow Lite +fused kernels support, we can further fuse these ops and get even better +performance. + +## Defining control flow ops in TensorFlow Lite + +In TensorFlow, users can use `tf.cond` and `tf.while_loop` functions to define +control flow directly. These functions are also called by more advanced +functions like `tf.nn.dynamic_rnn` and `tf.contrib.seq2seq.dynamic_decode`. + +Internally there are 2 ways to represent control flow in a TensorFlow graph: + +* Control flow v2 is enabled by default in TensorFlow 2.0. It uses + **functional control flow ops** like `If` and `While`, where the branches + and loop bodies are represented with TensorFlow Functions. +* Control flow v1 is enabled by default in TensorFlow 1.x. It uses ops like + `Merge`, `Switch`, `Enter`, `Exit`...etc. The control flows are represented + in the same graph. + +We propose to define control flow ops in functional form in TensorFlow Lite. The +TensorFlow model and converted TensorFlow Lite model will be extremely similar, +and the graph structures will be essentially isomorphic. XLA also uses a similar +design for control flow. + +The detailed guidelines of defining TensorFlow Lite control flow ops are listed +as following: + +* TensorFlow Lite control flow ops should be defined like TensorFlow control + flow v2 ops, with exactly the same op semantic, inputs, and outputs + definition +* TensorFlow functions used by control flow ops should be converted to + TensorFlow Lite subgraphs +* For each function attribute on TensorFlow control flow ops, define an + subgraph index field in TensorFlow op option table + +### Example: Defining `If` condition op + +In this section, we use a simple example to explain how `If` op is defined and +how the design guidelines are applied. + +The following diagram illustrates an example which is equivalent to: +`a < b ? a + b : a * b` + + + +Notes how the guidelines are followed: + +* The graph structure is completely isomorphic between TensorFlow and + TensorFlow Lite models. +* We defined TensorFlow Lite `If` with exactly the same op semantic, inputs, + and outputs definition as TensorFlow `If`. + * In TensorFlow `If` operator, the 1st input is a boolean condition the + rest of the inputs are passed into the body (then / else branch). + `then_branch` function is called when condition is true. Otherwise + `else_branch` function is called. + * All these work exactly the same way in TensorFlow Lite, except that + Functions become Subgraphs. +* In TensorFlow Lite, each builtin op comes with a Options FlatBuffer table. + For each function attribute in the TensorFlow op, define an integer subgraph + index in TensorFlow op option table. + +The option table of TensorFlow Lite If will be defined as: + +``` +table IfOptions { + then_subgraph_index:int; + else_subgraph_index:int; +} +``` + +### Supported control flow ops + +Essentially we just need 2 ops to represent any control flow logic: `If` and +`While`, and only these 2 ops are used in TensorFlow 2.0 currently. Therefore +only these 2 ops will be implemented in TensorFlow Lite initially. + +If necessary, other control flow ops can be easily implemented following the +same design guidelines: + +* `Case` was introduced into TensorFlow recently (02/12/2019). We can consider + to support it, or rewrite it to multiple `If` ops in the converter. +* `For` is not required, and it is representable by rewriting to `While` ops. + TensorFlow `For` was only used in previous functional control flow + implementation. We don't expect to see `For` a lot after TensorFlow 2.0 + release, but we can support this for legacy models. +* `StatelessIf` and `StatelessWhile` can be converted to regular `If` and + `While` when converting to TensorFlow Lite. The converter may utilize the + stateless information to do smart optimizations, but it doesn't matter in + TensorFlow Lite runtime. +* `Call` (simply invoking another subgraph) may be implemented in the future + for other purposes. It's not required initially. + +## Converting TensorFlow control flow ops to TensorFlow Lite + +Since we choose to define control flow ops in functional form, it will be +relatively easy to convert TensorFlow control flow ops to TensorFlow Lite: + +* Convert each TensorFlow control flow op to the corresponding TensorFlow Lite + builtin op +* Convert each TensorFlow Function used by control flow ops to a TensorFlow + Lite Subgraph + +To support legacy models which uses control flow v1 ops, the converter will try +to raise control flow v1 ops to v2 ops with best effort. It's not guaranteed to +work because analysing the data flow between `Switch`, `Merge`, `Enter`, `Exit` +ops can be very tricky. However, in our experience most inference graphs should +work if users don't manually insert control flow ops into the graph. + +## Implementation of control flow in TensorFlow Lite runtime + +### Interpreter Implementation + +In TensorFlow Lite, each Subgraph has a static execution plan, and ops are +executed according to the order in the execution plan. This works really well +with functional control flow ops: + +* In each subgraph, the ops in the execution plan are executed one by one + normally. +* When a control flow op kernel is executed, it may invoke another subgraph. + +As of this writing, TensorFlow Lite interpreter was already refactored to be +able to parse and invoke multiple subgraph. Therefore the interpreter is already +ready to run functional control flow ops. + +Currently, each subgraph has its own memory planner and preserves its own +buffer. This will unnecessarily increase memory footage when there are a lot of +subgraphs in the model, since not all subgraphs will be activated at the same +time. To optimize the memory usage, the memory allocator should be refactored to +share allocated memory between subgraphs. + +### Kernel Implementation + +The logic of the 2 fundamental control flow ops isn't very complex: + +* `If`: Check the condition input and invoke one of the 2 subgraphs. +* `While`: + * Invoke the condition subgraph. Break out the loop if result is false. + * Invoke the body subgraph, use the output as the input of the next + iteration. + +It's not hard to implement TensorFlow Lite kernels to make these work. When +invoking a subgraph, a naive implementation is always copying the data between +subgraphs. The complexity comes from **optimizing by avoiding copy** to +**handling dynamic tensor shapes**. + +### Avoiding copy for static shape use case + +In TensorFlow Lite, each subgraph has a memory allocator. It is responsible for +allocating buffers for all tensors in the subgraph, including inputs and +outputs. When the output tensor shapes of control flow ops are static, we can +optimize the execution by avoiding copying the tensor data between subgraphs. + +In the rest of this section, the implementation of `While` will be discussed as +an example. Similar design can be easily applied to `If`, which is simpler than +`While`. + +The flow of `While` execution will be: + +* Copy the input buffer pointers from `While`'s inputs to condition subgraph's + inputs +* Copy the output buffer pointers from `While`'s outputs to body subgraph's + outputs +* Repeat the following steps in a loop: + * Invoke condition subgraph. Break out of the loop if the output is false + * Copy the buffer pointers from condition subgraph's inputs to body + subgraph's inputs + * Invoke body subgraph + * Copy the buffer points from body subgraph's outputs to condition + subgraph's inputs + * Repeat the loop + +See also the illustration below: + + + +The flow is carefully designed to avoid copying data between subgraphs. Since +the body subgraph writes to the output buffer of `While` op, no copy is required +after the loop. This is similar to RVO (return value optimization) technique in +compilers. + +### Supporting dynamic shape use cases + +Whenever a TensorFlow Lite subgraph is invoked, it will dynamically reallocate +tensor buffers if some of the tensor shapes are not static. This use case will +be supported by always propagating tensor shapes and copying tensor data +between subgraphs. + +This isn't optimal, but it isn't typical to have dynamic shapes in control flow. +Note that XLA does not support dynamic use case, and we will already get better +coverage than XLA by having the simple implementation. We can further optimize +this case in the future if necessary. diff --git a/rfcs/20190315-tflite-control-flow/if_model.png b/rfcs/20190315-tflite-control-flow/if_model.png new file mode 100644 index 0000000000000000000000000000000000000000..814f79bc49a9bb6ae4f9cac21b4b6cad23213fd0 GIT binary patch literal 333319 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≪jzVmJ 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 z zC<^1G(PBYpV`H3uoKG`o*THT;wXN|GM23u@j}{;zdyz3+bQ0d))~j@|mHiBW>p z>EOdp$6YPrbSRYGP1{bft7}~iXZlF7f>;T)r|eF)s#l{o39;B;VxS0-nrM**6`k=# zjA4FSxLR!IweXhwR-FVkwJ{oG#5H{uhFzR5=pw4mG-ncRXAaH{5+k=q4v{I�%#U9*m*_S_XeUU`DXL#@c!`i@^ z_>J8OMR5I-n+bwB7)oi7^teMVKJ{w z<83Je`*LE-<#RaE-KX_<#T$Ud+Ue35>gpS6{N59^=HB$Yf-oQ|Od(>jXWKMPHYQN! zp%rFUaQ&k^;@W(`@T`zBGLQDwoP+Z=gzdh{^e;a61ft|@jtJ(^Oh_uh4N{FptCojy zmM*9Q;Y%Q}>nj#Ko3ApQ*0^jtV2cSE{=qm`1FX>myT{lwOZ5Fzy-0_dE3sr$1cEJ; z>I00n3_|bbVoioJ{kq&}BEo?@N14V`!27tiB5 zVOA#p*`s#dcSmkTd!sh{+F}CFGt1eBEz5ES2&|X#x~JmWS=Ovn<}I2SccCIuW~KSG z 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 literal 0 HcmV?d00001 diff --git a/rfcs/20190315-tflite-control-flow/while_buffer.png b/rfcs/20190315-tflite-control-flow/while_buffer.png new file mode 100644 index 0000000000000000000000000000000000000000..ac695dfda9e111e8e34cf40ae0441c0981d2596f GIT binary patch literal 203031 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

>H>$W=_vGW}O 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 QyqJKGnUN*73gZ^_KL|4DuK)l5 literal 0 HcmV?d00001 From a7d07593c0606799634cde532c2c73a675d516f0 Mon Sep 17 00:00:00 2001 From: 8bitmp3 <19637339+8bitmp3@users.noreply.github.com> Date: Tue, 10 Sep 2019 17:16:43 +0100 Subject: [PATCH 031/365] Update links to TensorFlow 2 course, beta docs (#149) --- sigs/testing/faq.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sigs/testing/faq.md b/sigs/testing/faq.md index 615158b97..04b9bef88 100644 --- a/sigs/testing/faq.md +++ b/sigs/testing/faq.md @@ -1,6 +1,6 @@ # TensorFlow 2.0: An Overview -Last Updated: _Mar 6, 2019_ +Last Updated: _September 10, 2019_ A key element of the evolution of TensorFlow (TF) is TF 2.0, which is primarily focused on: @@ -159,8 +159,8 @@ TensorFlow 2.0 API documentation can be found [here](https://www.tensorflow.org/ We recommend that greenfield projects should begin using TensorFlow 2.0. Here’s how to get started: - [Udacity Course](https://www.udacity.com/course/intro-to-tensorflow-for-deep-learning--ud187) -- [DeepLearning.ai Course](https://www.deeplearning.ai/tensorflow-specialization/) -- [TensorFlow Documentation](https://www.tensorflow.org/alpha) +- [DeepLearning.ai Course](https://www.deeplearning.ai/tensorflow-in-practice/) +- [TensorFlow Documentation](https://www.tensorflow.org/beta/) **I’ve noticed a problem with TensorFlow 2.0. How can I file an issue?** From 91703f69d2114167fd303b18424610cbde0965d5 Mon Sep 17 00:00:00 2001 From: Karl Lessard Date: Tue, 10 Sep 2019 17:00:25 -0400 Subject: [PATCH 032/365] RFC: Java Repositories (#131) * Create 20190802-java-repositories.md * Add James Ring as sponsor * Update 20190802-java-repositories.md @ewilderj : moved the **Accepted** --- sigs/jvm/rfcs/20190802-java-repositories.md | 77 +++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 sigs/jvm/rfcs/20190802-java-repositories.md diff --git a/sigs/jvm/rfcs/20190802-java-repositories.md b/sigs/jvm/rfcs/20190802-java-repositories.md new file mode 100644 index 000000000..953744976 --- /dev/null +++ b/sigs/jvm/rfcs/20190802-java-repositories.md @@ -0,0 +1,77 @@ +# Java Repositories +| Status | Accepted | +:-------------- |:---------------------------------------------------- | +| **Author** | Karl Lessard (karl.lessard@gmail.com) | +| **Sponsor** | James Ring (Google) | +| **Updated** | 2019-08-02 | + +## Objective + +Create new repositories under the `github.com/tensorflow` organization to host the code supported by SIG JVM, including the +actual Java client found in TensorFlow core repository. + +## Motivation + +In the spirit of TensorFlow modularization, one main goal of SIG JVM is to migrate [TensorFlow Java client](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/java) +to its own repository so it can evolve and be released independently from TensorFlow core libraries (internally, the SIG calls this migration the *Jexit*, which is self-explanatory). + +Additionally, some repositories are also requested to distribute high-level abstractions of TensorFlow in Java that will also evolve independently +from the client and have their own release cycles. + +## User Benefit + +Having repositories outside the TensorFlow core will help in the development of some major changes to the client architecture, including +that might include the whole replacement of its native binding layer. Doing such experimentations in the main repository is certainly not advised. + +Also, having distinct repositories should allow the SIG to take part in the code review process that could unblock +more quickly new features developed by its members and distribute them as soon as the communitiy agrees. + +It is also important to note the *Jexit* is a good candidate to start TensorFlow modularization because it already relies heavily +on the C ABI for its interaction with TensorFlow core libraries. + +## Design Proposal + +The current request focuses on the creation of the two following repositories: + +### /tensorflow/java + +This is the main repository for hosting TF Java code. It will consist of multiple modules that will be all released altogether and build with Maven. + +Right now, the list of modules that will take place in this repository is: + +#### core + +All artifacts composing the actual Java client, including the Java code, its native layer and different generators used to create Java classes dynamically at compile time, including TF operations wrappers. Each of these components will be also released as seperate modules + +#### nio + +A self-contained Java library that provides advanced support for large buffers I/O operations (exceeding 232 - 1 bytes) and for n-dimensional data structures + +At some point, the Java client core will be also based on this library to improve I/O performances and usage. The `nio` +name comes from the similarities between this library and the [`java.nio`](https://docs.oracle.com/javase/8/docs/api/java/nio/package-summary.html) +package found in the JDK, that is unfortunately lacking the support of 64-bits indexation. + +#### model-framework + +A proper abstraction API (e.g. GraphRunner) that hides the raw tensors and so can be used by non-machine learning experts. +In the future those libraries will allow using the models in a transfer learning setting with TensorFlow Java as well. + +More details in the next section. + +#### keras + +An adaptation of the Keras library to Java, that will serve as the main API for training on TF Java. + +### /tensorflow/java-models + +The java-models will contain Java inference libraries for various pre-trained TensorFlow models, based on the Java +TF model framework. + +This repository hosts a set of Java libraries for loading and inferring various pre-trained TensorFlow models. +It provides a quick reference integrating for some of the popular TensorFlow models such as object detection, pose estimation, face detection and alike. + +The java-models will provide OOTB utilities for Java developers to jump start using various pre-trained models, archived locally and hosted online. +For example they can use any of the object-detection models in https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md by +just passing in the URI. + +We will try to add models that complement the existing set of models and can be used as building blocks in other apps. From 5b89d024a0f29c3d75cac1859333c0bbcdaef06e Mon Sep 17 00:00:00 2001 From: n-triple-a Date: Tue, 17 Sep 2019 15:40:01 -0700 Subject: [PATCH 033/365] Update 20190718-tfx-orchestration.md (#152) Typo fix. --- rfcs/20190718-tfx-orchestration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20190718-tfx-orchestration.md b/rfcs/20190718-tfx-orchestration.md index 704638231..e8e0ceb62 100644 --- a/rfcs/20190718-tfx-orchestration.md +++ b/rfcs/20190718-tfx-orchestration.md @@ -51,7 +51,7 @@ implementation-agnostic Python library. The goal of TFX is to allow external users to configure and run TFX pipelines which are similar to those configured and run internally at Google. The emphasis -Note that these pipelines are smiilar not not identical: +Note that these pipelines are similar but not identical: * Internal TFX pipelines are configured with service configs (protobufs), while external pipelines will use Python. To achieve parity, the Python DSL From e05a37cf1a7903dd17cadf307e2bebb63fc8cd88 Mon Sep 17 00:00:00 2001 From: Kevin Haas <30759715+krazyhaas@users.noreply.github.com> Date: Thu, 19 Sep 2019 12:23:33 -0700 Subject: [PATCH 034/365] Update 20190815-tfx-notebook.md RFC approved --- rfcs/20190815-tfx-notebook.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rfcs/20190815-tfx-notebook.md b/rfcs/20190815-tfx-notebook.md index 68436306d..607f34bba 100644 --- a/rfcs/20190815-tfx-notebook.md +++ b/rfcs/20190815-tfx-notebook.md @@ -1,10 +1,10 @@ # TFX Iterative Notebook Proposal -Status | Proposed +Status | Approved :------------ | :------- **Author(s)** | Charles Chen (ccy@google.com), Joe Lee (joeyounglee@google.com), Kenny Song (kennysong@google.com), Kevin Haas (khaas@google.com), Pushkar Joshi (pushkarj@google.com) **Sponsor** | Konstantinos Katsiapis (katsiapis@google.com) -**Updated** | 2019-08-15 +**Updated** | 2019-09-17 ## Objective From 6f691b0bd8c6f0af24d00c923a9636764f94bdd3 Mon Sep 17 00:00:00 2001 From: Makoto Uchida Date: Thu, 19 Sep 2019 16:12:36 -0700 Subject: [PATCH 035/365] Address comments from rameshuc. --- ...4-tfx-generic-container-based-component.md | 61 +++++++++---------- 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/rfcs/20190904-tfx-generic-container-based-component.md b/rfcs/20190904-tfx-generic-container-based-component.md index 7ba102409..55407b735 100644 --- a/rfcs/20190904-tfx-generic-container-based-component.md +++ b/rfcs/20190904-tfx-generic-container-based-component.md @@ -214,9 +214,9 @@ from and to storage on behalf of the wrapped containerized application program. We propose the following syntax for wrapping user’s containers in the DSL by introducing `ExecutorSpec`. This syntax complements and extends the -[ComponentSpec](https://github.com/tensorflow/tfx/blob/4cafb7a3ddd73463d70072dade71f380e86072e6/tfx/types/component_spec.py#L73) -design previously implemented in TFX, and generalizes -[EXECUTOR_CLASS](https://github.com/tensorflow/tfx/blob/767968262233bb8d37837e8de9e11d1065b07c7b/tfx/components/base/base_component.py#L66) +[ComponentSpec](https://github.com/tensorflow/tfx/blob/0.14.0/tfx/types/component_spec.py#L73) +design previously implemented in TFX, and generalize `EXECUTOR_CLASS` to +[EXECUTOR_SPEC](https://github.com/tensorflow/tfx/blob/0.14.0/tfx/components/base/base_component.py#L63) attribute of components. We propose to use the same `ComponentSpec` base class to describe the custom container-based component’s input and output artifacts, and its parameters. @@ -347,7 +347,7 @@ my_trainer_exec_spec = ExecutorContainerSpec( # the command line flags that my_trainer.py takes are different from what # TFX stock trainer takes. Nevertheless, it does produce an instance of # Model artifacts, which can then be consumed by downstream components. -class MyContainerBasedTrainerSpec(ContainerBasedComponentSpec): +class MyContainerBasedTrainerSpec(ComponentSpec): """ComponentSpec to drive my_trainer.py as a component.""" # Input artifacts. INPUTS = { @@ -422,40 +422,39 @@ def create_pipeline(): # in which case, an Exception is raised at the time when the logical pipeline # is compiled for execution by the TfxRunner. # See the next section of this doc about ComponentLauncher. -_ = KubeflowDagRunner().run(_create_pipeline()) +_ = KubeflowDagRunner().run(create_pipeline()) ``` ### ComponentLauncher to launch the container-based application With the introduction of `ExecutorContainerSpec` which does not specify -`executor_class`, the default `ComponentLauncher` cannot execute the -container-based component. Furthermore, different orchestrator (i.e. an instance -of `TfxRunner`) may have different ways to launch the containerized application -program. - -We propose to extend the base `ComponentLauncher` to define -orchestrator-specific ways to execute the containerized program, including the -ways to translate input artifacts to the complete command line, by filling the -[Jinja template](https://jinja.palletsprojects.com/en/2.10.x/) for -`ExecutorContainerSpec.command` and `ExecutorContainerSpec.args`, and to +`executor_class`, the default implementation of `BaseComponentLauncher` cannot +execute the container-based component. Furthermore, different orchestrator +(i.e. an instance of `TfxRunner`) may have different ways to launch +the containerized application program. + +We propose to extend the `BaseComponentLauncher` to define orchestrator-specific +ways to execute the containerized program, including the ways to translate input +artifacts to the complete command line, by filling the [Jinja template](https://jinja.palletsprojects.com/en/2.10.x/) +for `ExecutorContainerSpec.command` and `ExecutorContainerSpec.args`, and to translate output from the containerized application to keep track of metadata of it and write back to Metadata storage. -Below is one possible implementation of `ComponentLauncher` that implements a -way to launch container-based components with `KubeflowDagRunner`, with ability -to configure low level k8s configurations. This `KubeflowComponentLauncher` -would use the k8s Pod API to launch the container [ref]. On top of this, -`KubeflowDagRunner` allows to apply -[additional k8s APIs](https://github.com/tensorflow/tfx/commit/74f9b6ab26c51ebbfb5d17826c5d5288a67dcf85#diff-6e0294d7fcca3bea10cb2c38bc7860c3), +Below is one possible implementation of `BaseComponentLauncher` that implements +a way to launch container-based components with `KubeflowDagRunner`, with +ability to configure low level k8s configurations. This +`KubeflowComponentLauncher` would use the k8s Pod API to launch the container +through underlying Kubeflow Pipelines SDK implementation [ref](https://github.com/tensorflow/tfx/blob/0.14.0/tfx/orchestration/kubeflow/base_component.py#L118). +On top of this, `KubeflowDagRunner` allows to apply [additional k8s APIs](https://github.com/tensorflow/tfx/blob/0.14.0/tfx/orchestration/kubeflow/kubeflow_dag_runner.py#L188), such as volume mount and secret management to pods. ```python # Demonstration of a ComponentLauncher that has the ability to launch # container-based component, in addition to executor-class based component, # with KubeflowDagRunner. -class KubeflowComponentLauncher(ComponentLauncher): - """Demonstration of ComponentLauncher specific to KubeflwoRunner.""" +class KubeflowComponentLauncher(BaseComponentLauncher): + """Demonstration of a ComponentLauncher specific to KubeflwoRunner.""" def __init__(self, ..., platform_config=...): # platform_config delines any Runner-specific, for example k8s-specific @@ -535,7 +534,7 @@ component to capture it as properties of output artifacts. File I/O is consistent with the way how `KubeflowDagRunner` passively logs output artifact metadata as of `tfx` 0.13, hence natural extension to it. -### Binding between CompomentSpec and ExecutorContainerSpec +### Binding between ComponentSpec and ExecutorContainerSpec (A subclass of) `ComponentSpec` defines input and output artifact specification, and execution property of the component, but does not define ‘what’ to execute @@ -563,7 +562,7 @@ This is as illustrated as the code snippet in the previous sections. needs to be defined in different places and kept in tightly consistent. 1. Command line flags to `my_example_gen.py`. - 1. Jinja template defined in `my_example_gen_exec_spec.commnad` and + 1. Jinja template defined in `my_example_gen_exec_spec.command` and `my_example_gen_exec_spec.args`. 1. `INPUT`, `OUTPUT` and `PARAMETERS` in `MyExampleGenComponentSpec`. @@ -763,7 +762,7 @@ class MyContainerBasedExampleGen(BaseComponent): ## Appendix -### Ppeline Compilation and Release +### Pipeline Compilation and Release The proposed `ExecutorContainerSpec` and related modification will reside in the TFX repository. @@ -794,16 +793,16 @@ to create a helper to build an image, configure a `python` command entrypoint from a naked Python function, and construct command line arguments under the hood, as a specialized subclass of it. Such helper shall eventually converge to the other way of implementing a -[custom component](https://github.com/tensorflow/tfx/tree/80a80ffb0f833cf02344ac2898017cf1b73e166d/tfx/examples/custom_components) +[custom component](https://github.com/tensorflow/tfx/tree/0.14.0/tfx/examples/custom_components) for TFX via a custom `Executor` class written in Python, and package it in a container image to release. Detailed RFC particularly on this point will follow. -### Component Arhcetypes +### Component Archetypes As of `tfx` 0.14, there are -[10 known artifact types](https://github.com/tensorflow/tfx/blob/767968262233bb8d37837e8de9e11d1065b07c7b/tfx/types/standard_artifacts.py) +[10 known artifact types](https://github.com/tensorflow/tfx/blob/0.14.0/tfx/types/standard_artifacts.py) defined and used. * ExternalArtifact @@ -818,7 +817,7 @@ defined and used. * PushedModel Based on the above known artifact types, TFX defines the following -[9 component archetypes](https://github.com/tensorflow/tfx/tree/767968262233bb8d37837e8de9e11d1065b07c7b/tfx/components). +[9 component archetypes](https://github.com/tensorflow/tfx/tree/0.14.0/tfx/components). | **Component** | **Inputs** | **Outputs** | | :--------------- | :------------------------ | :----------------------- | @@ -844,7 +843,7 @@ know the actual business logic inside the container application. As of tfx 0.14, the schema (list of properties) of metadata for each artifact type is defined implicitly when it is created and used -([example](https://github.com/tensorflow/tfx/blob/767968262233bb8d37837e8de9e11d1065b07c7b/tfx/components/transform/component.py#L99)). +([example](https://github.com/tensorflow/tfx/blob/0.14.0/tfx/components/transform/component.py#L118)). In order for the proposed generic component-based component to utilize artifacts and its metadata in a standardized way, such metadata schema definition needs to From db893f9b10c227adc89a5916d47e49be9bd5d7a5 Mon Sep 17 00:00:00 2001 From: Makoto Uchida Date: Thu, 19 Sep 2019 16:19:17 -0700 Subject: [PATCH 036/365] Minor style fixes --- ...4-tfx-generic-container-based-component.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/rfcs/20190904-tfx-generic-container-based-component.md b/rfcs/20190904-tfx-generic-container-based-component.md index 55407b735..df7c606cd 100644 --- a/rfcs/20190904-tfx-generic-container-based-component.md +++ b/rfcs/20190904-tfx-generic-container-based-component.md @@ -429,14 +429,14 @@ _ = KubeflowDagRunner().run(create_pipeline()) ### ComponentLauncher to launch the container-based application With the introduction of `ExecutorContainerSpec` which does not specify -`executor_class`, the default implementation of `BaseComponentLauncher` cannot -execute the container-based component. Furthermore, different orchestrator -(i.e. an instance of `TfxRunner`) may have different ways to launch +`executor_class`, the default implementation of `BaseComponentLauncher` may +not be able to execute the container-based component. Furthermore, different +orchestrator (i.e. an instance of `TfxRunner`) may have different ways to launch the containerized application program. We propose to extend the `BaseComponentLauncher` to define orchestrator-specific -ways to execute the containerized program, including the ways to translate input -artifacts to the complete command line, by filling the [Jinja template](https://jinja.palletsprojects.com/en/2.10.x/) +ways to execute the containerized program. It includes the ways to translate +input artifacts to the complete command line, by filling the [Jinja template](https://jinja.palletsprojects.com/en/2.10.x/) for `ExecutorContainerSpec.command` and `ExecutorContainerSpec.args`, and to translate output from the containerized application to keep track of metadata of it and write back to Metadata storage. @@ -487,13 +487,13 @@ class KubeflowComponentLauncher(BaseComponentLauncher): Another example of `_run_executor()` to the above illustration may be to execute `docker run` locally. -The Runner should implement suitable `ComponentLauncher` accordingly. A pipeline -may have different `ExecutorSpec`s for different components. In case the Runner, -and corresponding `ComponentLauncher`, does not have a way to execute a -containerized program with `ExecutorContainerSpec`, a runtime error would be -raised. If a Runner's `run()` method has a compilation step from logical -pipeline to orchestrator-specific representation of the pipeline, such error -could be caught at compile time. +The Runner should implement a suitable subclass of `BaseComponentLauncher` +accordingly. A pipeline may have different `ExecutorSpec`s for different +components. In case the Runner, and corresponding `BaseComponentLauncher` +subclasses, does not have a way to execute a containerized program with +`ExecutorContainerSpec`, a runtime error would be raised. If a Runner's `run()` +method has a compilation step from logical pipeline to orchestrator-specific +representation of the pipeline, such error could be caught at compile time. ### Artifact Properties after Execution is complete From 9fa653a1b36dc9b12d8243dcdc9330ba39d82e94 Mon Sep 17 00:00:00 2001 From: Makoto Uchida Date: Thu, 19 Sep 2019 16:22:24 -0700 Subject: [PATCH 037/365] Fixed typo --- rfcs/20190904-tfx-generic-container-based-component.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20190904-tfx-generic-container-based-component.md b/rfcs/20190904-tfx-generic-container-based-component.md index df7c606cd..0f2d89485 100644 --- a/rfcs/20190904-tfx-generic-container-based-component.md +++ b/rfcs/20190904-tfx-generic-container-based-component.md @@ -812,7 +812,7 @@ defined and used. * ExampleAnomalies * TransformGraph * Model -* ModelEvalulation +* ModelEvaluation * ModelBlessing * PushedModel From b121b99ce6b373bac21b0773d5b3d055c53eaf37 Mon Sep 17 00:00:00 2001 From: Makoto Uchida Date: Thu, 19 Sep 2019 16:23:33 -0700 Subject: [PATCH 038/365] Update to 0.14.0 tag --- rfcs/20190904-tfx-generic-container-based-component.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rfcs/20190904-tfx-generic-container-based-component.md b/rfcs/20190904-tfx-generic-container-based-component.md index 0f2d89485..c200bde7e 100644 --- a/rfcs/20190904-tfx-generic-container-based-component.md +++ b/rfcs/20190904-tfx-generic-container-based-component.md @@ -25,9 +25,9 @@ is letting users orchestrate arbitrary containers as part of a Machine Learning languages other than Python (e.g. in R, Java, C++ etc), and the ability to chain existing containerized application programs with other pipeline steps through a Python DSL is valuable. As of 2019/09 -([tfx 0.14](https://github.com/tensorflow/tfx/blob/0.14.0rc1//RELEASE.md#version-0140), +([tfx 0.14](https://github.com/tensorflow/tfx/blob/0.14.0/RELEASE.md#version-0140), even though TFX supports `KubeflowDagRunner` as an orchestrator, the -[TFX DSL](https://github.com/tensorflow/tfx/tree/0.14.0rc1/tfx) does not provide +[TFX DSL](https://github.com/tensorflow/tfx/tree/0.14.0/tfx) does not provide a mechanism to accomplish this. ## User Benefit @@ -857,6 +857,6 @@ of artifacts must be compatible with the way metadata (via properties of artifacts) defines, which allows components to properly consume artifacts. We anticipate that -[standard_artifacts.py](https://github.com/tensorflow/tfx/blob/0.14.0rc1/tfx/types/standard_artifacts.py) +[standard_artifacts.py](https://github.com/tensorflow/tfx/blob/0.14.0/tfx/types/standard_artifacts.py) will serve as the catalog of known artifact types. We also anticipate that this catalog might evolve with more properties of a type, or more types themselves. From 570a799ffa6107931437f171ee4fb507a68e877f Mon Sep 17 00:00:00 2001 From: Makoto Uchida Date: Thu, 19 Sep 2019 16:37:46 -0700 Subject: [PATCH 039/365] Fix table format, and address other comments on artifacts and properties --- ...4-tfx-generic-container-based-component.md | 45 ++++++++++--------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/rfcs/20190904-tfx-generic-container-based-component.md b/rfcs/20190904-tfx-generic-container-based-component.md index c200bde7e..d1f370353 100644 --- a/rfcs/20190904-tfx-generic-container-based-component.md +++ b/rfcs/20190904-tfx-generic-container-based-component.md @@ -78,7 +78,7 @@ capabilities: another**: As a result of the artifact centric, strongly typed input- and output- signatures, it enables robust sharing and drop-in replacement of components, so long as signatures (the list of input- and output- artifact - *types*) are the same. + *types*) are the same, and payload is compatible (see also appendix). Additionally, the proposed container-based component will enable the following new features in TFX DSL, which already exist In Kubeflow Pipelines: @@ -819,19 +819,17 @@ defined and used. Based on the above known artifact types, TFX defines the following [9 component archetypes](https://github.com/tensorflow/tfx/tree/0.14.0/tfx/components). -| **Component** | **Inputs** | **Outputs** | -| :--------------- | :------------------------ | :----------------------- | -| ExampleGen | ExternalPath (optional) | Examples | -| StatisticsGen | Examples | ExampleStatistics | -| SchemaGen | ExampleStatistics | Schema | -| ExampleValidator | ExampleStatistics, Schema | ExampleAnomalies | -| Transform | Examples (raw), Schema | TransformGraph, Examples | -: : : (transformed) : -| Trainer | Examples, TransformGraph | Model | -: : (optional), Schema : : -| Evaluator | Examples, Model | ModelEvaluation | -| ModelValidator | Examples, Model | ModelBlessing | -| Pusher | Model, ModelBlessing | PushedModel | +| **Component** | **Inputs** | **Outputs** | +| :--------------- | :-------------------------------------------- | :------------------------------------- | +| ExampleGen | ExternalArtifact (optional) | Examples | +| StatisticsGen | Examples | ExampleStatistics | +| SchemaGen | ExampleStatistics | Schema | +| ExampleValidator | ExampleStatistics, Schema | ExampleAnomalies | +| Transform | Examples (raw), Schema | TransformGraph, Examples (transformed) | +| Trainer | Examples, TransformGraph (optional), Schema | Model | +| Evaluator | Examples, Model | ModelEvaluation | +| ModelValidator | Examples, Model | ModelBlessing | +| Pusher | Model, ModelBlessing | PushedModel | The proposed generic container-based component will enable scenarios where, so long as the wrapped component adheres to one of the above the input- and output- @@ -847,14 +845,17 @@ type is defined implicitly when it is created and used In order for the proposed generic component-based component to utilize artifacts and its metadata in a standardized way, such metadata schema definition needs to -be made explicit, possibly as a Python class. In other words, unless the known -artifact types are explicitly defined and accessible in a common repository, -custom built container-based component would not be able to implement the -interaction with other components via such artifact types, in turn the custom -container-based component would not be able to make use of the interoperability -and shareability with other components in a pipeline. Furthermore, the payload -of artifacts must be compatible with the way metadata (via properties of -artifacts) defines, which allows components to properly consume artifacts. +be made explicit, possibly as a Python class (In TFX 0.14.0, the base `Artifact` +class defines the common set of [properties](https://github.com/tensorflow/tfx/blob/0.14.0/tfx/types/artifact.py#L103), +with option for each sub-classed type to extend it). In other words, unless the +known artifact types are explicitly defined and accessible in a common +repository, custom built container-based component would not be able to +implement the interaction with other components via such artifact types, in turn +the custom container-based component would not be able to make use of the +interoperability and shareability with other components in a pipeline. +Furthermore, the payload of artifacts must be compatible with the way metadata +(via properties of artifacts) defines, which allows components to properly +consume artifacts. We anticipate that [standard_artifacts.py](https://github.com/tensorflow/tfx/blob/0.14.0/tfx/types/standard_artifacts.py) From d65379b48e152f7cf6473f093aa111258e48d17d Mon Sep 17 00:00:00 2001 From: Hongye Sun Date: Fri, 20 Sep 2019 10:52:03 -0700 Subject: [PATCH 040/365] RFC: TFX Generic Container Component Execution --- ...90829-tfx-container-component-execution.md | 555 ++++++++++++++++++ .../tfx-container-execution-classes.png | Bin 0 -> 32156 bytes .../tfx-k8s-container-execution.png | Bin 0 -> 29805 bytes .../tfx-local-container-execution.png | Bin 0 -> 24802 bytes 4 files changed, 555 insertions(+) create mode 100644 rfcs/20190829-tfx-container-component-execution.md create mode 100644 rfcs/20190829-tfx-container-component-execution/tfx-container-execution-classes.png create mode 100644 rfcs/20190829-tfx-container-component-execution/tfx-k8s-container-execution.png create mode 100644 rfcs/20190829-tfx-container-component-execution/tfx-local-container-execution.png diff --git a/rfcs/20190829-tfx-container-component-execution.md b/rfcs/20190829-tfx-container-component-execution.md new file mode 100644 index 000000000..af1bed8ae --- /dev/null +++ b/rfcs/20190829-tfx-container-component-execution.md @@ -0,0 +1,555 @@ +# TFX Container Component Execution Proposal + +Status | Proposed +:------------- | :------- +**Author(s)** | Ajay Gopinathan (ajaygopinathan@google.com), Hongye Sun (hongyes@google.com), Makoto Uchida (muchida@google.com), Ruoyu Liu (ruoyu@google.com) +**Sponsor(s)** | Konstantinos Katsiapis (katsiapis@google.com), Pavel Dournov (dournov@google.com), Ramesh Chandra (rameshuc@google.com) +**Updated** | 2019-08-29 + +## Objective + +This RFC proposes an orchestrator agnostic way to reliably execute a user’s +container in the TFX pipeline. The proposal can support: + +* Running an arbitrary container in either local docker environment or remote + k8s cluster. +* Passing data into the container +* Passing output data from the container +* Capturing logs from the container +* Handling errors and retries +* Cancelling the container execution if the pipeline is terminated + +## Motivation + +Currently, in a TFX pipeline, there is no way to execute a generic container as +one of its steps. Without this feature, users cannot bring their own containers +into the pipeline. This blocks following use cases: + +* User already had a docker image and want to run the image as one of the + steps in a TFX pipeline. +* User wants to use non-python code like R as one of the steps in a TFX + pipeline. +* User wants to have an isolated python environment for their component code. + +This RFC is a follow-up design for +[Container-based Component RFC](https://github.com/tensorflow/community/pull/146). +This design defines how to execute the container spec as part of a TFX pipeline. +The execution may occurs in local docker or in a remote kubernetes cluster. + +### Existing solutions + +#### Kubeflow Pipeline (KFP) ContainerOp + +Today, KFP’s ContainerOp leverages +[Argo container template API](https://github.com/argoproj/argo/blob/master/pkg/apis/workflow/v1alpha1/workflow_types.go) +to launch user’s container in a k8s pod. Argo as the orchestrator controls when +to launch the POD and it uses a sidecar container to report output files back +and wait for user’s container to complete. We are not proposing to use Argo API +because of the following reasons: + +* Argo’s API is orchestrator-specific and cannot be ported to Airflow or local + runners. +* Argo’s API doesn’t provide an extensible way to run custom code before and + after POD API which is critical to support metadata tracking and caching + features. +* Argo doesn’t provide an easy way to recover from user’s transient errors, + which is critical in production workload. + +#### Airflow k8s pod operator + +Airflow supports to launch a k8s pod by an +[operator](https://github.com/apache/airflow/blob/master/airflow/contrib/operators/kubernetes_pod_operator.py). +This approach is closer to what we are proposing in the document. However, we +cannot directly use the operator because: + +* Airflow operator requires to be run inside an Airflow pipeline which is not + the case for local and KF runners. +* Airflow operator exposes a subset of POD’s API, where we want to expose the + full pod spec to the user. +* Airflow operator doesn’t provide a reliable way to retry user’s container + and recover from transient errors. +* Airflow does not support initializing operator inside another operator. + Going back to use multiple Airflow operators for a component is a regression + now that we have `BaseComponentLauncher` ready. + +## Proposed Design + +### TLDR + +We propose to solve the above problems by the following design. + +* Define container as an executor spec. +* Launch container by component launcher in either local docker or k8s pod. +* Use platform config to specify platform specific settings like k8s pod + config. + +The proposed solution has following parts: + +* Extensible `ExecutorSpec` concept which can support container as an + executor. +* Extensible `BaseComponentLauncher` concept to support pluggable component + launchers in tfx runner. + * `DockerComponentLauncher` which launches `ExecutorContainerSpec` in + docker environment. + * `KubernetesPodComponentLauncher` which launches `ExecutorContainerSpec` + in k8s environment. +* Extensible `PlatformConfig` framework. + * `KubernetesPodPlatformConfig` to support k8s pod spec as a config. + * `DockerPlatformConfig` to support docker run configs. + +### Architecture + +Architecture that allows local container execution. + +![TFX local container execution](20190829-tfx-container-component-execution/tfx-local-container-execution.png) + +Architecture that allows Kubernetes container execution. + +![TFX k8s container execution](20190829-tfx-container-component-execution/tfx-k8s-container-execution.png) + +Class diagram that allows container execution + +![TFX container execution_classes](20190829-tfx-container-component-execution/tfx-container-execution-classes.png) + +### Python DSL experience + +In order to use container base component in TFX DSL, user needs to do following +steps. Step 1 and Step 2 follow the DSL extension proposed by the other RFC +(https://github.com/tensorflow/community/pull/146). + +#### Step 1: Defines container based component by `ExecutorContainerSpec` + +``` +class MyContainerBasedExampleGen(BaseComponent): + + SPEC_CLASS = types.make_spec_class( + inputs={ +      "raw_input": ChannelParameter(type=standard_artifacts.ExternalArtifact), +  } + outputs={ +      "examples": ChannelParameter(type=standard_artifacts.Examples), +  } + parameters={ +      "num_csv_columns": ExecutionParameter(type=int), +  } + ) + + EXECUTOR_SPEC = ExecutorContainerSpec( + container_image='gcr.io/my_project/my_example_gen:stable', + command=['python'], + args=['my_example_gen.py', + '--input_csv_file', '{{ inputs.raw_input.uri }}', + '--output_examples', '{{ outputs.examples.uri }}', + '--num_csv_columns', '{{ exec_props.num_csv_columns }}' ], + ) +``` + +#### Step 2: Creates pipeline from container based component + +``` +def create_pipeline(): +  my_csv_file = Channel('CSVFile', uri="/path/to/csv_file") + +  my_example_gen = MyContainerBasedExampleGen( +        raw_input=my_csv_file, num_csv_columns=20) + +  return pipeline.Pipeline( +    pipeline_name = 'my_container_based_pipeline', +    pipeline_root = 'gs://path/to/root', +    components = [my_example_gen], +    ... +  ) +``` + +#### Step 3(a): Sets docker config via runner’s config + +``` +_ = BeamRunner(platform_configs={ + 'MyContainerBasedExampleGen': [DockerPlatformConfig(volumes={...})] +}).run(create_pipeline()) +``` + +#### Step 3(b): Sets k8s platform config via runner’s config + +``` +_ = KubeflowDagRunner(platform_configs={ + 'default': [KubernetesPodPlatformConfig(Pod().use_gcp_secret().spec()] + 'MyContainerBasedExampleGen': [ + KubernetesPodPlatformConfig(Pod(cpu=2, memory='1GB').spec())]} +).run(create_pipeline()) +``` + +### Component launcher + +A component launcher launches a component by invoking driver, executor and +publisher. It understands how to launch a component executor from an +`ExecutorSpec`. The `BaseComponentLauncher` is an abstract base class with two +abstract methods: + +* `can_launch`: public method to check whether the launcher can launch an + instance of `ExecutorSpec` with a specified `PlatformConfig` instance. The + method will be used by `TfxRunner` to choose launcher for a component. +* `_run_executor`: a protected method to launch an `ExecutorSpec` instance. + The method is invoked by `BaseComponentLauncher.launch` method. + +Subclasses of the base component launcher can support launching executors in +different target platforms. For example: + +* `InProcessComponentLauncher` can launch an executor class in the same python + process. +* `DockerComponentLauncher` can launch a container executor in docker + environment. +* `KubernetesPodComponentLauncher` can launch a container executor in k8s + environment. +* A Dataflow launcher can launch a beam executor in Dataflow service. +* Etc. + +Pseudo implementation: + +``` +class BaseComponentLauncher(with_metaclass(abc.ABCMeta, object)): + @abc.abstractmethod + @classmethod + def can_launch(cls, executor_spec: ExecutorSpec, + platform_spec: Optional[PlatformConfig]) -> bool: + return False + + @abc.abstractmethod + def _run_executor(execution_id: int, + input_dict: Dict[Text, List[types.Artifact]], + output_dict: Dict[Text, List[types.Artifact]], + exec_properties: Dict[Text, Any]) -> Any: + pass + +class InProcessComponentLauncher(BaseComponentLauncher): + # InProcessComponentLauncher implements default launcher for python executor. + # It doesn't support platform_spec. + @classmethod + def can_launch(cls, executor_spec: ExecutorSpec, + platform_spec: Optional[PlatformConfig]) -> bool: + if platform_spec: + return False + return isinstance(executor_spec, ExecutorClassSpec) + + def _run_executor(execution_id: int, + input_dict: Dict[Text, List[types.Artifact]], + output_dict: Dict[Text, List[types.Artifact]], + exec_properties: Dict[Text, Any]) -> Any: + # Python in process launcher implementation. + # Subclass should override this method to implement platform launcher + … + +class DockerComponentLauncher(BaseComponentLauncher): + + @classmethod + def can_launch(cls, executor_spec: ExecutorSpec, + platform_spec: Optional[PlatformConfig]) -> bool: + if not isinstance(executor_spec, ExecutorContainerSpec): + return false + + if not platform_spec: + return true + + return isinstance(platform_spec, DockerPlatformConfig): + + def _run_executor(execution_id: int, + input_dict: Dict[Text, List[types.Artifact]], + output_dict: Dict[Text, List[types.Artifact]], + exec_properties: Dict[Text, Any]) -> None: + # Docker launcher implementation + ... + +class KubernetesPodComponentLauncher(BaseComponentLauncher): + @classmethod + def can_launch(cls, executor_spec: ExecutorSpec, + platform_spec: Optional[PlatformConfig]) -> bool: + if not isinstance(executor_spec, ExecutorContainerSpec): + return false + + if not platform_spec: + return true + + return isinstance(platform_spec, DockerPlatformConfig): + + def _run_executor(execution_id: int, + input_dict: Dict[Text, List[types.Artifact]], + output_dict: Dict[Text, List[types.Artifact]], + exec_properties: Dict[Text, Any]) -> None: + # k8s pod launcher implementation + … +``` + +### Platform config + +Platform config carries platform specific configs. Usually, one platform config +type maps to one type of component launcher type. For example, +`DockerPlatformConfig` can only be used by `DockerComponentLauncher` and +`KubernetesPodPlatformConfig` can only be used by +`KubernetesPodComponentLauncher`. + +Each platform config can be merged with another config with the same type. This +capacity is needed to support a layered configuration system in runner’s config: + +* User can define a default platform config list which will be applied to all + components in the pipeline. +* User can define component specific config by using component’s name as a + selector. +* Component specific config should override the default config. + +Pseudo implementation: + +``` +class PlatformConfig(with_metaclass(abc.ABCMeta, object)): + def merge(self, platform_config: PlatformConfig) -> PlatformConfig: + """Merge the current config with a new config. + Usually, it only happens when component config is merged with default config. + """ + # Simple recursive dictionary merge logic + +class DockerPlatformConfig(PlatformConfig): + def __init__(self, **kwargs): + # The kwargs is the same as the list defined in + # https://docker-py.readthedocs.io/en/stable/containers.html#docker.models.containers.ContainerCollection.run + self.run_kwargs = kwargs + +class KubernetesPodPlatformConfig(PlatformConfig): + def __init__(self, pod_spec: V1PodSpec): + self.pod_spec = pod_spec +``` + +#### Pod spec layers + +A final pod spec is merged by 3 layers of pod specs. They are: + +* Base pod spec layer +* Default config spec layer +* Component specific config spec layer + +The merge logic follows +[strategic merge patch](https://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/#use-a-strategic-merge-patch-to-update-a-deployment) +to merge layers in order: base -> default -> component config. + +Strategic merge patch is different from JSON patch by merging lists and maps +instead of replacing them entirely. In this way, the patch layer doesn’t have to +specify the full content of a list or map. + +The base pod spec layer is created from user’s container spec. The pod spec +includes a main container spec with image path and entrypoint of the container. + +Default and component platform configs are configured by runner’s constructor. + +For example: + +``` +# base pod spec +apiVersion: v1 +kind: Pod +spec: + containers: + - name: main + image: tensorflow/tensorflow:v1.13 + command: ["python", "-c", "ml/app.py"] + +# pipeline pod spec +spec: + serviceAccountName: PipelineRunner + containers: + - name: main + resources: + limits: + memory: "128Mi" + cpu: "500m" + +# component config pod spec +spec: + containers: + - name: main + env: + - name: MYSQL_ROOT_PASSWORD + value: "password" + +# final pod spec +apiVersion: v1 +kind: Pod +spec: + serviceAccountName: PipelineRunner + containers: + - name: main + image: tensorflow/tensorflow:v1.13 + command: ["python", "-c", "ml/app.py"] + resources: + limits: + memory: "128Mi" + cpu: "500m" + env: + - name: MYSQL_ROOT_PASSWORD + value: "password" +``` + +### TFX runner + +A `TFXRunner` compiles a logical pipeline into underlying orchestrator’s DSL. In +this proposal, the base runner should accept launchers and `platform_configs` +and provide a default strategy to choose launcher for each component. + +The default choosing logic is: + +* If `platform_configs` is set, use it along with executor spec to find the + first launcher which can support them. +* Otherwise, find the first launcher which can support the executor spec + without `platform_configs`. +* `platform_configs` has higher priority than `default_platform_configs`. + +Pseudo implementation: + +``` +class TfxRunner(with_metaclass(abc.ABCMeta, object)): + def __init__(self, launchers: List[BaseComponentLauncher], + platform_configs: Dict[Text, List[PlatformConfig]]): + self.launchers = launchers + self.default_platform_configs = platform_configs.get('default') + self.platform_configs = platform_configs + + def _get_component_launch_info( + self, component: BaseComponent) -> ComponentLaunchInfo: + component_platform_configs = self.platform_configs.get(component.name) + # Use PlatformConfig.merge to merge configs with the same type. + component_platform_configs = self._merge_platform_configs( + component_platform_configs, self.default_platform_configs) + # Select launcher by platform config. + for platform_config in component_platform_configs: + for launcher in self.launchers: + if launcher.can_launch(component.executor_spec, platform_config): + return ComponentLaunchInfo(component, launcher, platform_config) + for launcher in self.launchers: + if launcher.can_launch(component.executor_spec): + return ComponentLaunchInfo(component, launcher) + + def run(self, pipeline) -> Optional[Any]: + component_launcher_infos = {c.name: self._get_component_launch_info(c) + for c in pipeline.components)} + return self._run(self, pipeline, component_launcher_infos) + + @abc.abstractmethod + def _run(self, pipeline, component_launcher_infos) -> Optional[Any]: + pass +``` + +### Output interface + +User container can receive a +[tmp directory path from default artifact store](https://github.com/tensorflow/community/blob/2c0b009ef955975b15a3cc18b1378e0ed38f394e/rfcs/20190904-tfx-generic-container-based-component.md#artifact-properties-after-execution-is-complete) +to write output data. The directory parameter will be called +`exec_properties.tmp_path`, which can be passed in as a command line argument. +The executor will look for `output.json` file under `exec_properties.tmp_path` +to get the outputs from the component. The output file follows the following +schema: + +``` +"$id": https://pipeline.mlx.org/output.schema.json" +"$schema": http://json-schema.org/draft-07/schema#" +type: object +title: Output +properties: + error_status: { "$ref": "#/definitions/OutputErrorStatus" } + outputs: + type: object + exec_properties: + type: object +definitions: + OutputErrorStatus: + type: object + properties: + code: + type: string + enum: [PERMANENT_ERROR, RETRYABLE_ERROR] + message: + type: string +``` + +The output.json file is optional, but if user’s container writes to the file. It +overrides the default handling of k8s pod launcher. Here are the explanation of +the output fields: + +* error_status: it tells the executor whether it should retry or fail. +* outputs and exec_properties: they will be used to override the execution and + output artifact metadata in MLMD. + +The output interfaces relies on `BaseComponentLauncher` to update states back to +MLMD from executor. + +### Auth context resolution + +K8s pod launcher internally uses k8s python client. The auth context resolution +logic is as follows: + +1. If the current env is in a cluster, uses `load_incluster_config` to load k8s + context. +1. If not, use default k8s active context to connect to remote cluster. + +### Pod launcher resiliency + +In this design section, we focused more on the launcher resiliency under +`KubeflowDAGRunner`. In `AirflowDAGRunner`, the launcher code is running in the +same process of Airflow orchestrator which we rely on Airflow to ensure its +resiliency. `BeamDAGRunner`, however, is considered mainly for local testing +purpose and we won't add support for it to be resiliency. + +In `KubeflowDAGRunner`, a pipeline step will create two pods in order to execute +user’s container: + +* A launcher pod which contains driver, k8s pod launcher and publisher code. +* A user pod with user’s container. + +Pod in k8s is not resilient by itself. We will use Argo’s retry feature to make +launcher pod to be partially resilient. The details are as follows: + +* Each argo launcher step will be configured with a default retry count. +* Argo will retry the step in case of failure no matter what type of error. +* The launcher container will create a tmp workdir from `pipeline_root`. +* It will keep intermediate results like created pod ID in the tmp workdir. +* The k8s pod launcher will be implemented in a way that it will resume the + operation based on the intermediate results in the tmp workdir. +* The launcher will also record a permanent failure data in the tmp workdir so + it won’t resume the operation in case of non-retriable failures. + +### Default retry strategy + +K8s pod launcher supports exponential backoff retry. This strategy applies to +all runners which can support k8s pod launcher. Docker launcher are not in the +scope of the design as it is mainly for local development use case. + +The retry only happens if the error is retriable. An error is retriable only +when: + +* It’s a transient error code from k8s pod API. +* The output.json file from artifact store indicates it’s a retriable error. +* The pod get deleted (For example: GKE preemptible pod feature). + +### Log streaming + +Container launcher streams log from user’s docker container or k8s pod through +API. It will start a thread which constantly pulls new logs and output it to +local stdout. + +### Cancellation + +The container launcher handles cancellation request varies by orchestrators: + +* Airflow natively supports cancellation propagation to operator. We will need + to pass the cancellation request from operator into executor. +* Argo doesn’t natively support cancellation propagation. Currently KFP relies + on Argo’s pod annotation to workaround the limitation and have been proven + to be working. We will use the same way to propagate cancellation request to + user’s container. + +In order to allow user to specify the cancellation command line entrypoint, k8s +pod launcher will support an optional parameter called `cancellation_command` +from `ExecutorContainerSpec`. + +## Open discussions + +* In argo runner, each step requires 2 pods with total 3 containers (launcher + main container + launcher argo wait container + user main container) to run. + Although all launcher containers requires minimum k8s resources, it still + can be a concern on resource usage. diff --git a/rfcs/20190829-tfx-container-component-execution/tfx-container-execution-classes.png b/rfcs/20190829-tfx-container-component-execution/tfx-container-execution-classes.png new file mode 100644 index 0000000000000000000000000000000000000000..3018b37b185f900ceb4c97a0b05cd884e5c93000 GIT binary patch literal 32156 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 U$3w}FZxU2~t`4n~dmHk<0BivMJOBUy literal 0 HcmV?d00001 diff --git a/rfcs/20190829-tfx-container-component-execution/tfx-k8s-container-execution.png b/rfcs/20190829-tfx-container-component-execution/tfx-k8s-container-execution.png new file mode 100644 index 0000000000000000000000000000000000000000..708b623c3b36a7d686c9f61b4568a6733b9e43f4 GIT binary patch literal 29805 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 Date: Fri, 20 Sep 2019 11:01:00 -0700 Subject: [PATCH 041/365] fix code format --- ...190829-tfx-container-component-execution.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/rfcs/20190829-tfx-container-component-execution.md b/rfcs/20190829-tfx-container-component-execution.md index af1bed8ae..6a4327f02 100644 --- a/rfcs/20190829-tfx-container-component-execution.md +++ b/rfcs/20190829-tfx-container-component-execution.md @@ -119,7 +119,7 @@ steps. Step 1 and Step 2 follow the DSL extension proposed by the other RFC #### Step 1: Defines container based component by `ExecutorContainerSpec` -``` +```python class MyContainerBasedExampleGen(BaseComponent): SPEC_CLASS = types.make_spec_class( @@ -146,7 +146,7 @@ class MyContainerBasedExampleGen(BaseComponent): #### Step 2: Creates pipeline from container based component -``` +```python def create_pipeline():   my_csv_file = Channel('CSVFile', uri="/path/to/csv_file") @@ -163,7 +163,7 @@ def create_pipeline(): #### Step 3(a): Sets docker config via runner’s config -``` +```python _ = BeamRunner(platform_configs={ 'MyContainerBasedExampleGen': [DockerPlatformConfig(volumes={...})] }).run(create_pipeline()) @@ -171,7 +171,7 @@ _ = BeamRunner(platform_configs={ #### Step 3(b): Sets k8s platform config via runner’s config -``` +```python _ = KubeflowDagRunner(platform_configs={ 'default': [KubernetesPodPlatformConfig(Pod().use_gcp_secret().spec()] 'MyContainerBasedExampleGen': [ @@ -206,7 +206,7 @@ different target platforms. For example: Pseudo implementation: -``` +```python class BaseComponentLauncher(with_metaclass(abc.ABCMeta, object)): @abc.abstractmethod @classmethod @@ -298,7 +298,7 @@ capacity is needed to support a layered configuration system in runner’s confi Pseudo implementation: -``` +```python class PlatformConfig(with_metaclass(abc.ABCMeta, object)): def merge(self, platform_config: PlatformConfig) -> PlatformConfig: """Merge the current config with a new config. @@ -340,7 +340,7 @@ Default and component platform configs are configured by runner’s constructor. For example: -``` +```yaml # base pod spec apiVersion: v1 kind: Pod @@ -402,7 +402,7 @@ The default choosing logic is: Pseudo implementation: -``` +```python class TfxRunner(with_metaclass(abc.ABCMeta, object)): def __init__(self, launchers: List[BaseComponentLauncher], platform_configs: Dict[Text, List[PlatformConfig]]): @@ -445,7 +445,7 @@ The executor will look for `output.json` file under `exec_properties.tmp_path` to get the outputs from the component. The output file follows the following schema: -``` +```yaml "$id": https://pipeline.mlx.org/output.schema.json" "$schema": http://json-schema.org/draft-07/schema#" type: object From b9b2393b6f773c9b168400af186f84e370da3524 Mon Sep 17 00:00:00 2001 From: edloper Date: Tue, 1 Oct 2019 19:15:41 -0400 Subject: [PATCH 042/365] RFC: StructTensor (#151) * RFC: StructTensor * markup fixes * Renamed StructTensor->StructuredTensor * Updated Objective section to explicitly call out the tabular special case. * Set status to accepted; Added section on how StructuredTensor relates to variables. --- rfcs/20190910-struct-tensor.md | 952 ++++++++++++++++++ .../arrow_example_1.png | Bin 0 -> 75674 bytes .../arrow_example_2.png | Bin 0 -> 58125 bytes .../feature_extraction_in_model.png | Bin 0 -> 39802 bytes .../integration_with_other_formats.png | Bin 0 -> 81924 bytes .../pydict_to_struct_tensor.png | Bin 0 -> 52318 bytes .../python_vs_struct_tensor_encoding.png | Bin 0 -> 40174 bytes rfcs/20190910-struct-tensor/recipe_schema.png | Bin 0 -> 22018 bytes rfcs/20190910-struct-tensor/struct_5.png | Bin 0 -> 70470 bytes 9 files changed, 952 insertions(+) create mode 100644 rfcs/20190910-struct-tensor.md create mode 100644 rfcs/20190910-struct-tensor/arrow_example_1.png create mode 100644 rfcs/20190910-struct-tensor/arrow_example_2.png create mode 100644 rfcs/20190910-struct-tensor/feature_extraction_in_model.png create mode 100644 rfcs/20190910-struct-tensor/integration_with_other_formats.png create mode 100644 rfcs/20190910-struct-tensor/pydict_to_struct_tensor.png create mode 100644 rfcs/20190910-struct-tensor/python_vs_struct_tensor_encoding.png create mode 100644 rfcs/20190910-struct-tensor/recipe_schema.png create mode 100644 rfcs/20190910-struct-tensor/struct_5.png diff --git a/rfcs/20190910-struct-tensor.md b/rfcs/20190910-struct-tensor.md new file mode 100644 index 000000000..160722491 --- /dev/null +++ b/rfcs/20190910-struct-tensor.md @@ -0,0 +1,952 @@ +# StructuredTensor + +| Status | Accepted | +:-------------- |:---------------------------------------------------- | +| **Authors** | Edward Loper (edloper@google.com), Martin Zinkevich (martinz@google.com), Zhuo Peng (zhuo@google.com) | +| **Sponsor** | Alex Passos (apassos@google.com) | +| **Updated** | 2019-09-10 | + +## Objective + +This RFC proposes a new Python tensor type **`tf.StructuredTensor`**, which +provides a flexible and Tensorflow-native way to encode structured data such +as Protocol Buffers or Pandas DataFrames. A ***StructuredTensor*** is a +multi-dimensional collection of ***structures*** with the same ***schema***, +where: + +* A ***schema*** is a collection of fields, each of which has a name and a type. +* A ***structure*** maps each field in the schema to a tensor value + (which could be a nested `StructuredTensor`). + +As an important special case, a 1D `tf.StructuredTensor` encodes a 2D table, +where columns are heterogeneous `Tensor`s, and rows are the aligned elements +in each of those `Tensor`s. This special case maps cleanly to a Pandas +DataFrame or an Arrow RecordBatch. + +## Motivation + +Structured data types are widely recognized as a useful abstraction for making +systems easier to understand and more likely to be correct. But in TensorFlow, +it is currently up to the user to keep track of how individual tensors relate to +one another; and integrating Tensors with external data formats must be done by +hand. This section illustrates the benefits of `StructuredTensor`s with a +motivating example. The benefits are summarized in the next section ("User +Benefit"). Alternative solutions are discussed in the "Related Work" section. + +### Example: Reading Structured Data + +Tensorflow is a very powerful tool for learning deep networks to solve problems. +However, it requires that users represent data using vectors and tensors. Most +problems can be solved by transforming inputs into tensors and operating on +those tensors, but usually the inputs to a model start out in some structured +native format. Currently, it is common practice to use "feature extraction" +code that is outside the main TensorFlow graph to transform the input into a set +of tensors. However, there are several advantages to performing this feature +extraction as part of the graph, and `StructuredTensor` enables this by giving +us a way to represent the original structured input in a TensorFlow-native +format. + +For example, consider the problem of predicting how much a user will enjoy a +recipe, based on a structured representation of the recipe. The structured +representation might include a pre-generated user embedding (where users with +similar tastes have similar embeddings), a recipe title, an estimated +preparation time, a list of ingredients (with amounts and types), a list of +steps, and information about what other users enjoyed the recipe. E.g.: + +![StructuredTensor schema for recipe task](20190910-struct-tensor/recipe_schema.png +"StructuredTensor schema for recipe task") + +In a traditional model, we might transform this structured representation into a +set of tensors using external code. For example, the recipe step descriptions +might be normalized, tokenized, and combined into a single bag-of-words tensor. +Those tensors would then be fed as inputs into a model to predict the user's +score for a recipe. But using `StructuredTensor`, the native representation of +the structured input can be fed directly into the model graph, and any +transformation of that structured encoding into flat tensors can be performed +inside the model. The following diagram illustrates the difference between +these approaches: + +![Separate vs Integrated Feature +Extraction](20190910-struct-tensor/feature_extraction_in_model.png +"Separate vs Integrated Feature Extraction") + +There are several advantages to including feature extraction as part of the +model: + +* **Encapsulation**: When the feature extraction code is not packaged with the + model, it is easier for them to get out of sync. For example, if the feature + extraction is updated but the model doesn't get retrained, then the model will + not perform as expected. + +* **Modularity**: Packaging the feature extraction and model as a single unit + makes it easy to experiment with new models, and to swap new models into a + production environment, even if the new models processes the original input in + a different way. + +* **Easy integration**: `StructuredTensor`s can be constructed from a wide variety + of popular formats, including protocol buffers, JSON, Apache Arrow and + Parquet, and many others. + +* **Training/Serving skew**: Often when feature extraction is performed + separately, separate functions are used to process training and inference + inputs. For example, the training input needs to be batched, and may be + stored in a separate format from the inference format. This divergence + increases the risk of "training/serving skew," where the two feature + extraction procedures differ in subtle ways, leading to suboptimal model + performance. Integrating feature extraction into the model minimizes the + chance of train/test mismatch. + + +* **Efficiency**: `StructuredTensor` can be read several several popular formats + using zero-copy reads, for lightning-fast data access with minimal + serialization overhead. In contrast, external feature extraction usually + involves serializing to `tf.example`, which can add substantial overhead. + + +### Example: Writing Structured Data + +`StructuredTensor` gives us a principled way to generate and store structured +output; without `StructuredTensor`, we would need to encode the predicted structure +in some ad-hoc format. To continue the example above, perhaps recipes are only +available in a semi-structured format, such as a webpage or a text file. We +might therefore wish to build a model that can parse a "raw" recipe, and predict +its structure. Using `StructuredTensor` as an output format has several +advantages: + +* **Standardization**: `StructuredTensor` provides us with a standard output format + for structured models, which can be easily converted to other popular formats, + including protocol buffers, JSON, Apache Arrow, Parquet, and many others. + +* **Efficiency**: `StructuredTensor`s can be converted to many standard output + formats using zero-copy writes with minimal serialization overhead. + + +* **Joint modeling**: We can combine a model that outputs `StructuredTensor`s (such + as recipe parsing) and a model that inputs `StructuredTensor`s (such as recipe + rating) into a single model. This makes it easy to do joint modeling, where + the final loss function can be used to improve both sub-models. + +### Example: Processing Structured Data + +`StructuredTensor` is useful even for models that don't have structured inputs or +outputs at their boundaries, by providing a way to manage structured data, and +to track and process collections of related tensors. Consider the joint model +constructed by combining the recipe parsing model with the recipe rating model +as a single end-to-end recipe rating model. This model has a simple input (a +single string) and a simple output (a single score), but the two internal +components of the model share a structured intermediate representation. +Advantages of using `StructuredTensor` internally to a model include: + +* **Self-documenting Tensors**: In models that use many different tensors, it + can be difficult (and error-prone) to keep track of the meanings of the + different dimensions for each tensor. By wrapping tensors in `StructuredTensor`s, + we can effectively provide a label for each dimension. + + +* **Shared Outer Dimensions**: Often, several different tensors will have + "shared dimensions." For example, we might have several different tensors + corresponding to a recipe's ingredient list, where the outer dimension of each + tensor indicates which ingredient is described. Using `StructuredTensor`, we can + combine all of these tensors into a single structure, which encodes, + documents, and enforces the fact that this dimension is shared. + + +* **Zero Runtime Overhead**: As discussed below, `StructuredTensor`'s internal + encoding is a collection of parallel tensors; and any operations on the + `StructuredTensor` reduce to operations on those individual tensors. Therefore, + `StructuredTensor` adds minimal overhead at graph-construction time, and zero + overhead at training and inference time. + +## User Benefit + +* **Integration*. `StructuredTensor`s can be constructed from a wide variety of + popular formats, often using zero-copy reads and writes. This will make it + much easier to integrate `StructuredTensor`s with existing systems, which may use + a wide variety of data formats. The following diagram gives examples of the + formats that for which we intend to provide direct conversion: + + ![Integration with Other + Formats](20190910-struct-tensor/integration_with_other_formats.png + "Integration with Other Formats") + +* **Encapsulation**. TensorFlow models are tightly coupled with input + transformation and feature engineering. Being able to package the model and + the feature engineering in a single graph has a variety of advantages: + + * It is easier to keep feature engineering and modeling in sync. Since the + same subgraph is used for training and inference, there is less code + duplication in feature engineering, which means that there are fewer places + to introduce training/serving skew. + * It is easier to try out different feature engineering techniques within a + model, without changing the overall infrastructure. + * It is simpler to swap in a new model with different input processing in a + production environment, since the input processing and the model can be + packaged as a single SavedModel. + * By directly operating on the native data, there is a possibility of trying + completely different modeling techniques without changing the API of the + model's TensorFlow graph. + +* **Efficiency.** + + * `StructuredTensor` can be read from and written to many popular formats using + zero-copy reads and writes, for lightning-fast data access with minimal + serialization overhead. This avoids the overhead of reading from and + writing to `tf.Example` or similar formats (which can sometimes be + substantial). + * `StructuredTensor` does not introduce any additional runtime overhead to + TensorFlow graphs, because all operations on `StructuredTensor`s reduce to + operations on the individual contained tensors. This also ensures that all + applicable graph optimizations can be applied to the graph. + * Graph optimizations can be used to ensure that the data ingestion + operations skip over any structured input fields that are not used by the + model. + * When multiple structured models are chained together, the structured output + of one can be fed directly in as the input of the next, with no need for + any serialization. + +* **Understandability.** It is difficult to represent structured records in + tensorflow, and even harder to represent nested structures. By having a + standard way to do this: + + * It is easier to get a holistic view of feature engineering and machine + learning. Often, decisions about feature engineering and modeling are + intertwined. By having them in one graph, this makes it clearer ex post + what feature engineering and modeling are useful together. + * We can provide clearer interfaces between stages of the graph. + * We can wrap tensors to document the meanings of dimensions at graph + construction time, with no run-time cost. + * We can encode, document, and enforce the relationship between related + tensors, including parallel tensors with shared dimensions. + * We can more easily build shareable feature engineering components. + +* **Joint Modeling.** + + * We can combine multiple structured models into a single joint model, where + loss functions can propagate through all the submodels. + +### Limitations and Drawbacks + +As with any generic system, there are some compromises in the design that +deserve mention: + +* **Efficiency vs custom feature engineering**. It may be possible to perform + input transformation and feature engineering more efficiently outside the + graph, depending on the types of input transformation that are performed. + +* **Efficiency vs custom data ingestion**. For some input formats, a custom + data ingestion operation could be made more efficient than the generic data + ingestion operations that will be used for `StructuredTensor`s. For example, if a + model is parsing a custom protocol buffer, then a custom op that reads that + protocol buffer could use tricks and assumptions that are not available to a + generic input parser. However, for several columnar input formats such as + Apache Arrow, where zero-copy reads and writes are possible, the difference + between a custom input parser and the generic input parser should be small. + +* **Requires a shared schema.** `StructuredTensor` requires that all structures in + a given tensor have the same schema. Thus, `StructuredTensor` cannot be used to + encode arbitrary schema-free "dictionary-like" data. + +* **Shared dimensions must be leading dimensions.** A collection of tensors can + only be combined into a single `StructuredTensor` if their shared dimensions are + the leading dimensions. E.g., two tensors `Tensor` with shape `[batch, + ingredient]` could be combined into a single `StructuredTensor`; but a `Tensor` + with shape `[batch, ingredient]` could not be combined with a `Tensor` with + shape `[batch, recipe_step, ingredient]`. + +* **Trees, not graphs.** `StructuredTensor` encodes tree-like nested structure, + consisting of records and lists. It does not provide any direct support for + encoding graph-like structured objects. + +Thus, as with any generic system, we have made some sacrifices of speed for +generality and safety, but we believe that the benefits in terms of integration, +collaboration, and model understandability outweigh the limitations. + +## Design Proposal + +We are proposing the addition of a new Python tensor type **`tf.StructuredTensor`**, +which can be used to encode structures and struct tensors. + +* A ***scalar `StructuredTensor`*** contains a single structure (whose fields may + have any type and shape). +* A ***vector `StructuredTensor`*** or ***higher-dimensional `StructuredTensor`*** + contains a collection of structures with the same schema. + +For example, we can use a `StructuredTensor` to encode the following structured +information about a user and a recipe: + +```python +struct = tf.struct.constant({ + 'user_embedding': [0.8, 2.1, 0.3, 0.1, 9.2, 1.8], + 'recipe': { + 'title': 'Snickerdoodle cookies', + 'est_time': 55.0, + 'ingredients': [ + {'amount': 3.0, 'unit': 'cup', 'name': 'flour'}, + {'amount': 1.0, 'unit': 'cup', 'name': 'white sugar'}, + {'amount': 0.5, 'unit': 'cup', 'name': 'brown sugar'}, + {'amount': 1.0, 'unit': 'cup', 'name': 'butter'}, + {'amount': 1.0, 'unit': 'teaspoon', 'name': 'cinnamon'}, + {'amount': 2.0, 'unit': 'teaspoon', 'name': 'cream of tartar'}, + ...], + 'step': [ + {'description': 'Preheat oven to 350 degrees F.'} + {'description': 'Whisk together the flour, cinnamon, baking soda, salt, ...'} + {'description': 'Using an electric mixer, cream together the butter and sugar ...'} + {'description': 'Add the dry ingredients to the wet ingredients and mix until ...'} + ...], + 'user_rating': [ + {'user_embedding': [0.7, 2.0, 0.3, 0.3, 5.2, 2.2], score: 0.8}, + {'user_embedding': [1.4, 0.0, 3.1, 1.1, 1.2, 0.3], score: 0.4}, + ...], + }) +``` + +In this example: + +* The root object `struct` is a scalar `StructuredTensor` (i.e., a single + structure). +* The `recipe` field contains a scalar `StructuredTensor` (a single nested + structure). +* The nested fields `ingredients`, `step`, and `user_rating` contain vector + `StructuredTensor`s (i.e. 1D collections of structures with the same schema). +* The nested fields `title`, `est_time`, `amount`, `unit`, `name`, + `description`, and `score` contain scalar `Tensor`s. +* The nested `user_embedding` field contains a vector `Tensor`. + +In the initial implementation, the value for a field may be a `Tensor`, a +`RaggedTensor`, or a nested `StructuredTensor`, where nested `StructuredTensor`s could +contain single structures (scalar `StructuredTensor`) or collections of structures +(non-scalar `StructuredTensor`). In the future, we may add support for additional +value types, such as `SparseTensor`s. + +A `StructuredTensor`'s schema constrains the type for each field: + +* **For fields with `Tensor` values**, the schema specifies the field value's + `dtype` and `shape`. +* **For fields with `RaggedTensor` values**, the schema specifies the field + value's `dtype` and `ragged_rank`. +* **For fields with `StructuredTensor` values**, the schema specifies the nested + `StructuredTensor` value's `shape` (e.g., a single structure vs a list of + structures), and the name and type for each nested field. + +For multidimensional `StructuredTensor` (such as a vector of structures), the +individual structures must all share the same schema. + +### Usage + +#### Construction + +`StructuredTensor`s can be constructed from a variety of sources, including: + +* Nested Python dictionaries and lists. +* Serialized protocol buffer messages. +* JSON-encoded protocol buffers. +* Apache Arrow record batches. +* Apache Parquet. +* Pandas DataFrames. +* Spanner. +* Firebase. + +For more details, see the section below on "Integration with Other Formats." +`StructuredTensor`s may also be constructed directly from a shape and a field +dictionary; see the "Struct Tensor Encoding" section below for more details. + + + +#### Indexing + +For scalar `StructuredTensor`s, the Python indexing operator selects a field's +value: + +```python +>>> print(struct['user_embedding']) +tf.Tensor([0.8, ...], shape=(6,), dtype=float) # result is a Tensor vector +>>> print(struct['recipe']) + # result is a StructuredTensor scalar +>>> print(struct['recipe']['title']) +tf.Tensor(Snicker..., shape=(), dtype=string) # result is a string scalar +>>> print(struct['recipe']['ingredients']) + # result is a StructuredTensor vector +``` + +For non-scalar `StructuredTensor`s, the indexing operator selects elements (as with +any other tensor): + +```python +>>> print(struct['recipe']['ingredients'][0]) + # result is a StructuredTensor scalar +``` + +Multi-dimensional indexing is supported: + +```python +>>> print(struct['recipe', 'ingredients', 0, 'name']) +tf.Tensor(flour, shape=(), dtype=string) # result is a string scalar +``` + +This includes support for slicing ranges of values in the tensor dimensions: + +```python +>>> print(struct['recipe', 'ingredients', :, 'name']) +tf.Tensor(['flour' 'white sugar' ...], shape=(10), dtype=string) + +>>> print(struct['recipe', 'user_rating', :, 'user_embedding', ::2]) + +# result is a 2D float tensor with shape [num_user_ratings, 3]. +``` + +#### Path-Based Manipulation + +We will define a collection of ops that can be used to move, transform, and +combine fields within a `StructuredTensor`. These include: + +* **`broadcast`**: copies values from a source path to a target path, where the + target path is a descendant of the source path. +* **`promote`**: copies values from a source path to a target path, where the + target path is an ancestor of the source path. +* **`apply`**: applies a given op or function to one or more source paths, and + writes the result to a specified target path. + +#### Updating Fields + +The `StructuredTensor` object is immutable. However, several methods are provided +which can be used to construct new `StructuredTensor`s with modified field values. + + +`StructuredTensor.with_updates(self, **updates)` +: Returns a copy of this `StructuredTensor` with one or more fields modified or added. + +`StructuredTensor.without(self, *field_names)` +: Returns a copy of this `StructuredTensor` with one or more fields removed. + +`StructuredTensor.with_only(self, *field_names)` +: Returns a copy of this `StructuredTensor` with only the specified fields retained. + +The tensors encoding any unmodified fields are shared (not copied). + + +### Struct Tensor Encoding +`StructuredTensor` will be an abstract base class with two concrete subclasses: + +* `DenseStructuredTensor`: A dense collection of structures. +* `RaggedStructuredTensor`: A ragged collection of structures. + +#### `DenseStructuredTensor` +Internally, each `DenseStructuredTensor` is encoded using two objects: + +* **shape**: A TensorShape specifying the overall shape of the `StructuredTensor`. + For example, a `StructuredTensor` with shape `[5, 3]` contains `15` structures, in + `5` rows of `3`. The `shape`'s rank must be statically known -- i.e., + `shape.ndims` may not be `None`. (Note: this is the shape for a collection of + structures; it does not describe the shapes of any individual fields.) For a + scalar `StructuredTensor` (i.e, a single structure), `shape=()`. + +* **fields**: A python dictionary mapping each field name to a `Tensor`, + + `RaggedTensor`, or `StructuredTensor` that encodes that field's values. If `st` + is an `N`-dimensional `StructuredTensor`, then for each field `(k, v)` in + `st.fields.items`: + + ``` + v.shape[:N] = st.shape + st[D1...DN][k] = v[D1...DN] + ``` + + Note that for scalar `StructuredTensor`s (where `N=0` and `s.shape=()`), this + simplifies to just: + + ``` + st[k] = v + ``` + +The following example shows the encoding for a scalar `StructuredTensor` with two +fields: `x` (whose values are string scalars), and `y` (whose values are 2- +dimensional `RaggedTensor`s). + +```python +>>> st_scalar = struct_constant({"x": "foo", "y": [[1, 2], [3]]}) +>>> st_scalar.shape +TensorShape([]) +>>> st_scalar._fields +{'x': , + 'y': } +``` + +The following example shows the encoding for a vector `DenseStructuredTensor` with +the same schema as `st_scalar`. + +```python +>>> st_vector = struct_constant([{"x": "foo", "y": [[1, 2], [3]]}, + {"x": "bar", "y": [[4], [5, 6]]}, + {"x": "baz", "y": [[7, 8, 9]]}]) +>>> st_vector.shape +TensorShape([Dimension(3)]) +>>> st_vector._fields +{'x': , + 'y': } +``` + +The following example shows the encoding for a 2x2 matrix `DenseStructuredTensor` with the same schema: + +```python +>>> st_matrix = struct_constant( + [[{"x": "foo", "y": [[1, 2], [3]]}, {"x": "bar", "y": [[4], [5, 6]]}], + [{"x": "baz", "y": [[7, 8, 9]] }, {"x": "raz", "y": [] }]]) +>>> st_vector.shape +TensorShape([Dimension(2), Dimension(2)]) +>>> st_vector._fields +{'x': , + 'y': } +``` + +This last example (of a 2x2 matrix `StructuredTensor`) is illustrated below: + +![st_matrix](20190910-struct-tensor/pydict_to_struct_tensor.png "st_matrix") + +The `DenseStructuredTensor` encoding effectively takes the outer dimensions of the +`StructuredTensor`, and adds them into the tensors that encodes each individual +field. This is illustrated by the following diagram: + +![Python vs StructuredTensor Encoding +](20190910-struct-tensor/python_vs_struct_tensor_encoding.png +"Python vs StructuredTensor Encoding") + +#### `RaggedStructuredTensor` + +`RaggedStructuredTensor` is used to encode ragged collections of `StructuredTensor`s. +Internally, each `RaggedStructuredTensor` consists of a values tensor (which is a +`StructuredTensor`) and one or more row-partitioning tensors. See the +[`RaggedTensor` guide](https://www.tensorflow.org/guide/ragged_tensors) for more +information about this encoding. + +### Limitations + +`StructuredTensor` requires that all structures in a given tensor have the same +schema. Thus, `StructuredTensor` cannot be used to encode arbitrary schema-free +"dictionary-like" data. A few examples of structured values that could not be +encoded with `StructuredTensor` include: + +| Structured Value | Reason Why It Can't be Encoded | +:-------------------------------------------- |:--------------------------------------- | +|`[{"a": 1}, {"a": "hello"}]` | Field `"a"` has different dtypes | +|`[{"b": [1, 2, 3]}, {"b": [[1, 2], [3, 4]]}` | Field `"b"` has different ranks | +|`[{"c": {"x": 1}}, {"c": {"y": 1}}]` | Field `"c"` has different nested fields | + +Many existing struct-like encodings have provisions for "optional" values. For +example, protobuf fields may be "`optional`" and Apache Arrow fields may be +"nullable." In this proposal, we are not proposing to add support for optional +or nullable tensors. However, if support for optional or nullable tensors is +added in the future, then `StructuredTensor` could take advantage of that to relax +the restriction that nested structures must have the same fields. + +Similarly, many existing struct-like encodings have provisions for "union" +values. For example, protobuf fields may use "`anyof`" and Apache Arrow defines +a `Union` type. In this proposal, we are not proposing to add support for +union-value tensors. However, if support for union-value tensors is added in +the future, then `StructuredTensor` could take advantage of that to to relax the +restriction that fields must have the same `dtype`. + +### Integration with Other Formats + +#### Row-Based Formats + +##### Nested Python Dictionaries + +Nested Python dictionaries can be converted into `StructuredTensor`s using +`tf.struct.constant`. The schema for the `StructuredTensor` may be specified +explicitly; or if it is not specified, then it can be inferred from the value +itself: + +* Nested `list`s of scalar values are `Tensor`s or `RaggedTensor`s. (All scalar + values must be at the same nesting depth, and have compatible `dtype`.) + +* `Dict`s are converted into `StructuredTensor` scalars. + +* Nested `list`s of `dict`s are converted into multidimensional `StructuredTensor`s. + (All dictionaries must be at the same nesting depth, and must have the same + schema.) + +##### Protocol Buffers + +A protobuf definition can easily be mapped to a `StructuredTensor` schema. In +particular, each protobuf message type corresponds with a `StructuredTensor`, and +its protobuf field names are used as `StructuredTensor` field names. The shape of +each `StructuredTensor` field depends on the cardinality of the corresponding +protobuf field: + +* `required` protobuf fields are represented with 0D (scalar) values. +* `repeated` protobuf fields are represented with 1D (vector) values. +* `optional` protobuf fields are represented with 1D (vector) values, where each + value has length zero or one. + +The tensor type of each `StructuredTensor` field depends on the type of the +corresponding protobuf field: + +* Scalar fields are represented with `Tensor` values (if the underlying tensor + is 0D or 1D) or `RaggedTensor` values (if the underlying tensor is >1D). +* Message fields are represented with `StructuredTensor` values. + +A single proto is represented as a scalar (0D) `StructuredTensor`, and a batch of +protos is represented as a vector (1D) `StructuredTensor`. + +An open-source library, struct2tensor, is provided to construct a TF graph that +parses a batch of serialized protos into a `StructuredTensor`. + +##### JSON + +As long as a collection of JSON objects are subject to the same schema, they can +be represented similarly to Protocol Buffers. A JSON → `StructuredTensor` converter +implementation could choose to infer the schema (like what we do for nested +python dicts) or require a schema. + +#### Column-Based Formats + +At its core, `StructuredTensor` uses a column-based encoding for structured data. +As such, it is highly compatible with other column-based formats. In many +cases, the underlying data buffer used by `StructuredTensor` is identical to the +data buffer used by other formats, which enables zero-copy reads and writes from +these formas. + +##### Apache Arrow + +The `StructuredTensor` encoding is directly compatible with the Apache Arrow +encoding for structs. In particular, the format and contents of all data +buffers is identical, allowing zero-copy transfers between `StructuredTensor` and +Arrow. The following diagrams illustrate how `StructuredTensor`s relate to Arrow: + +![StrucTensor vs Apache Arrow +(Example 1)](20190910-struct-tensor/arrow_example_1.png +"StrucTensor vs Apache Arrow (Example 1)") +![alt StrucTensor vs Apache Arrow +(Example 2)](20190910-struct-tensor/arrow_example_2.png " +StrucTensor vs Apache Arrow (Example 2)") + +#### Pandas DataFrames + +Pandas `DataFrame`s can be represented using 1D `StructuredTensor`s, where each +column corresponds to a `StructuredTensor` field. For example, we can encode the +same set of 1D fields in both a DataFrame and a `StructuredTensor`: + +```python +>>> fields = {'col1': [1, 2], 'col2': [3, 4]} +>>> df = pd.DataFrame(data=fields) +>>> st = tf.`DenseStructuredTensor`(shape=[2], fields=fields) +``` + +If the default `RangeIndex` is not used for the row index, then the +`StructuredTensor` must contain an additional "_index_" field. DataFrames that use +hierarchical indexing (`MultiIndex`) can be represented as higher-dimensional +`StructuredTensor`s (for hierarchical row indices) or nested `StructuredTensor`s (for +hierarchical column indices). + + + +## Related Work +### tensorflow.io + +We plan to work with the tensorflow/io team to update their data sets to support +StructuredTensor. For example, we will extend tensorflow_io.arrow (which currently +only supports flat unstructured Arrow files), to generate `StructuredTensor`s for +structured Arrow files. + +### tf.nest + +Many TensorFlow APIs support nested structures of dictionaries, lists, and +tuples. We can use this facility to store structured data. For example, we +could encode a recipe as a nested Python structure whose leaf elements are +scalars: + +```python +recipe = { + 'title': tf.constant('Sugar cookies'), + 'ingredient': [ + {'name': tf.constant('sugar'), + 'amount': tf.constant(1), + 'unit': 'cup'}, + {'name': tf.constant('egg'), + 'amount': tf.constant(1)}, + ...], + ...} +``` + +But this encoding differs from the StructuredTensor encoding in two important ways: + +* Nested Python structures are only supported if the structure is entirely + static -- and in particular, if the *length of any nested list never changes*. + If we built a model to process recipes, then it could only process recipes + with a fixed and predetermined number of ingredients, steps, and user_ratings. + +* StructuredTensor encodes structured data using a column-based format, where all of + the values for a given nested field (such as recipe.ingredient.amount) are + stored in a single tensor. This makes it possible to process all values of a + given field in parallel, using a single op. Using his column-based format can + be critical for efficiently processing structured data. + +## Detailed Design + +### `class StructuredTensor(CompositeTensor)` + +The `StructuredTensor` base class defines the following properties and methods: + +#### Accessors + +```python +@property +StructuredTensor.shape + """The static shape of this StructuredTensor. + + The returned `TensorShape` is guaranteed to have a known rank, but the + individual dimension sizes may be unknown. + """ +``` + +```python +@property +StructuredTensor.rank + """The rank of this StructuredTensor (`ndims`). Guaranteed not to be `None`.""" +``` + +```python +StructuredTensor.field_names(self): + """Returns the string field names for this `StructuredTensor`. + + Returns: + tuple of string. + """ +``` + +```python +StructuredTensor.field_value(self, field_name): + """Returns the tensor value for the specified field. + + If this `StructuredTensor` has shape `[D1...DN]`, then the returned tensor + will have shape `[D1...DN, V1...VM]`, where the slice `result[d1...dN]` + contains the value for the scalar `StructuredTensor` `self[d1...dN]`. + + If this is a scalar `StructuredTensor` (`N=0`), then the returned value is + field value for this structure. + + Returns: + `Tensor`, `StructuredTensor`, or `RaggedTensor`. + """ +``` + +#### Factories + +```python +StructuredTensor.with_updates(self, **updates): + """Returns a copy of this StructuredTensor with one or more fields modified. + + Args: + **updates: A mapping from string field names to new field values. Fields + may be added or modified. If `self.rank > 0`, then each new field + value's shape must be prefixed with `self.shape`. E.g., if `self` is a + vector of structures with `n` elements, then the update values must have + an outer dimension of size `n`, and the `i`th element will become the + field value for the `i`th struct. + + Returns: + A `StructuredTensor`. + """ +``` + +```python +StructuredTensor.without(self, *field_names): + """Returns a copy of this StructuredTensor with one or more fields removed. + + Args: + *field_names: The names of the fields to remove. + + Raises: + KeyError: If a specified field is not present in this StructuredTensor. + """ +``` + +```python +StructuredTensor.with_only(self, *field_names): + """Returns a copy of this StructuredTensor with only specified fields retained. + + Args: + *field_names: The names of the fields to keep. + + Raises: + KeyError: If a specified field is not present in this StructuredTensor. + """ +``` + +#### Conversion + +```python +StructuredTensor.to_py(self): + """Returns this StructuredTensor as a nested Python dict or list of dicts. + + Requires that `self` was constructed in eager execution mode. (In graph mode, + evaluate the `StructuredTensor` first, and then use `StructuredTensorValue.to_py()`.) + + Returns: + A nested structure of `dict` and `list`. + """ +``` + +#### Operators + +```python +StructuredTensor.__getitem__(self, key): + """Returns the specified piece of this StructuredTensor.""" +``` + +```python +StructuredTensor.__repr__(self): + """Returns a string representation for this StructuredTensor.""" +``` + +### `class DenseStructuredTensor(StructuredTensor)` + +#### Constructor + +```python +DenseStructuredTensor(self, shape, fields): + """Creates a dense `StructuredTensor`. + + Args: + shape: Static information about the shape of the StructuredTensor. Must have + a known rank (`ndims`). + fields: A dictionary mapping from string to tensor, providing the values + for individual fields in the struct. If `ndims > 0`, then every tensor + in `fields` must have the same shape in the first `ndims` dimensions; + and that shape must be compatible with `shape`. + """ +``` + +### `class RaggedStructuredTensor(StructuredTensor)` + +#### Factory Methods + +```python +@classmethod +from_row_splits(cls, values, row_splits): + """Creates a ragged `StructuredTensor` from row_splits. + + Args: + values: A StructuredTensor with shape `[nvals, ...]`. + row_splits: An integer vector with shape `[nrows+1]`. + Returns: + A `RaggedStructuredTensor` with shape `[nrows, None, ...]`. + """ +``` + +### `class DenseStructuredTensorSpec` + +The `DenseStructuredTensorSpec` class is a `tf.TypeSpec` subclass that specifies the +shape and schema for a DenseStructuredTensor. + +#### Constructor + +```python +DenseStructuredTensorSpec(shape, field_specs): + """Build a type specification for a StructuredTensor. + + Args: + shape: The shape of the StructuredTensor. shape.ndims must not be None. + field_specs: A dictionary mapping from field name to TypeSpec, specifying + the tensor type used to encode each field. + + These TypeSpecs should specify the type of the entire field + (including outer dimensions which correspond to `shape`). For + example, if `shape=[2, 3]`, and field 'x' contains an int32 vector + of size `10` for each structure, then `field_specs['x']` should be + `tf.TensorSpec([2, 3, 10], tf.int32)`. + """ +``` + +### `class RaggedStructuredTensorSpec` + +The `RaggedStructuredTensorSpec` class is a `tf.TypeSpec` subclass that specifies +the shape and schema for a `RaggedStructuredTensor`. + +#### Constructor + +```python +RaggedStructuredTensorSpec(shape, values_spec, row_splits_dtype): + """Build a type specification for a RaggedStructuredTensor. + + Args: + shape: The shape of the StructuredTensor. shape.ndims must not be None. + values_spec: A StructuredTensorSpec for the values of the RaggedStructuredTensor. + row_splits_dtype: `dtype` for the `row_splits` tensor. + """ +``` + +### `class StructuredTensorValue` (TF-v1 only) + +When the `StructuredTensor` class is used in graph mode, the `StructuredTensorValue` +class can be used to store a concrete input or output value for a given +`StructuredTensor`. Its structure is analogous to that of `StructuredTensor`, except +that field values are numpy arrays (or `RaggedTensorValues` or +`StructuredTensorValues`). + + + +### Variables + +The fields in a `tf.StructuredTensor` may be `tf.Variable`s; but a +`tf.StructuredTensor` is a python-level object, and can't be stored in a +`tf.Variable` itself. + + + diff --git a/rfcs/20190910-struct-tensor/arrow_example_1.png b/rfcs/20190910-struct-tensor/arrow_example_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a6469be755b695f50e301f4f73d27f31dbbf1b34 GIT binary patch literal 75674 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 n)X% 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 tm{^&Z>l&C?85pp>bJs)Bkei>9nO2EgL&@gb(E} literal 0 HcmV?d00001 diff --git a/rfcs/20190910-struct-tensor/arrow_example_2.png b/rfcs/20190910-struct-tensor/arrow_example_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ef86f0e3cbedc3c3ee657a9dc4338422ddb2227d GIT binary patch literal 58125 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 x1!-s>fnjH%o+S+?GG`?swH2jb8 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 NtEa1<%Q~loCIAl&l~(`& literal 0 HcmV?d00001 diff --git a/rfcs/20190910-struct-tensor/integration_with_other_formats.png b/rfcs/20190910-struct-tensor/integration_with_other_formats.png new file mode 100644 index 0000000000000000000000000000000000000000..78c160d22dee614ccc08ae4f1461f1ddfd4722e2 GIT binary patch literal 81924 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 CeGH8N literal 0 HcmV?d00001 diff --git a/rfcs/20190910-struct-tensor/pydict_to_struct_tensor.png b/rfcs/20190910-struct-tensor/pydict_to_struct_tensor.png new file mode 100644 index 0000000000000000000000000000000000000000..f17e9e3ac43dea91270ee3492ebde18c4718b629 GIT binary patch literal 52318 zcmd43WmuJK^f$Nx=?;-bu;>y|QW{iJKte)F5J8ZZMp{BqKsrUbyHh|Kr5i~>x=Us~ zp8vcv^Xa|jy5_^|a~;odv-cDCz1I50S`R@gN^*pFG$xK2~0);AikAG%}{Qau2{9{EF%H<{s<>iY)oxodOD=3r$4+^#V422Sk zMxn0Q#8<0|zz?vD9?40gE|7nc>oPvUJJ|LQ6lJjIaq%%ZxXHwdXW=apV?!lJIFAs=C|U@M&ZDy2htMi&f|ZkoYW~aX|cAj9SvF0nOUR>q(fLJElJra{}^!> zIT?r0gx(l#y-vwdRH0>b<r+eEiHYVnvrp+LM*=2 z5IH&jxPa!L0;+PK1BchpY#_}0wEI8 zf3I*^o)zSX$cv^a8RNfqNnc$0|MtU7!;WaSw_gtDS{B5_#57G#(uIYEng9Gsc%AG! zw$(LWUecwdrLpp{a;vAMFMi5SXe56!;iE>m*-V)^tn@Qo!oosFQF7|2e_0F-4fQK4 zbJ*5U!DW4<^lN^e*R+#DJx}LyiCLelo0~`!mmZ$@`RyY6-;Z0{+tVa`uvUI%D5sRC ztFU~Cj>dWPsEc_jATSW;>|nw=Ff0rURcbzfZs5MJ5q6qAULodwk_=x#O?zOwt<>MR zaU;vUg2Hch_L=2GIU%=xt(O*u?AmZ1ul-6tdfv4R;|!OcfdSt3>du1PnT)69mQ9iD znp<7m4UGc>Me=Ljfti`{_dOZv>+8q#E6U6L^YS=#$}BL2g@vuIlyn^I{{ESPLaC{# z4Q8ofpPwG~?F;2TI^@vq`Z&Sc^+0t-jZAg!w`KoaNBFfj^_#P^UV1f-O~b?GjcY_i zME)5Ww@wb$gA+wvpHF;ENTBy261?|j=Xw-}_S-twL(1PW_jq_zGEY;h#ar9jj362U zLqb|NrfSL_8?f=k5Y#xXH~SOP+MFI(Et?SwcfY+uGY}Ei`Ny6!TJJ`}bG$yVjqxt<_gmSK~)C)f<#lWub@` zdBfKmFZgM_F8B(!(Qjo0z<3naVP6=TT?m4Vd zcpWm9((_sKC+VMJ^I{&nfAV%*ntqlJkNOj3|Ys$U2jnsrLeN#QFQ@HQ(PK`xBW zJ17XZ+F>nfx!7TC*e@YLFNLPgX=AbpzQkWl4EH73m|{IsPbFYUrJ$gIS4uQ={5aZO z820d{a$;_{dyVHsJ&6s~9SaJVgFo7{?p>j)&O*Y%SB|XH($WSB4DO@EFaDnUjnML& zqvYh|AW43m9q$tSA`9+|d4t|MzTHnQ2y~;+0-y zRh7hbGA14#5)Tg#N#b@$Aw18YS!%aBO!)RzhaOFQYi|uApIcteI7sdq8`I9S^!E0K zD7us^;{WyQ*KsZZ(naxQA0k2;ewASLwzjrZ*tWpX&~Fe(q>PLP$z0=je&~39%rjlG za&j%h!<5Y7EPbZwkF$8ruHFCm=~H-gv{q&!jrLk|e?L#3Ri_CbglfGLqk30Nbo7E& zl5LfU!6^kJhD%FVhi^gHcNJYeZ!wyhMz3D&g|@pej3^CuAUJb za@C(npQ?6f$=1jzH0xu)q7Rf`?uq7=%6sj)+)E!q#f$#^`**DxM^2Z$mGJrVD0Mc! z^mNmDjHcr%CpAnl+nQ<9%k=bw}u<7;vomYg2cMb z8Yixf`uax>_cdtz4@uB&@PvOUE4u>`%5;Y0Lz3rT>Wz(!mBFk}I)}#M$EFJ#8)4IR zuJa4uKT+MYN#2_Nc;nIR#s*i&#S_Rht$H`X`lDa?l{Gc@lB-+02TUxkNlnrxJF|RWaCK9cqbSRU@IL zJ)L&Zt8;OvN2k%g(ASW4a&j8X*Q1s4Cy+2V&n(m(Hg-AO&_k|gBwtT*Y-(z%$ZA3$ zgh5m%vjq}}L$6x>o|1Ngpq;Gqd2fQS#p3aL#Y{ik3~~vaPs^pDG!?lW+otdezuo+(d;_9^>1?XpYN8)*AcZbL$f2|7(P9mNT^Qqi zB9!@5^}g$8&7l;wTjhqc;r7LvOOkU^_{# z$>Piqa&d7X8>O;o)*JtQ_jItQhY)3Re&SG8ymat}nfb>JD0$zad5uvlcEbRH`p(>f zg47To8mAi!_iV1d_3;@RPO0uyj^VpuaQF(@#eClE%_)!b6Vuatbry=zV$)!o9?dDw z=bYD2OjiNAqdAG20Vj)W7a#tauA@CTH~{#5Qu8W7%$)|-r`g?i)%A2`AdQO8B+#aS zDe|G;dAExqY7kOb9~;&ex%UVI2gb<#X*&R~O4ma!6pm?^i&bv{AXchchLXjhT*LW6 zoKC;Un&=aV3!9|;YVPR<&xUa!A0HoHB(_|aoi;Cu6WJ3J6D>~1i%q*MO;y&@Al8-Q z?|D0}k2g(C(L>4UJ8XH(toLXdpZ+*CXL5&ZtWoSU0lIq_~7z3_+lcmkjaP`a5q*Jo$1=00VM`~}3Kd$^E@ zn7ADhm6U-Y?7^p-Xewgf8lh=_Pu2>yPxfDqj*m;SMKTKrP}(hZOZ3Fv+5Izp1{F*` z{qfPsiBWqPJq#1guI~3>~zQx4fg8MBKk5*^9oH~p-rax?FzSJEfIi|7Py|dU=^k(-t%6gXy z`0le`twCDlmN7QdOAEk@B&pX%3NEJSle48Xs3BmG%n@17(kWxpZ}151?^pRVSw&t{ zRHRj8gbCO+B*tCk{-HyJ z&K7#I{?y2b*`Js(Y;;u1a0ZAgvVnO|D6;4PIN=R$vv=7|xO3mmlL^;Ff+Q(N0&o?3YaF@Wk2+Pg$XuMY~`hPJy;_;1|1 zr^OlITUJ)qUtj_`n%!HaiNS#u!dkz6QS5>~3an&kw+j349O}pAx0g z&`txm(7&rv)|2FMf(z>*nWs|*@DL0|?J9_n;o)H$dwXdJWRO(8r-fN+8F;4`KxCOk zM0E3Xv-u#djUcHkPH|9n%e|LZ>nw({87Jd><*%%`DF;A|a}!KX;beprnbN~}M~eFr(*nw-%O?PQo zStGdpqqTwtoBdS{Bn-Xy9_CnRU4Y(^yt@S)<5#mEJ_H42y`{z*p5CPU?-v$K>waS24XlQx1?YjF3miGEFb{xv9*%L()ogU?Yo>VXR}=!hsNzhKp2 zV;$h2x|KFe6I$IzN6sPCx3Q25fJ5Vp)cyjT{f{3b_p)_3<3EKTN0+B zOa_;XpAfC#kTO~CF6_8D9SX}mH(}i%^Yg2s;meo!ev;lq^g@~IuKG#$#m8oo?piZI z&_ZO}{2ApHaXTUrcKky^Qvx{fmv5^}*rc6`EtHv@K9n z=GNCkfz&kh^eEzF64DE)uis7`_jqMwY&`e-H?DZh{a=7-&PQ8J0+yp!|4hJba_6#V zI4nQ0hUg$eC(7P@_i`jZ1$g!GhCq$UcQOztEkAycL77Bu4Hgy^B+Y#NptJ8Vi|wxe zDjf#O)zuZqJ3bJzA2Ho4($a#g2KBXDCE29TI|~m|nnav7bmu(2LSD!#DYZdGEXlhi zCib`P@KrWL0DP%=t|g!dvOQkN0T0QLiE=AH*LVo+IS-4i*`|NHF=F6}D|%UDgi<_a z{@GxrYV+p6z`$sQH6!REf8cRh`wyZ1Xw<>jt%_&1 z(03h=A)h!1NWA?oY!k4MyLI%i_(*2LhQg`I!hTLx*`d|eDZ74NO+13Q(5iJV+Ny>s zi!$AOG{n0LQ5>c=Q|~^sk$`4OtUe^r7D^kCoP2e%_KjNRPoPS(KnMh*+{cPdM~jTx zv3uBLzC5z8&yX@VHxCPSf-1x$$x0T~pZD}GQrtlW!J7C(jpWj=#hJC@dpINI7~QdV9$8r?r>CcnYu$m%HDpxxj?SI$2Dbh}0oIkGSaQOsi`ZeFnoq zPxMC3x}%xgqGI`9ytQsPr+gH}Az@;29k6q5bv3*E)ytP_%vo!>Nj|^_Q()!I$4go3 zkC$l6`h2UZs>U}rC;oo_bjz>r4A9=U?MUHEmIJo~zjPy4`Mvr+ zH(3zRiyvRyOwYoAV2O*PP>VeUt9E)&dn`u_(Vjec0wv#9n)%Jklc|MA1mD7-fl_|c0y`ObX;7Hdq7-l z?2>aH!Zu{X=(JZ()I{kbOe3vZ`* zU=z~#YUDh@l~S7S36IzptCI>KiWao{s$zf|v~}9sn4*O>lu45f<#9jRvwU+$eMHyH z%xq5U!F94T;Eh{{hjPG8!srA)THP#oHC4ShCKZ`^{l{^#Pxji!cd#h&2?+xk%8X^i zPJM}@MRv-Z@3b#H*SOHw8Y$%OJa`z9$ zaXrqLhsRE|z5wrRdoH{4Q{qpCcRALaJ9F!3Q&Ur?C;Hhf`%|C>uJos1fQ#ef6sV726{XwC~#u$hW5^OKN%)3za zC3{Xj?7L}-epmhO63-ywtTO8xoh=>;HqE#o1T(w+TF;|l-nPx&UjwyocF`kc_USXe z8%s-nVbyNn)|ko2ZmkEZWpOB~&B!1lBa@|_4}_eU@s6bUxk}3V5#__iqq3? zU=cHfSl1t80eea;|F9!ez`30xNjAgx~vPsYUxoarw#V~Dq^QE@pn?$af z9%3)Gcg1SsqALpDS-2=Or~cZTZNiu{yLIbU+2M7v2l*qDhwjUZ{37|F&JeG#wzk#= z_%;)Y4t&tEmm_#mcqN@yrTb3D%z9`Gb+_YB|v54;NYmlC5b^PaqcvzakR=C1fh$; zeC?W{wRHhyAub`I%<;~mANOrAN5L~k^3(^5kZdV^y7tZOv$HeMiXe>oEtQQ*9`CP0 z9qqPzs+|-KTv2m9+Jt^H;WOk_t;abHe5)DO6jV6`3`$v9*|6i02N>3RZpHdn)urrF z3(=J=jJMQ4xoN=^?q-vb9nQ01=m zbStnPuu|V69{0)KZ;P1$Fe)x@lmLN*x4Ct9P5G#i6uWNs2k3A4DP1ISf`G`H*uuVW za;=<(=$xivJArs*lAXPM>z423u)tG68cdbu3wx!4 zVqy%SUYdD`BjdRWwP|IuTg9@esiubjlIE5X9tvy%Hn$PnP!a|PA_IdNx-N1W8n!{b zVfJFN-z<2MUQrhGb&H*6d5-x$cG6$}l#BU!fKcC;pzF`nlY9KjDYmwk1%> z+SxP_P0W5(s%@Q}uV42Lnm8tLt5JdSagH04tk=1~ab!gd%{>$q&oeKQ{>{;%Ybete z)jR8kz$fbep1ibQ9YmZ@%*0iF{ZOpL{_7RdoPhMh z9k~Vy7U4;NXk7x|%sn`CO64oLffxlyGkfRcVe!uQ1|G+l5LF)@ zrbBNaZ(NHP$~cs43oC^vwip#@=}Vwsupd2oRQ5Zx{&Yha)#x0< z313XVIF$YZoA93T+lJ$%FHl|q#EeEizC4ipm8zO1iz^EHXx{YCXi;-fjHs)C$I0(o z;0qxBeDet%J$(r#=CtX{m%#-Me`yfijI{m0jRv8E_=ey)-Mo3zLRmi{KK?4yYjCMR z5*Pv#X{L~^dI3G#C;7U#P-NfiE*Sz2pdzMrikH5q)CoNAra~w<^oYjL6@YD$t#YiX zt%D1a44m?w%`7VRt~HmXHH5F^W7VMuh2upqHU~os3b<(mEODTMT>7cre&a5fgqMlH{Js`B;x;50N|+u&Apl8Y$^L9pC#i&Fm?n)USnJ>srK_B2QKECz}x?GS+3 zHrMs#%a><6UEIj2pu!Fn2j_&nFg(lyFXo=}*42E2hAvg~^0%XofURlP2^55SaUQcY*;BOnbgU)=LT^ZGFV zFdZ^ek|7Nt1;?%Gb!K4RKbcK=4M%SleGKGDr`(ctvgXFETT<7_5RU>gxi&*($`ipS z#7qOXwLh>Yb_LSlH_$`~>r04yIjzVA%VY4Pny`=%^Sygi(7Z+TDVU(U)A8D%>PU9z zvluM1I!`uy>Y(H_wX|SBjo#YbRa;9SKtUIf5}i{?NeSMNf;>jb7HB>r&^O2VBUN_G zMi2|IJJMkB3~i|D>FMD|`n-hbyXUk)2dl>GcC=-AhzW*Yv-=DzxE~U}Kf@e>QGa#mpv@cgVB?r*kc(E#&7ocOhU0?`g#(x8wKf?Bs@GF)6-9$sDvuphx@ z$vU|45dawo%;?w{A}1~Cux%%nYSc|LAE&Ga8gz7Y1QqTDESzLY>ET03U}kVD zhTvJl0vRrLMoMBJ-Xp!RqqMCppMJetkmtqu704B+%k2%^-#;* zF+MK)tGK7hv9^4-LTT@|AwR3EyoX3^=xHN%JQ$`$U<8$&AR`}=l9E8eI7OQOKjb@h|^{ls?hxVS3P%5;>qwjmxZq z&yVKcHy;f{`$ke(nHWq(lIl^%wP8Zj&WP_t1aQ;l!@1P@buKq9^#LgwsByC906#iU z>DRAcu-FL&?idlGuNQ0u8SZ-!ROyD@RE&N0?cHU0Wo1AMRpASb_SWM^BbiH>n1)~pkOWCb-?dJ(A)>H1csBvVltgeNG~xb2-T~4BR#( z;i96V%xCIFA*Q32-K!E362{Nr4|+&cKR~28=s2rRD2tCxG6=BrqQ>WP;+CRc@t0-%vv+E~r}wEzH26APGoJ2$N@KW&w!9 z``N&QH2)E1mGWJ}edF0TQPL#plfHPosMsWtiX0(3$*3{om zg0v?QTg7se$56Ox>N80s7P!(r3|`#;r4}_DGS4BLn$_B%K=Zzpk03_IW0rd22EZu{ zJ!D9J-vZWyKX@*nu8Fito`;qPf3gPC2?HgHY+PjaDHiaOAMua`kzsR}p8*f(#z5gE=vWT@pV2ia{dl6N7^tJej@oeW(%$ZF0u`(UR;OBPICrWW@9o?3 zTX_HH`3U~E=lg$kasRJAESbBG4kJLMri=6QK0s5EW=vsm@ejw>_WlhG_u&$KXSyO- zeLx$&tkLqbJv(|0Wl;8L3d)yaEdPLGQDC4v#(ztiKt@4v379C@EO8P696+*zK+-20 zeS3#O2@BWg`VdJ-NXW~}dxeG)0^N9*7m}5gRq3?J@K{Z4ZeigPEo~g#=cf%GqQLx7 zvmhd&vCoJM@}*P!H_mrM8tT+*s5rVahx_~AfHMubNF#3BM1}Q;Gs+CIUkf-rB$)3A zlDYs}5*$w&79lHhx9s4j!8J5NftggiNW73D_Xl?OYjq``T5@u#bhpsvm zbcMyF;2vMsvzeHgIgON&5MvWCG&GDBu%basdK5|UHyE0@17iwU zFauR)x;a%706JwB)G!JKo(xp(O91(oqaebXl<%MWLc52Fl@%BD%);UwnAG!7#3&OB z-$UyeHM_Lr5B!Fii3v?sRu)-2m?}Ys`8>mf*RNkAq>zYFEM#y{J@A{6{hv`%NKfy& zI`_oWyN-WGMP?A935GQP;|hSzTgr**v_E)W4s*~6I}$*wxU3 zkJBIC1E~dKEp1?(oHTsH=wC9u^V8*$gA!?IV&V&QBU#c950S{=o(xo28^DlPHs^hC zefQQzh`}jq2Lsyg*6+j3nSjX1%YaFM1O6Qy@(@CZm_hg(_|Cq-Qd*$$e!8WMl}w;C zS?z!i2-FO%168oW;|1-oVCkW{HbJKzjm3`4eq)k4JUl#_&lC?hJM<@PoLyX+VYcD! ztH}<#=(kBp28j+(gEIz%dRYVB!kK}G@K;a8ms=ScqCpsv{Z#XXn&9)VCa_UL*n-Gy z1`I^N6xErCjj~xCWQBOiyrT=|Tfs29I0q#dKGaBiX?AW7&C}D<*U!%ol8Nf>tN21) zu=uyW-%0`zC~kH7;K2j1cHVz*8~FAO6T%CLS+HkGebW`2!_FHG-6T4H#vq+&PmFlLA%*$_pq3nhF*MxFkc>8(oXGzP`SV&CQaWDNM<3 zzb-a}G`#&_lQ2-Vb#)N5Ottxs(_{%ND=QJXGM?Xtu3cq&1CkY5;$T1j-Kg1oW@7S% zk_1ZJdtz5)Mpw0{u&}TZtOQ<%Rdr|%;d=2YOTpCwa1~k#(%Z(p;?04~L&j5q=0mCM zxV>#0N^{57T`|(@F-(F$EI)t#+;6-coY}exqIWr@9#Dc{JB|92C6K|NB1<(>kOoL7 zf_r9=tL8`sv1s^TEcPJI3~ZURtLyx)Z^6i@){|TiZ{&5K^e1qRv^|0`SS2;w7is)IS2#GpdR6YH%(XMz#t_x`=I z_gf;MfU*h-1c-SI|Kb!Z5C3G!FnO0f0(1mRJZ6QLg#`!tjQ$YPt%@beiCM6Mn^|$ovO|{Xl!N+0bbCfehxhG z4aH)U29yJ43aV^P%SM2C#Le$Ojewqb<@ihJzxio#P}+*_tqfow!CGz=H*U+s#Dq{J zpj%(pExOetFo^W^^)vPBgut@iYbsITnT5y`H2kl|Q6kMZ*he1dAwrroe*caO2hyr@ zxx>N1u>}(el;-XL?mnMCUqJ>2VNd}b1$-g^=m=0Owx`SwfD=M_y9T$8bQli~{9(G_ zt3nL(!Y3+0+v`Y29@-pN;m5CDy#ghGjA>jAmmhrov;Pjbs#Icb_aIMT+y|PY6_)$y zv6AXHkg`caN$C%0kp||r-}nI#{34HYm+077y#3fA=#%k)UboT&aCm|CKYQ0|#EXpQ zbSK?sgl2-Yt}Y$iK|i!7&wz!4z{5!Hc7?)=1yk+^hm@3*Hg#OW?R6*=0nq#X`0*puZah>bOmi;vCIo{I!2~b^f)!aF=$^4!wsdshKml%r0*B}h z*tVv@K?;c4Z(sxFMrPf@Plam@zb0n{G#CdT-$$2=d(Tl(QPJ5Ur3Rc=L%@1;WfGhyW{H)wc;uSWr1tx0{y$$8nyha{Y6a}z@up>)L%UNiwfc2Xf74UDR zQs3)>SAsNVPWE1a2*WJ^z>R|+rINM5R33m~^ClFomGLrmEF!wh$W8nIla1CvO@5IO z6GNR`EAV*3c}C?OWaqQLXUAJRJ8yNluu)oCT8)580s;c?+yOBt&r&@F;4CO;lf&dI z4sxk@cz~8~w-O;l0F`tto3L-+zWtBFs#Do_T$#QbK?WkE?Pz;GJR;%}2*=T3iA57I+LA@SRYrPslo@a{SNr*uc`Z zLozW@1|!x3406a$Kyy6RXkl$F80JN;0m=YZX@wyM{^9wi?(Pt^=VVX>+&Q4mT)jj` z#30h)g+V$XmkCs?(q;}Fwgg#vC<+E?6aP{p^`h{f`bhD87Z@lG?%{{n*mnpZK!pb$k;A0JREq60-h%+4+g{+x(fFIi7PEBiJq@l^JJlpe)M1Q zU%6I@j0`q{$@A~<-hO_VV1E#yMr)i3WXu1HQ&raGwKaUy%2Z87c`%3?p|8LUP+pMa z<|gO=J!}(c1SZ#8=*dFQQud=SK>PP64Ib_gFUV}h9-uLbCw{&E_FT zRS*YqLy-0;5*iwvg*D2TuFC*Of%0~+cPQ};TfxD+5!8D|zZW$y(Rf2?C|jx0fxWO} z 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 literal 0 HcmV?d00001 diff --git a/rfcs/20190910-struct-tensor/python_vs_struct_tensor_encoding.png b/rfcs/20190910-struct-tensor/python_vs_struct_tensor_encoding.png new file mode 100644 index 0000000000000000000000000000000000000000..6ce7550ac110f29f8eb69570f4130eec80b02179 GIT binary patch literal 40174 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 literal 0 HcmV?d00001 diff --git a/rfcs/20190910-struct-tensor/recipe_schema.png b/rfcs/20190910-struct-tensor/recipe_schema.png new file mode 100644 index 0000000000000000000000000000000000000000..b057d02a8f9f6f1fa773eba51e516f7a0181e332 GIT binary patch literal 22018 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 Di5o|} literal 0 HcmV?d00001 From d0fccb5b7fe545a7679f0ab7ffc4ff2061ee7369 Mon Sep 17 00:00:00 2001 From: Ruoyu Liu <44377718+ruoyu90@users.noreply.github.com> Date: Thu, 3 Oct 2019 12:49:31 -0700 Subject: [PATCH 043/365] RFC: TFX Resolver (#144) * Initial commit for TFX Resolver RFC. * Apply suggestions from code review Co-Authored-By: Robert Crowe <44788059+rcrowe-google@users.noreply.github.com> * Mark this rfc as accepted No major concern from review. --- rfcs/20190828-tfx-resolver.md | 156 ++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 rfcs/20190828-tfx-resolver.md diff --git a/rfcs/20190828-tfx-resolver.md b/rfcs/20190828-tfx-resolver.md new file mode 100644 index 000000000..5995fef3d --- /dev/null +++ b/rfcs/20190828-tfx-resolver.md @@ -0,0 +1,156 @@ +# TFX Resolver + +Status | Accepted +:------------ | :-------------------------------------------- +**Author(s)** | Ruoyu Liu (ruoyu@google.com) +**Sponsor** | Konstantinos Katsiapis (katsiapis@google.com) +**Updated** | 2019-08-28 + +## Objective + +This RFC proposes the design of Resolver, which serves as an optional plugin in +TFX DSL to handle artifact resolution before a component execution. The +following can be achieved with this design: + +* Enable artifact resolution across pipeline run boundaries +* Make artifact resolution easy to customize directly through pipeline + definition + +## Motivation + +In the original design of TFX orchestration, Driver is used to prepare all +artifacts needed for a component execution and feed the result artifacts into +Executor for execution. The default behavior of input artifact resolution is to +take the outputs of upstream components in the same pipeline run. Any behavior +other than that requires a customized driver. While Driver is sufficient in +terms of functionality, it is essentially a blackbox for TFX end users that is +hard to reason about. Customization and maintenance are also hard since a Driver +also contains other logic such as execution decisions making. + +To address the aforementioned problem, we propose to extract the artifact +resolution part into a separate unit, named Resolver. It has the following +attributes: + +* It is an optional plugin. Users that do not need this feature do not need to + understand Resolver so that simple use cases still remain simple +* It is easy to understand. Pipeline authors and users no longer need to dig + into hidden driver code to reason about the artifacts' flow into a component +* It is easy to write and test. A Resolver definition is no more than a lambda + expression + +## Detailed Design + +### API + +A Resolver contains the definition of how to query back artifacts given source +Channels, an optional configuration and the access to historical context of +previous artifacts and executions. The API is similar as below: + +```python +class BaseResolver(object): + def __init__(self, configuration: Optional[Any] = None): + self._configuration = configuration + + @abstractmethod + def resolve( + self, + metadata_handler: metadata.Metadata, + input_dict: Dict[Text, Channel]) -> Dict[Text, Iterable[Artifact]]: + raise NotImplementedError +``` + +The parameter `metadata_handler` passed into `resolve()` is read-only since no +write should be allowed during artifact resolution stage. The other parameter +input is a mapping from tags to Channels. Each Channel provides the type +information that will be used when querying ML metadata. + +### DSL integration + +There are two options to integrate *Resolver* into TFX DSL: + +1. Make *Resolver* an optional parameter for component interface +2. Build a special node *ResolverNode* as the wrapper of *Resolver* logic and + make it independent of existing component interface. The definition of + *ResolverNode* is shown below + +```python +class ResolverNode(BaseNode): + def __init__(self, + name: Text, + resolver: Type[BaseResolver], + **kwargs: Channel): + ... +``` + +We choose to adopt option (2) for the following reasons: + +* It keeps simple cases simple. Users do not need to care about *Resolver* if + there is no need for cross-pipeline-run artifact resolution +* It has cleaner and clearer interface than Option (1), especially when + cross-pipeline-run artifact resolution is needed only for some of the inputs + to a component +* It allows not only resolution logic sharing but also resolution results + sharing. Instead of repeating the same *Resolver* multiple times, + ResolverNode allows reusing artifact resolution results with little work + +### Example + +The following example demonstrate our design. There are a couple of requirements +in this scenario: + +* Train with the latest n pieces of Example artifacts, including the one + produced within the pipeline run +* Transform and Trainer should operate on the same set of Example artifacts + +First, create a new resolver that implements the desired artifact resolution +logic: + +```python +# This class implements an artifact resolution logic that will return the latest +# n artifacts for each given Channel. +class LatestRollingWindowResolver(BaseResolver): + def resolve( + self, + metadata_handler: MetadataStore, + Input_dict: Dict[Text, Channel]) -> Dict[Text, Iterable[Artifact]]: + result = {} + for key, source_channel in input_dict.items(): + result[key] = self._get_artifacts_from_channel( + metadata=metadata_handler, + channel=source_channel, + sort_fn=_latest_first, + maximum_count=self._configuration.window) + return result +``` + +Next, create a new ResolverNode instance in the pipeline definition. An instance +of `LatestRollingWindowResolver` is passed in to serve as the resolution logic +unit. Since `transform` and `trainer` all use the output of the same +ResolverNode instance, they will share the same artifact resolution results. + +```python +def create_pipeline(): + ... + + example_gen = CsvExampleGen(input_base=...) + + resolver_node = ResolverNode( + examples=example_gen.outputs['examples'], + resolver=LatestRollingWindowResolver(generate_config(window=5))) + + transform = Transform( + examples=resolver_node.outputs['examples'], + ...) + + trainer = Trainer( + examples=resolver_node.outputs['examples'], + transform_output=transform.outputs['transform_output'], + ...) + ... + +``` + +## Future work + +With the ability to resolve artifacts from past runs, continuous training can be +enabled to take us one step further in ML production automation. From 50bba74909a269ccdb731a15a2acd27a6388b36d Mon Sep 17 00:00:00 2001 From: Kangyi Zhang Date: Tue, 8 Oct 2019 13:42:57 -0700 Subject: [PATCH 044/365] RFC: Native SavedModel execution in Node.js (#139) * add nodejs savedmodel md * fix format * update goals * update * save * fix nit * accepted --- rfcs/20190821-nodejs-saved-model.md | 359 ++++++++++++++++++++++++++++ 1 file changed, 359 insertions(+) create mode 100644 rfcs/20190821-nodejs-saved-model.md diff --git a/rfcs/20190821-nodejs-saved-model.md b/rfcs/20190821-nodejs-saved-model.md new file mode 100644 index 000000000..a815da923 --- /dev/null +++ b/rfcs/20190821-nodejs-saved-model.md @@ -0,0 +1,359 @@ +# Native SavedModel execution in Node.js + +| Status | Accepted | +:-------------- |:---------------------------------------------------- | +| **Author(s)** | kangyizhang@google.com | +| **Sponsor** | smilkov@google.com, nsthorat@google.com, piyu@google.com | +| **Updated** | 2019-09-27 | + +## Objective + +This project is aiming to enable native TF SavedModel execution for inference in Node.js environment without conversion. + +### Goals + +* Implement an API to load and execute TF SavedModel Signature for inference only in Node.js. +* This API should works for SavedModel exported in both TF 1.x and 2.0 +* Wrap the loaded SavedModel as a new subtype implementing [tf.InferenceModel](https://github.com/tensorflow/tfjs/blob/81225adc2fcf6fcf633b4119e4b89a3bf55be824/tfjs-core/src/model_types.ts#L36) +* Enable the ability to inspect the SavedModel metaGraph and signature in Node.js with protocol buffers in JavaScript. + +### Non-goals + +* Enable execution tf.function in Node.js +* Enable support for training a SavedModel +* Enable support for exporting a SavedModel + +## **Motivation** + +TensorFlow.js brings TensorFlow into the JavaScript world. It provides APIs to develop and train models, and also tools to convert models trained in other languages. + +Currently users could use [tfjs-converter](https://github.com/tensorflow/tfjs-converter) to convert TensorFlow SavedModel and TensorFlow Hub module to js friendly format and run inference through TensorFlow.js through the following steps: + + +1. Install tf-nightly-2.0-preview and tensorflowjs pip packages +2. Run the converter script to convert the model to js friendly format + +``` +tensorflowjs_converter \ + --input_format=tf_saved_model \ + --output_format=tfjs_graph_model \ + --signature_name=serving_default \ + --saved_model_tags=serve \ + /mobilenet/saved_model \ + /mobilenet/web_model +``` + +3. Load and run the converted model in javascript through [tf.loadGraphModel()](https://js.tensorflow.org/api/latest/#loadGraphModel) or [tf.loadLayersModel()](https://js.tensorflow.org/api/latest/#loadLayersModel) API based on the model type + +``` +const model = await tf.loadGraphModel(MODEL_URL); +const cat = document.getElementById('cat'); +model.predict(tf.browser.fromPixels(cat)); +``` + +The above steps require developers to install Python TensorFlow package and some parameters/configurations, which we have noticed users are struggling with. + +The tfjs-node repository provides native TensorFlow execution in Node.js environment through TensorFlow C library under the hood. It provides the same API (190+ ops) as [TensorFlow.js](https://js.tensorflow.org/api/latest/), which is a subset of the TensorFlow ops (900+). + +Here there is an opportunity to support native SavedModel execution in Node.js with TensorFlow C library so that 1) tfjs-node can support models which contain ops that are not supported in TensorFlow.js yet, and 2) users do not need to go through the model conversion process. + +This project uses the non-eager APIs in TensorFlow C library to enable loading and executing TF SavedModel for inference in Node.js environment without conversion. + + +## **Design Proposal** + + +### User-facing code + +This project will provide a new API `tf.node.loadSavedModel` to load a Signature in SavedModel as a new class `TFSavedModel` in Node.js, which can be used to execute the SavedModel Signature for inference. + +The loadSavedModel API takes a `path`, which is the absolute path to the SavedModel directory, a `tag_set` to identify which MetaGraph to load, and `signature` name as params. It returns a `TFSavedModel` object, implementing [tf.InferenceModel](https://github.com/tensorflow/tfjs/blob/81225adc2fcf6fcf633b4119e4b89a3bf55be824/tfjs-core/src/model_types.ts#L36) class. + + +``` +const savedModel = tf.node.loadSavedModel(__dirname + 'saved_model_dir', 'tag_set', 'signature_def_name'); +``` + + +The returned TFSavedModel object has a `predict()` function to execute the SavedModel signature for inference. The param of this predict() function would be a single tensor if there is single input for the model or an array of tensors if the model has multiple inputs. + +The TFSaveModel object also has an `execute()` function to execute the inference for the input tensors and return activation values for specified output node names. + + +``` +const input = tensor1d([123], 'int32'); +// Execute the loaded signatureDef of the SavedModel +const output = savedModel.predict([input_tensors]); +``` + + +The TFSavedModel object also has a `delete()` function to free the SavedModel related memory. + + +``` +savedModel.delete() +// The following line will throw an exception saying the SavedModel has been deleted. +const output = savedModel.predict([input_tensors]); +``` + + + +### Internal Change + + +#### Load SavedModel + +A [SavedModel](https://www.tensorflow.org/beta/guide/saved_model) is a directory containing serialized signatures and the states needed to run them. + + +``` +assets saved_model.pb variables +``` + + +The directory has a saved_model.pb (or saved_model.pbtxt) file containing a set of named signatures, each identifying a function. + +SavedModels may contain multiple sets of signatures (multiple MetaGraphs, identified with the tag-sets). When serving a model for inference, usually only one signature is used. + + +#### Designate the MetaGraph and Signature to execute + +Though the C API supports loading multiple MetaGraph, and one loaded MetaGraph may have several SignatureDefs, this project only supports loading one MetaGraph and executing one SignatureDef through the JavaScript API, so that it’s clear to users that the loaded SavedModel is only using the specified Signature for inference. This also aligns with the current TensorFlow.js [models API](https://js.tensorflow.org/api/latest/#class:GraphModel), and the current workflow with tfjs-converter. + +Users are able to load multiple signature from the same SavedModel by calling JavaScript API multiple times. The detailed discussion is provided later in SavedModel management section. + +#### Deserialize saved_model.pb with protobuf in javascript to get MetaGraph and Signature info + +For JavaScript developers, who do not have a lot of machine learning experience, their use case might be that they find an open source model and they want to use it in their Node.js project. The MetaGraph and Signatures are unclear to them and they don’t know how to get the model metadata in saved_model.pb file. + +While TensorFlow provide the [SavedModel CLI tool](https://www.tensorflow.org/beta/guide/saved_model#details_of_the_savedmodel_command_line_interface) to inspect and execute a SavedModel, this project will make it convenient for JS developers to do all the work in JavaScript. + +A new API will be added in TensorFlow.js node environment to allow users to inspect SavedModel, similar to [saved_model_cli show](https://www.tensorflow.org/beta/guide/saved_model#show_command), so that users can know what value to provide as MetaGraph and Signature. + + +``` +const modelInfo = tf.node.inspectSavedModel(__dirname + 'saved_model_dir'); + +console.log(modelInfo); +/* The modelInfo should include the following information: +{ + tags: ['serve'], + signatureDef: { + serving_default: { + 'inputs': { + x: { + 'name': 'serving_default_x:0', + 'dtype': ..., + 'tensorShape': ... + } + }, + 'outputs': { + output_0: { + 'name': 'StatefulPartitionedCall:0', + 'dtype': ..., + 'tensorShape': ... + } + }, + 'methodName': 'tensorflow/serving/predict' + } + } +} +*/ +``` + + +Google’s Protocol Buffers is also available in javascript. It provides a [Protocol compiler](https://github.com/protocolbuffers/protobuf/releases) to translate the xxx.proto file to js file, and a JavaScript Protocol Buffers runtime library [google-protobuf](https://www.npmjs.com/package/google-protobuf) to construct and parse the messages. + +To use Protocol Buffers in javascript, first the saved_model.proto file need to be translated: + + +``` +$ protoc --js_out=import_style=commonjs,binary:. saved_model.proto +``` + + +The above command will translate the [saved_model.proto](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/protobuf/saved_model.proto) file to saved_model_pb.js file. Then in js code, the saved_model.pb file can be parsed as SavedModel object through the translated js file. + + +``` +var messages = require('./tensorflow/core/protobuf/saved_model_pb'); +var fs = require('fs'); + +var SavedModel = new messages.SavedModel(); +const mobileModel = fs.readFileSync('./saved_model.pb'); +const array = new Uint8Array(mobileModel); + +const model = messages.SavedModel.deserializeBinary(array); + +console.log(model.getSavedModelSchemaVersion()); +console.log(model.getMetaGraphsList()); +``` + + +With protobuf in JavaScript, the MetaGraphDef tag-sets and SignatureDef keys in SavedModel are available to be retrieved in JavaScript. + + +#### Use TF C API TF_LoadSessionFromSavedModel to load SavedModel + +The TensorFlow C library has a [TF_LoadSessionFromSavedModel](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/c/c_api.h#L1211) API, which creates a new TF_Session and then initializes states. This API supports both TF 1.x and TF 2.0 models. So with this API, the same code in tfjs-node works for both TF 1.x and 2.0. The `export_dir` and `tag` parameters are the `path` and `tag_set` value provided by users in javascript API. + + +``` +TF_Session *session = TF_LoadSessionFromSavedModel( + session_options, run_options, export_dir, tags, tags_leng, graph, + metagraph, tf_status.status); +``` + + +The returned TF_Session can be run with [TF_SessionRun](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/c/c_api.h#L1254) API to execute the graph associated with the session. + + +### Do inference through running the loaded Session + +TF C API provides a [TF_SessionRun](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/c/c_api.h#L1254) function to execute the graph associated with the input session, which is loaded from the SavedModel through TF_LoadSessionFromSavedModel, as discussed above. + + +``` +TF_CAPI_EXPORT extern void TF_SessionRun( + TF_Session* session, + // RunOptions, may be NULL + const TF_Buffer* run_options, + // Input tensors + const TF_Output* inputs, TF_Tensor* const* input_values, int ninputs, + // Output tensors + const TF_Output* outputs, TF_Tensor** output_values, int noutputs, + // Target operations + const TF_Operation* const* target_opers, int ntargets, + // RunMetadata, may be NULL + TF_Buffer* run_metadata, + // Output status + TF_Status*); +``` + + +If the session is successfully executed, the tensors corresponding to output ops are placed in output_values, which are TF_Tensor type. They will be converted to TFE_TensorHandle and registered in tfjs-node backend, which is the same as how tensor is managed currently in tfjs-node addon. + +When running the session, input and output op names are the input/output names of the Signature provided when loading the SavedModel. + + +### New functions in node C++ addon (TFJSBackend) + +Several new functions and members are added into [TFJSBackend](https://github.com/tensorflow/tfjs/blob/master/tfjs-node/binding/tfjs_backend.h#L29) to support SavedModel execution in node. + + +#### Tf_savedmodel_map and InsertSavedModel() + +A map is added in the TFJSBackend to manage the loaded session from SavedModel. Similar to tfe_handle_map, the key of this map is a number of savedmodel_id. The value of this map is a pair of the loaded TF_Session and TF_Graph from SavedModel. + + +``` +std::map> tf_savedmodel_map_; +``` + + +#### LoadSavedModel + +LoadSavedModel function is added to load a SavedModel from a path. It will get TF_Session from the SavedModel and insert the session into tf_savedmodel_map. + + +``` + // load a SavedModel from a path: + // - export_dir (string) + napi_value LoadSavedModel(napi_env env, napi_value export_dir, napi_value tag_set); +``` + + +#### RunSavedModel + +The backend will need savedmodel id, input tensor ids, and input/output names to execute the TF_Session. + + +``` + // Execute a session with the provided input/output name: + // - savedmodel_id (number) + // - input_tensor_ids (array of input tensor IDs) + // - input_op_names (string) + // - output_op_names (string) + napi_value RunSavedModel(napi_env env, napi_value savedmodel_id, + napi_value input_tensor_ids, napi_value input_op_names, + napi_value output_op_names); +``` + + +#### DeleteSavedModel + +When user does not need the SaveModel, DeleteSaveModel needs to be called to delete the corresponding TF_Session to release the memory. + + +``` + // Delete the corresponding TF_Session and TF_Graph + // - savedmodel_id (number) + void DeleteSavedModel(napi_env env, napi_value savedmodel_id); +``` + + + +#### TFJSBinding API + +The [TFJSBinding](https://github.com/tensorflow/tfjs/blob/master/tfjs-node/src/tfjs_binding.ts#L32) interface will have corresponding functions to load, run and delete the SavedModel in JavaScript. + + + +### Manage SavedModel in JavaScript + +To manage and execute loaded sesion from SavedModel, a new TFSavedModel javascript class is added [nodejs_kernel_backend](https://github.com/tensorflow/tfjs/blob/master/tfjs-node/src/nodejs_kernel_backend.ts#L38). + + +``` +class TFSavedModel implement InferenceModel { + private readonly id: number; + private deleted: boolean; + private readonly inputOpName: string[]; + private readonly outputOpName: string[]; + + constructor(id: number, backend: NodeJSKernelBackend) {} + + predict(inputs: Tensor|Tensor[]|NamedTensorMap, config: ModelPredictConfig): + Tensor|Tensor[]|NamedTensorMap; + + execute(inputs: Tensor|Tensor[]|NamedTensorMap, outputs: string|string[]): + Tensor|Tensor[]; + + + delete() {} +} +``` + + +The instance of TFSavedModel could only be created in nodejs_kernel_backend object when calling TFJSBinding’s LoadSavedModel function. And the id value is the number returned from the TFJSBachend. + +Following is how user will use SavedModel in tfjs-node: + + +``` +const model = tf.node.loadSavedModel(__dirname + 'saved_model', 'serve', 'serving_default'); + +const input = tensor1d([123], 'int32'); + +const output = model.predict([input_tensor]); + +const output = savedModel.execute({'input_op_names':input_tensors}, ['output_op_names']); + +model.delete(); +``` + + + +#### Load multiple signatures from the same SavedModel + +If users want to use multiple signatures from the same SavedModel, they can call tf.node.loadSavedModel() API several times to get multiple instances. The node backend will keep track of SavedModel paths that have been loaded. When doing a new loading, if the path to SavedModel have been loaded, the node backend will use the existing Session in addon module and will not load new thing through TF C API again. + + +# Test Plan + +Several different types of SavedModel will be added as test artifacts. And tests will run against these real SavedModel. These tests will also cover memory leaking checks to make sure corresponding memories are released when a SavedModel is deleted in Node.js runtime. + + +# Benchmarking + +A job to benchmark executing SavedModel (probably mobilenet) in tfjs-node vs tf python will be added to the current [benchmark infrastructure](https://github.com/tensorflow/tfjs/tree/master/tfjs/integration_tests#running-tfjs-node-benchmarks). From b2a4074701e6f0ed1e3d15b52b5ee3f722783ed2 Mon Sep 17 00:00:00 2001 From: hongye-sun <43763191+hongye-sun@users.noreply.github.com> Date: Thu, 10 Oct 2019 21:46:06 -0700 Subject: [PATCH 045/365] Apply suggestions from code review Co-Authored-By: Adam Wood --- ...90829-tfx-container-component-execution.md | 106 +++++++++--------- 1 file changed, 52 insertions(+), 54 deletions(-) diff --git a/rfcs/20190829-tfx-container-component-execution.md b/rfcs/20190829-tfx-container-component-execution.md index 6a4327f02..fc4c8ea30 100644 --- a/rfcs/20190829-tfx-container-component-execution.md +++ b/rfcs/20190829-tfx-container-component-execution.md @@ -11,7 +11,7 @@ Status | Proposed This RFC proposes an orchestrator agnostic way to reliably execute a user’s container in the TFX pipeline. The proposal can support: -* Running an arbitrary container in either local docker environment or remote +* Running an arbitrary container in either a local Docker environment or a remote k8s cluster. * Passing data into the container * Passing output data from the container @@ -25,16 +25,16 @@ Currently, in a TFX pipeline, there is no way to execute a generic container as one of its steps. Without this feature, users cannot bring their own containers into the pipeline. This blocks following use cases: -* User already had a docker image and want to run the image as one of the +* User already has a docker image and wants to run the image as one of the steps in a TFX pipeline. -* User wants to use non-python code like R as one of the steps in a TFX +* User wants to use non-Python code (R, for example) as one of the steps in a TFX pipeline. -* User wants to have an isolated python environment for their component code. +* User wants to have an isolated Python environment for their component code. This RFC is a follow-up design for [Container-based Component RFC](https://github.com/tensorflow/community/pull/146). This design defines how to execute the container spec as part of a TFX pipeline. -The execution may occurs in local docker or in a remote kubernetes cluster. +The execution may occurs in local Docker container or in a remote Kubernetes cluster. ### Existing solutions @@ -42,7 +42,7 @@ The execution may occurs in local docker or in a remote kubernetes cluster. Today, KFP’s ContainerOp leverages [Argo container template API](https://github.com/argoproj/argo/blob/master/pkg/apis/workflow/v1alpha1/workflow_types.go) -to launch user’s container in a k8s pod. Argo as the orchestrator controls when +to launch user’s container in a k8s pod. Argo, as the orchestrator, controls when to launch the POD and it uses a sidecar container to report output files back and wait for user’s container to complete. We are not proposing to use Argo API because of the following reasons: @@ -50,14 +50,14 @@ because of the following reasons: * Argo’s API is orchestrator-specific and cannot be ported to Airflow or local runners. * Argo’s API doesn’t provide an extensible way to run custom code before and - after POD API which is critical to support metadata tracking and caching + after POD API, which is critical to support metadata tracking and caching features. * Argo doesn’t provide an easy way to recover from user’s transient errors, which is critical in production workload. #### Airflow k8s pod operator -Airflow supports to launch a k8s pod by an +Airflow supports launching a k8s pod by an [operator](https://github.com/apache/airflow/blob/master/airflow/contrib/operators/kubernetes_pod_operator.py). This approach is closer to what we are proposing in the document. However, we cannot directly use the operator because: @@ -68,8 +68,8 @@ cannot directly use the operator because: full pod spec to the user. * Airflow operator doesn’t provide a reliable way to retry user’s container and recover from transient errors. -* Airflow does not support initializing operator inside another operator. - Going back to use multiple Airflow operators for a component is a regression +* Airflow does not support initializing an operator inside another operator. + Going back to using multiple Airflow operators for a component is a regression now that we have `BaseComponentLauncher` ready. ## Proposed Design @@ -83,16 +83,16 @@ We propose to solve the above problems by the following design. * Use platform config to specify platform specific settings like k8s pod config. -The proposed solution has following parts: +The proposed solution has the following parts: -* Extensible `ExecutorSpec` concept which can support container as an +* Extensible `ExecutorSpec` concept which can support a container as an executor. * Extensible `BaseComponentLauncher` concept to support pluggable component - launchers in tfx runner. + launchers in a TFX runner. * `DockerComponentLauncher` which launches `ExecutorContainerSpec` in - docker environment. + a Docker environment. * `KubernetesPodComponentLauncher` which launches `ExecutorContainerSpec` - in k8s environment. + in a k8s environment. * Extensible `PlatformConfig` framework. * `KubernetesPodPlatformConfig` to support k8s pod spec as a config. * `DockerPlatformConfig` to support docker run configs. @@ -113,11 +113,11 @@ Class diagram that allows container execution ### Python DSL experience -In order to use container base component in TFX DSL, user needs to do following +In order to use container base component in TFX DSL, user needs follow these steps. Step 1 and Step 2 follow the DSL extension proposed by the other RFC (https://github.com/tensorflow/community/pull/146). -#### Step 1: Defines container based component by `ExecutorContainerSpec` +#### Step 1: Define the container based component by `ExecutorContainerSpec` ```python class MyContainerBasedExampleGen(BaseComponent): @@ -144,7 +144,7 @@ class MyContainerBasedExampleGen(BaseComponent): ) ``` -#### Step 2: Creates pipeline from container based component +#### Step 2: Create pipeline from container based component ```python def create_pipeline(): @@ -161,7 +161,7 @@ def create_pipeline():   ) ``` -#### Step 3(a): Sets docker config via runner’s config +#### Step 3(a): Set docker config via runner’s config ```python _ = BeamRunner(platform_configs={ @@ -169,7 +169,7 @@ _ = BeamRunner(platform_configs={ }).run(create_pipeline()) ``` -#### Step 3(b): Sets k8s platform config via runner’s config +#### Step 3(b): Set k8s platform config via runner’s config ```python _ = KubeflowDagRunner(platform_configs={ @@ -181,8 +181,8 @@ _ = KubeflowDagRunner(platform_configs={ ### Component launcher -A component launcher launches a component by invoking driver, executor and -publisher. It understands how to launch a component executor from an +A component launcher launches a component by invoking a driver, an executor and +a publisher. It understands how to launch a component executor from an `ExecutorSpec`. The `BaseComponentLauncher` is an abstract base class with two abstract methods: @@ -195,14 +195,13 @@ abstract methods: Subclasses of the base component launcher can support launching executors in different target platforms. For example: -* `InProcessComponentLauncher` can launch an executor class in the same python +* `InProcessComponentLauncher` can launch an executor class in the same Python process. -* `DockerComponentLauncher` can launch a container executor in docker +* `DockerComponentLauncher` can launch a container executor in a Docker environment. -* `KubernetesPodComponentLauncher` can launch a container executor in k8s +* `KubernetesPodComponentLauncher` can launch a container executor in a k8s environment. * A Dataflow launcher can launch a beam executor in Dataflow service. -* Etc. Pseudo implementation: @@ -282,7 +281,7 @@ class KubernetesPodComponentLauncher(BaseComponentLauncher): ### Platform config Platform config carries platform specific configs. Usually, one platform config -type maps to one type of component launcher type. For example, +type maps to one component launcher type. For example, `DockerPlatformConfig` can only be used by `DockerComponentLauncher` and `KubernetesPodPlatformConfig` can only be used by `KubernetesPodComponentLauncher`. @@ -388,7 +387,7 @@ spec: ### TFX runner -A `TFXRunner` compiles a logical pipeline into underlying orchestrator’s DSL. In +A `TFXRunner` compiles a logical pipeline into the underlying orchestrator’s DSL. In this proposal, the base runner should accept launchers and `platform_configs` and provide a default strategy to choose launcher for each component. @@ -467,23 +466,22 @@ definitions: type: string ``` -The output.json file is optional, but if user’s container writes to the file. It -overrides the default handling of k8s pod launcher. Here are the explanation of -the output fields: +The output.json file is optional, but if the user’s container writes to the file. It +overrides the default handling of the k8s pod launcher. The output fields are: -* error_status: it tells the executor whether it should retry or fail. -* outputs and exec_properties: they will be used to override the execution and +* error_status: tells the executor whether it should retry or fail +* outputs and exec_properties: used to override the execution and output artifact metadata in MLMD. -The output interfaces relies on `BaseComponentLauncher` to update states back to +The output interfaces rely on `BaseComponentLauncher` to update states back to MLMD from executor. ### Auth context resolution -K8s pod launcher internally uses k8s python client. The auth context resolution +The k8s pod launcher internally uses the k8s Python client. The auth context resolution logic is as follows: -1. If the current env is in a cluster, uses `load_incluster_config` to load k8s +1. If the current env is in a cluster, use `load_incluster_config` to load k8s context. 1. If not, use default k8s active context to connect to remote cluster. @@ -493,21 +491,21 @@ In this design section, we focused more on the launcher resiliency under `KubeflowDAGRunner`. In `AirflowDAGRunner`, the launcher code is running in the same process of Airflow orchestrator which we rely on Airflow to ensure its resiliency. `BeamDAGRunner`, however, is considered mainly for local testing -purpose and we won't add support for it to be resiliency. +purpose and we won't add support for it to be resilient. In `KubeflowDAGRunner`, a pipeline step will create two pods in order to execute user’s container: -* A launcher pod which contains driver, k8s pod launcher and publisher code. +* A launcher pod which contains the driver, k8s pod launcher, and publisher code. * A user pod with user’s container. -Pod in k8s is not resilient by itself. We will use Argo’s retry feature to make -launcher pod to be partially resilient. The details are as follows: +A pod in k8s is not resilient by itself. We will use Argo’s retry feature to make +the launcher pod partially resilient. The details are as follows: -* Each argo launcher step will be configured with a default retry count. -* Argo will retry the step in case of failure no matter what type of error. -* The launcher container will create a tmp workdir from `pipeline_root`. -* It will keep intermediate results like created pod ID in the tmp workdir. +* Each Argo launcher step will be configured with a default retry count. +* Argo will retry the step in case of failure, no matter what type of error. +* The launcher container will create a tmp workdir in `pipeline_root`. +* It will keep intermediate results (for example, the ID of the created pod) in the tmp workdir. * The k8s pod launcher will be implemented in a way that it will resume the operation based on the intermediate results in the tmp workdir. * The launcher will also record a permanent failure data in the tmp workdir so @@ -516,7 +514,7 @@ launcher pod to be partially resilient. The details are as follows: ### Default retry strategy K8s pod launcher supports exponential backoff retry. This strategy applies to -all runners which can support k8s pod launcher. Docker launcher are not in the +all runners which can support k8s pod launcher. Docker launchers are not in the scope of the design as it is mainly for local development use case. The retry only happens if the error is retriable. An error is retriable only @@ -528,28 +526,28 @@ when: ### Log streaming -Container launcher streams log from user’s docker container or k8s pod through -API. It will start a thread which constantly pulls new logs and output it to +The container launcher streams the log from user’s docker container or k8s pod through the +API. It will start a thread which constantly pulls new logs and outputs them to local stdout. ### Cancellation -The container launcher handles cancellation request varies by orchestrators: +How the container launcher handles cancellation request varies by orchestrators: * Airflow natively supports cancellation propagation to operator. We will need to pass the cancellation request from operator into executor. * Argo doesn’t natively support cancellation propagation. Currently KFP relies - on Argo’s pod annotation to workaround the limitation and have been proven - to be working. We will use the same way to propagate cancellation request to + on Argo’s pod annotation to workaround the limitation and has been proven + to work. We will use the same process to propagate cancellation requests to user’s container. -In order to allow user to specify the cancellation command line entrypoint, k8s +In order to allow the user to specify the cancellation command line entrypoint, the k8s pod launcher will support an optional parameter called `cancellation_command` from `ExecutorContainerSpec`. ## Open discussions -* In argo runner, each step requires 2 pods with total 3 containers (launcher +* In the Argo runner, each step requires 2 pods with total 3 containers (launcher main container + launcher argo wait container + user main container) to run. - Although all launcher containers requires minimum k8s resources, it still - can be a concern on resource usage. + Although each launcher container requires minimal k8s resources, + resource usage is still a concern. From 66efb431b236b44b8c276b75e0d619e52e3e3296 Mon Sep 17 00:00:00 2001 From: muchida Date: Fri, 11 Oct 2019 08:57:56 -0700 Subject: [PATCH 046/365] address public design review feedback - add clarification on API stability (experimental) - add clasirifaction on artifact payload interoperability --- ...4-tfx-generic-container-based-component.md | 33 ++++++++++++++++--- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/rfcs/20190904-tfx-generic-container-based-component.md b/rfcs/20190904-tfx-generic-container-based-component.md index d1f370353..f51d671c8 100644 --- a/rfcs/20190904-tfx-generic-container-based-component.md +++ b/rfcs/20190904-tfx-generic-container-based-component.md @@ -764,8 +764,10 @@ class MyContainerBasedExampleGen(BaseComponent): ### Pipeline Compilation and Release -The proposed `ExecutorContainerSpec` and related modification will reside in the -TFX repository. +The proposed `ExecutorContainerSpec` and any related extension of DSL APIs +will reside in the TFX repository. Pending code completion, we may choose +to place some or all of the new APIs under `experimental` namespace until +we admit it to core APIs. If run with `KubeflowDagRunner`, it will be executed by `run()` method to compile into Argo pipeline spec. As a result, there is no need to have any @@ -853,11 +855,32 @@ repository, custom built container-based component would not be able to implement the interaction with other components via such artifact types, in turn the custom container-based component would not be able to make use of the interoperability and shareability with other components in a pipeline. -Furthermore, the payload of artifacts must be compatible with the way metadata -(via properties of artifacts) defines, which allows components to properly -consume artifacts. We anticipate that [standard_artifacts.py](https://github.com/tensorflow/tfx/blob/0.14.0/tfx/types/standard_artifacts.py) will serve as the catalog of known artifact types. We also anticipate that this catalog might evolve with more properties of a type, or more types themselves. + +### Interoperability of Artifact Payload + +In order for a custom component to be interoperable with other parts of the +TFX system, the payload of artifacts must be compatible with the way metadata +(via properties of artifacts) defines, which allows downstream components to +properly consume artifacts. In fact, in TFX 0.14.0, there is implicit assumption +on payload of artifacts. For example, payload of *Model* artifact is always +TensorFlow SavedModel with a certain signatures that downstream component, +such as Pusher (and the serving system it pushed to), can consume. Likewise, +payload of *Example* artifact is GZipped tensorflow.Example TFRecord. + +Any custom componenent, regardless of the proposed container-based component +or [Python class](https://www.tensorflow.org/tfx/guide/custom_component), +implementation, mismatch in assumed payload would cause runtime error. +This is analogous to the fact that Pandas [`DataFrame.to_csv()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html) +and subsequent [`read_csv()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html) must implement the same format options +(such as delimiter, quote, header). + +We believe that best-possible way handle such ambiguity is to enforce project-internal consistency within user projects by convention on artifact +properties. This approach will retain capability to implement a logic in +custom components to enforce payload compatibility between components at +DAG complination time. Once this has proven sufficiently generally useful, +some of such convention would be admitted to the central artifact type/property repository as mentioned in the previous section, and compile time payload compatibility check logic would be admitted to the TFX's core library. \ No newline at end of file From 1c38300220c1f7c0e5c90ce00cf66e14ff7e8d98 Mon Sep 17 00:00:00 2001 From: muchida Date: Fri, 11 Oct 2019 09:13:49 -0700 Subject: [PATCH 047/365] Revert "address public design review feedback" This reverts commit 66efb431b236b44b8c276b75e0d619e52e3e3296. --- ...4-tfx-generic-container-based-component.md | 33 +++---------------- 1 file changed, 5 insertions(+), 28 deletions(-) diff --git a/rfcs/20190904-tfx-generic-container-based-component.md b/rfcs/20190904-tfx-generic-container-based-component.md index f51d671c8..d1f370353 100644 --- a/rfcs/20190904-tfx-generic-container-based-component.md +++ b/rfcs/20190904-tfx-generic-container-based-component.md @@ -764,10 +764,8 @@ class MyContainerBasedExampleGen(BaseComponent): ### Pipeline Compilation and Release -The proposed `ExecutorContainerSpec` and any related extension of DSL APIs -will reside in the TFX repository. Pending code completion, we may choose -to place some or all of the new APIs under `experimental` namespace until -we admit it to core APIs. +The proposed `ExecutorContainerSpec` and related modification will reside in the +TFX repository. If run with `KubeflowDagRunner`, it will be executed by `run()` method to compile into Argo pipeline spec. As a result, there is no need to have any @@ -855,32 +853,11 @@ repository, custom built container-based component would not be able to implement the interaction with other components via such artifact types, in turn the custom container-based component would not be able to make use of the interoperability and shareability with other components in a pipeline. +Furthermore, the payload of artifacts must be compatible with the way metadata +(via properties of artifacts) defines, which allows components to properly +consume artifacts. We anticipate that [standard_artifacts.py](https://github.com/tensorflow/tfx/blob/0.14.0/tfx/types/standard_artifacts.py) will serve as the catalog of known artifact types. We also anticipate that this catalog might evolve with more properties of a type, or more types themselves. - -### Interoperability of Artifact Payload - -In order for a custom component to be interoperable with other parts of the -TFX system, the payload of artifacts must be compatible with the way metadata -(via properties of artifacts) defines, which allows downstream components to -properly consume artifacts. In fact, in TFX 0.14.0, there is implicit assumption -on payload of artifacts. For example, payload of *Model* artifact is always -TensorFlow SavedModel with a certain signatures that downstream component, -such as Pusher (and the serving system it pushed to), can consume. Likewise, -payload of *Example* artifact is GZipped tensorflow.Example TFRecord. - -Any custom componenent, regardless of the proposed container-based component -or [Python class](https://www.tensorflow.org/tfx/guide/custom_component), -implementation, mismatch in assumed payload would cause runtime error. -This is analogous to the fact that Pandas [`DataFrame.to_csv()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html) -and subsequent [`read_csv()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html) must implement the same format options -(such as delimiter, quote, header). - -We believe that best-possible way handle such ambiguity is to enforce project-internal consistency within user projects by convention on artifact -properties. This approach will retain capability to implement a logic in -custom components to enforce payload compatibility between components at -DAG complination time. Once this has proven sufficiently generally useful, -some of such convention would be admitted to the central artifact type/property repository as mentioned in the previous section, and compile time payload compatibility check logic would be admitted to the TFX's core library. \ No newline at end of file From c1aeeca08a8d730a1ebca6dfb53bb8929657fe9c Mon Sep 17 00:00:00 2001 From: Makoto Uchida Date: Fri, 11 Oct 2019 09:19:52 -0700 Subject: [PATCH 048/365] address public design review feedback - add clarification on API stability (experimental) - add clarification on artifact payload interoperability --- ...4-tfx-generic-container-based-component.md | 36 ++++++++++++++++--- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/rfcs/20190904-tfx-generic-container-based-component.md b/rfcs/20190904-tfx-generic-container-based-component.md index d1f370353..dd6b860b1 100644 --- a/rfcs/20190904-tfx-generic-container-based-component.md +++ b/rfcs/20190904-tfx-generic-container-based-component.md @@ -764,8 +764,10 @@ class MyContainerBasedExampleGen(BaseComponent): ### Pipeline Compilation and Release -The proposed `ExecutorContainerSpec` and related modification will reside in the -TFX repository. +The proposed `ExecutorContainerSpec` and any related extension of DSL APIs +will reside in the TFX repository. Pending code completion, we may choose +to place some or all of the new APIs under `experimental` namespace until +we admit it to core APIs. If run with `KubeflowDagRunner`, it will be executed by `run()` method to compile into Argo pipeline spec. As a result, there is no need to have any @@ -853,11 +855,35 @@ repository, custom built container-based component would not be able to implement the interaction with other components via such artifact types, in turn the custom container-based component would not be able to make use of the interoperability and shareability with other components in a pipeline. -Furthermore, the payload of artifacts must be compatible with the way metadata -(via properties of artifacts) defines, which allows components to properly -consume artifacts. We anticipate that [standard_artifacts.py](https://github.com/tensorflow/tfx/blob/0.14.0/tfx/types/standard_artifacts.py) will serve as the catalog of known artifact types. We also anticipate that this catalog might evolve with more properties of a type, or more types themselves. + +### Interoperability of Artifact Payload + +In order for a custom component to be interoperable with other parts of the +TFX system, the payload of artifacts must be compatible with the way metadata +(via properties of artifacts) defines, which allows downstream components to +properly consume artifacts. In fact, in TFX 0.14.0, there is implicit assumption +on payload of artifacts. For example, payload of *Model* artifact is always +TensorFlow SavedModel with a certain signatures that downstream component, +such as Pusher (and the serving system it pushed to), can consume. Likewise, +payload of *Example* artifact is GZipped tensorflow.Example TFRecord. + +Any custom componenent, regardless of the proposed container-based component +or [Python class](https://www.tensorflow.org/tfx/guide/custom_component), +implementation, mismatch in assumed payload would cause runtime error. +This is analogous to the fact that Pandas [`DataFrame.to_csv()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html) +and subsequent [`read_csv()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html) must implement the same format options +(such as delimiter, quote, header). + +We believe that best-possible way handle such ambiguity is to enforce +project-internal consistency within user projects by convention on artifact +properties. This approach will retain capability to implement a logic in +custom components to enforce payload compatibility between components at +DAG complination time. Once this has proven sufficiently generally useful, +some of such convention would be admitted to the central artifact type/property +repository as mentioned in the previous section, and compile time payload +compatibility check logic would be admitted to the TFX's core library. From 0a3b4e35b558c3b71fd6898712e38bb152035370 Mon Sep 17 00:00:00 2001 From: pkanwar23 <40809717+pkanwar23@users.noreply.github.com> Date: Fri, 11 Oct 2019 10:13:52 -0700 Subject: [PATCH 049/365] Update CHARTER.md (#150) --- sigs/mlir/CHARTER.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sigs/mlir/CHARTER.md b/sigs/mlir/CHARTER.md index a8ecb2927..38c82bfad 100644 --- a/sigs/mlir/CHARTER.md +++ b/sigs/mlir/CHARTER.md @@ -1,4 +1,4 @@ -# Proposed name: SIG MLIR +# MLIR ## Objective From 1fbcc9afe8e11bef6f5a70fd0d9d1b1dc3c755cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Huan=20=28=E6=9D=8E=E5=8D=93=E6=A1=93=29?= Date: Sat, 12 Oct 2019 01:14:31 +0800 Subject: [PATCH 050/365] Fix 404 (#142) --- sigs/testing/faq.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sigs/testing/faq.md b/sigs/testing/faq.md index 04b9bef88..0ab372a68 100644 --- a/sigs/testing/faq.md +++ b/sigs/testing/faq.md @@ -103,7 +103,7 @@ Yes. Use tf.disable_eager_execution() or tf.compat.v1.disable_eager_execution(). **Where can I find a style guide for TensorFlow 2.0?** -There are multiple changes in TensorFlow 2.0 to help support end-user productivity. For a style guide including best practices for API clean-up, @tf.function, see [Effective TF 2.0 Style Guide](https://github.com/tensorflow/docs/blob/master/site/en/r2/guide/effective_tf2.md) and this accompanying [blog post](https://medium.com/tensorflow/effective-tensorflow-2-0-best-practices-and-whats-changed-a0ca48767aff). +There are multiple changes in TensorFlow 2.0 to help support end-user productivity. For a style guide including best practices for API clean-up, @tf.function, see [Effective TF 2.0 Style Guide](https://www.tensorflow.org/beta/guide/effective_tf2) and this accompanying [blog post](https://medium.com/tensorflow/effective-tensorflow-2-0-best-practices-and-whats-changed-a0ca48767aff). **Where can I find a mapping of all API symbols in TensorFlow 1.x to their equivalents in TF 2.0, TensorFlow Probability, addons, etc.?** @@ -122,11 +122,11 @@ An upgrade utility called tf_upgrade_v2 is included with every install of Tensor **How do I convert my code from tf.Session, tf.cond, etc., to @tf.function?** -See [Effective TF 2.0 Style Guide](https://github.com/tensorflow/docs/blob/master/site/en/r2/guide/effective_tf2.md). +See [Effective TF 2.0 Style Guide](https://www.tensorflow.org/beta/guide/effective_tf2). **Where can I find a list of all of the changes in TensorFlow 2.0?** -You can find the API symbol 1:1 map [here](https://docs.google.com/spreadsheets/d/1FLFJLzg7WNP6JHODX5q8BDgptKafq_slHpnHVbJIteQ/edit#gid=0), RFCs on Github, and the [Effective TF 2.0 Style Guide](https://github.com/tensorflow/docs/blob/master/site/en/r2/guide/effective_tf2.md). +You can find the API symbol 1:1 map [here](https://docs.google.com/spreadsheets/d/1FLFJLzg7WNP6JHODX5q8BDgptKafq_slHpnHVbJIteQ/edit#gid=0), RFCs on Github, and the [Effective TF 2.0 Style Guide](https://www.tensorflow.org/beta/guide/effective_tf2). **How long will TensorFlow 1.x be supported?** @@ -231,7 +231,7 @@ The original TensorFlow API’s approach to variables had many drawbacks. As det **What’s the deal with collections?** -Global collections have been removed in TensorFlow 2.0, in favor of variable garbage collecting. For more on variables in TF 2.0, and how they’ve changed since TF 1.x, please refer to the [Effective TF 2.0 Style Guide](https://github.com/tensorflow/docs/blob/master/site/en/r2/guide/effective_tf2.md). +Global collections have been removed in TensorFlow 2.0, in favor of variable garbage collecting. For more on variables in TF 2.0, and how they’ve changed since TF 1.x, please refer to the [Effective TF 2.0 Style Guide](https://www.tensorflow.org/beta/guide/effective_tf2). **I use PyTorch, but would like to try TF 2.0. Is there a migration guide?** From 387ecfadbc4f75e1d7cd59022097b85b9ff7b200 Mon Sep 17 00:00:00 2001 From: Yong Tang Date: Sat, 12 Oct 2019 02:15:00 +0900 Subject: [PATCH 051/365] Update Release process of SIG IO to use Dropbox (#123) Signed-off-by: Yong Tang --- sigs/io/RELEASE.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sigs/io/RELEASE.md b/sigs/io/RELEASE.md index aefe82b8b..35c589efe 100644 --- a/sigs/io/RELEASE.md +++ b/sigs/io/RELEASE.md @@ -23,18 +23,18 @@ At the moment Python package (whl files) is created automatically, upon each successful Travis CI on master branch. At the end of each Travis CI build on master branch, all whl files (2.7, 3.4, 3.5, 3.6, 3.7 on Linux and 2.7 on macOS) are pushed to -Bintray and are available in: +Dropbox and are available in: -https://dl.bintray.com/tensorflow-io/tensorflow-io-nightly/ +https://www.dropbox.com/sh/dg0npidir5v1xki/AACor-91kbJh1ScqAdYpxdEca?dl=0 To perform a release in PyPI, first make sure the binary whl files are the correct one from corresponding Travis CI build number. This could be verified by checking the Travis CI history where at the end of the log, the sha256 of all whl files are calculated and displayed. The sha256 of each file displayed on Travis CI log should match the sha256 -of the files downloaded from Bintray. +of the files downloaded from Dropbox. -Once sha256 are verified against every whl files on Bintray, perform +Once sha256 are verified against every whl files on Dropbox, perform a sanity check, then upload all of the whl files (2.7, 3.4, 3.5, 3.6, 3.7 on Linux and 2.7 on macOS) to PyPI.org: From 3dd2586497ba8bc581ca22b5d652541585795bae Mon Sep 17 00:00:00 2001 From: Edd Wilder-James Date: Fri, 11 Oct 2019 10:16:27 -0700 Subject: [PATCH 052/365] Update CHARTER.md (#105) Small typo fixes. --- sigs/micro/CHARTER.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sigs/micro/CHARTER.md b/sigs/micro/CHARTER.md index 6ede4fe8e..47bdd5047 100644 --- a/sigs/micro/CHARTER.md +++ b/sigs/micro/CHARTER.md @@ -25,6 +25,6 @@ Archives of the mailing list will be publicly available. ## Code of Conduct -As with all forums and spaces related to TensorFlow, SIG-Micro is subject to +As with all forums and spaces related to TensorFlow, SIG Micro is subject to the [TensorFlow Code of Conduct](https://github.com/tensorflow/tensorflow/blob/master/CODE_OF_CONDUCT.md). From 9bffbfa1c1e70069befa66d74fabc7823bbf17cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yan=20Facai=20=28=E9=A2=9C=E5=8F=91=E6=89=8D=29?= Date: Sat, 12 Oct 2019 01:17:56 +0800 Subject: [PATCH 053/365] List all files which are related to tf version (#155) --- sigs/addons/RELEASE.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sigs/addons/RELEASE.md b/sigs/addons/RELEASE.md index 75753f20c..76641da7a 100644 --- a/sigs/addons/RELEASE.md +++ b/sigs/addons/RELEASE.md @@ -4,7 +4,10 @@ SIG Addons release process consists of the folowing steps: 1. Create new rX.X branch on tensorflow/addons 2. Create and merge a new PR into the release branch * Set the correct version and suffix in [version.py](https://github.com/tensorflow/addons/blob/master/tensorflow_addons/version.py) - * Freeze the tensorflow version in [requirements.txt](https://github.com/tensorflow/addons/blob/master/requirements.txt) + * Freeze the tensorflow version in + - [setup.py](https://github.com/tensorflow/addons/blob/master/setup.py) + - [requirements.txt](https://github.com/tensorflow/addons/blob/master/build_deps/requirements.txt) + - [requirements_gpu.txt](https://github.com/tensorflow/addons/blob/master/build_deps/requirements_gpu.txt) * Remove `--nightly` flag from [release scripts](https://github.com/tensorflow/addons/tree/master/tools/ci_build/builds) * Compile the docs: [instructions](https://github.com/tensorflow/addons/tree/master/tools/docs) 3. Trigger [Travis build](https://travis-ci.org/tensorflow/addons) From 66a379973a86cc253cbea72da7b547350c3bb70a Mon Sep 17 00:00:00 2001 From: Hui Zhang Date: Sat, 12 Oct 2019 01:18:25 +0800 Subject: [PATCH 054/365] Update 20181016-optimizer-unification.md (#82) --- rfcs/20181016-optimizer-unification.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rfcs/20181016-optimizer-unification.md b/rfcs/20181016-optimizer-unification.md index e2fe174d6..61f6784a7 100644 --- a/rfcs/20181016-optimizer-unification.md +++ b/rfcs/20181016-optimizer-unification.md @@ -313,13 +313,13 @@ FtrlOptimizer(learning_rate, Proposed signature: ```Python -FTRL(learning_rate, +FTRL(learning_rate=learning_rate, learning_rate_power=-0.5, initial_accumulator_value=0.1, l1_regularization_strength=0.0, l2_regularization_strength=0.0, - name="FTRL", - l2_shrinkage_regularization_strength=0.0) + l2_shrinkage_regularization_strength=0.0, + name="FTRL") ``` From 2f78d19ccc99a8fc6b4f529b36c2fb3b73b9015d Mon Sep 17 00:00:00 2001 From: Hui Zhang Date: Sat, 12 Oct 2019 01:19:01 +0800 Subject: [PATCH 055/365] Update 20180827-api-names.md (#80) * Update 20180827-api-names.md fix format * Update 20180827-api-names.md * Update 20180827-api-names.md --- rfcs/20180827-api-names.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/rfcs/20180827-api-names.md b/rfcs/20180827-api-names.md index b4dd11cd3..8964aa6a9 100644 --- a/rfcs/20180827-api-names.md +++ b/rfcs/20180827-api-names.md @@ -55,10 +55,10 @@ Furthermore, TensorFlow API has many users. Therefore, we should avoid removing We plan to add the following additional namespaces: -**tf.random** - will contain random sampling ops. -**tf.keras.layers** - will contain all symbols that are currently under `tf.layers`. Note that signatures of these symbols will likely change to match layers under tf.keras.layers better. -**tf.keras.losses** - will contain all symbols that are currently under `tf.losses`. Note that signatures of these symbols will likely change to match losses under tf.keras.losses better. -**tf.keras.metrics** - will contain all symbols that are currently under `tf.metrics`. Note that signatures of these symbols will likely change to match metrics under tf.keras.metrics better. +**tf.random** - will contain random sampling ops. +**tf.keras.layers** - will contain all symbols that are currently under `tf.layers`. Note that signatures of these symbols will likely change to match layers under tf.keras.layers better. +**tf.keras.losses** - will contain all symbols that are currently under `tf.losses`. Note that signatures of these symbols will likely change to match losses under tf.keras.losses better. +**tf.keras.metrics** - will contain all symbols that are currently under `tf.metrics`. Note that signatures of these symbols will likely change to match metrics under tf.keras.metrics better. Note that we already introduced some new namespaces earlier in June, specifically @@ -77,8 +77,8 @@ move [TensorFlow Debugger](https://www.tensorflow.org/guide/debugger) to We plan to deprecate entire contents of the following namespaces: -**tf.logging** - Python `logging` module can be used instead. -**tf.manip** - We will keep endpoints in root for symbols in `tf.manip`. `tf.manip` was added recently but most tensor manipulation ops are frequently used and it makes sense to keep them in root instead. +**tf.logging** - Python `logging` module can be used instead. +**tf.manip** - We will keep endpoints in root for symbols in `tf.manip`. `tf.manip` was added recently but most tensor manipulation ops are frequently used and it makes sense to keep them in root instead. ## Additional endpoints @@ -110,7 +110,7 @@ Endpoints*. Note: the list in the appendix does not include endpoints under `tf. # Impact -Browsing for symbols should become easier. For e.g. page for tf.math namespace should display all math functions that TensorFlow provides. Similarly, tf.sets namespace page should display all available set operations. +Browsing for symbols should become easier. For e.g. page for `tf.math` namespace should display all math functions that TensorFlow provides. Similarly, `tf.sets` namespace page should display all available set operations. Removing symbol endpoints would break references in user code. We plan to apply removals as a part of TensorFlow 2.0 release and provide a conversion script that would replace deprecated references with canonical ones. Initial script is at https://github.com/tensorflow/tensorflow/blob/master/tensorflow/tools/compatibility/tf_upgrade_v2.py. It will be updated to match changes in this doc. From 623681a11b598829162c18e271dd2a92f82f0d3a Mon Sep 17 00:00:00 2001 From: Gabriela de Queiroz Date: Fri, 11 Oct 2019 10:20:02 -0700 Subject: [PATCH 056/365] Small typo (#51) --- sigs/build/tensorflow-testing.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sigs/build/tensorflow-testing.md b/sigs/build/tensorflow-testing.md index a25ee06bf..68259b976 100644 --- a/sigs/build/tensorflow-testing.md +++ b/sigs/build/tensorflow-testing.md @@ -12,7 +12,7 @@ TensorFlow is truly a community effort, and **we would love to have your feedbac ### 🐞 Report a Bug -Please submit all bugs, errors, and pecularities on GitHub. Differences between documentation and implementation, lack of +Please submit all bugs, errors, and peculiarities on GitHub. Differences between documentation and implementation, lack of documentation, performance issues, or compatibility problems are all fair game. Please be specific and include all information that would be helpful to debug the issue using our issue templates: @@ -37,7 +37,7 @@ If you would like to submit general feedback about TensorFlow (and in particular **Friction logs** are documents that describe the frustrations and delights of a product, focused around a specific use case (for example, creating an LSTM model for text classification). They're also intended to be brutally honest - feel free to vent or to praise! 😊 -An template and example of a TensorFlow friction log can be found [here](https://docs.google.com/document/d/1HVG3t-mgGZKU4iMeguTWGejbnQ54qUTXwdCFkA5xHG0/edit?usp=sharing). +A template and example of a TensorFlow friction log can be found [here](https://docs.google.com/document/d/1HVG3t-mgGZKU4iMeguTWGejbnQ54qUTXwdCFkA5xHG0/edit?usp=sharing). Once you have completed such a document, please email it to our [testing team](mailto:testing@tensorflow.org). From fe37cff7a7bc71f4c9a949a909ecb6b79802da4b Mon Sep 17 00:00:00 2001 From: Paige Bailey Date: Fri, 11 Oct 2019 10:20:34 -0700 Subject: [PATCH 057/365] Formatting tweaks. (#75) --- sigs/testing/README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sigs/testing/README.md b/sigs/testing/README.md index dfad336f6..920ce68bc 100644 --- a/sigs/testing/README.md +++ b/sigs/testing/README.md @@ -6,9 +6,11 @@ A key element of the evolution of TensorFlow is TF 2.0, which is primarily focus * Making TensorFlow more intuitive and easier to debug; and * Continuing to enable scalable production deployment. -**TF 2.0 is just in the beginning of this transition. ** +**TF 2.0 is just in the beginning of this transition.** -You can experiment with the alpha release today! Please let us know what you create, and what the experience is like. Over the next few months, we will be focused on making it RC/production ready both internally and externally; making TF 2.0 compatible with the rest of TensorFlow ecosystem; and sharing that journey with you. _We’d love for you to join us and help us!_ +You can experiment with the alpha release today! Please let us know what you create, and what the experience is like. Over the next few months, we will be focused on making it RC/production ready both internally and externally; making TF 2.0 compatible with the rest of TensorFlow ecosystem; and sharing that journey with you. + +_We’d love for you to join us and help us!_ ## Installation Instructions From a6d1b63d5459c0efb3ad6383153fae69f5c082f5 Mon Sep 17 00:00:00 2001 From: Robert Neale <34356+broken@users.noreply.github.com> Date: Fri, 11 Oct 2019 10:25:23 -0700 Subject: [PATCH 058/365] RFC: Tokenization API & Initial Implementations (#98) * **RFC: Tokenization API Conventions & Initial Implementations** Status | Proposed :------------ | :----------------------------------- **Author(s)** | Robby Neale (Google) **Sponsor** | Mark Omernick (Google), Greg Billock (Google) **Updated** | 2019-04-18 **Objective** Establish a set of principles to follow that will unify Tensorflow tokenization offerings, and apply these conventions to APIs for a set of op-level tokenizers. * update with base class * Add info on how API interacts with tf.data & default Keras layers. * Update title --- rfcs/20190430-tokenization-conventions.md | 350 ++++++++++++++++++++++ 1 file changed, 350 insertions(+) create mode 100644 rfcs/20190430-tokenization-conventions.md diff --git a/rfcs/20190430-tokenization-conventions.md b/rfcs/20190430-tokenization-conventions.md new file mode 100644 index 000000000..d98ec5e87 --- /dev/null +++ b/rfcs/20190430-tokenization-conventions.md @@ -0,0 +1,350 @@ +# RFC: Tokenization API & Initial Implementations + +Status | Proposed +:------------ | :----------------------------------- +**Author(s)** | Robby Neale (Google) +**Sponsor** | Mark Omernick (Google), Greg Billock (Google) +**Updated** | 2019-05-29 + +## Objective {#objective} + +Establish common interfaces for Tensorflow tokenizers, and introduce three +concrete op-level tokenizers. + +## Motivation {#motivation} + +There are a number of tokenization methods we wish to make available for +converting text runs into sequenced substrings processed by Tensorflow graphs. +In the past, these steps needed to be performed outside the graph in a data +preprocessing step, or through custom ops. The former had a chance of creating +skew if the preprocessing wasn't performed consistently, and the latter +fragmented Tensorflow NLP usage. + +## User Benefit {#user-benefit} + +To prevent further fragmentation, and to the benefit of all NLP modelers, we +wish to establish two tokenizer interfaces for new tokenizers to implement that +will make them easy to use, switch between, and compose. There is not one +best tokenizer for all use cases, and it is not a goal to establish a single +best tokenizer. + +In addition to these tokenizer interfaces, we intend to discuss new concrete +subclasses - whitespace split, Unicode script split, and wordpiece. + +## Design Proposal {#design-proposal} + +We propose a base Tokenizer class that takes a Tensor or +[RaggedTensor](https://www.tensorflow.org/guide/ragged_tensors) of strings (or +optionally integer Unicode code points) as input, and outputs a RaggedTensor of +tokens. Tokens can be strings or integers (frequently as vocabulary +indices), and may differ from the originating text. By accepting strings, we +wish to make adoption and usage as easy as possible. This standardization on +both input and output formats, also allows for ease in composability between +tokenizers (see example of this in the custom_tokenizer example below). Plus, +the use of a base class allows for a single point of initialization in the +constructor, and not having to reinitialize when reusing the tokenizer. + +```python +class Tokenizer(tf.Module): + def tokenize(self, input): + """ + Args: + input: An N-dimensional UTF-8 string (or optionally integer) Tensor or + RaggedTensor. + Returns: + An N+1-dimensional UTF-8 string or integer Tensor or RaggedTensor. + """ +``` + +The number of tokens created from tokenizing a string is unknown. For this +reason, it is impossible to fully tokenize and output a normal tensor with a +uniform shape for a batch of varying strings. Thus, it is expected that each +output will be ragged (except in the vector, rank 1, case when the input is a +string scalar). + +To allow the caller to know which groups of tokens belong to each string, the +innermost ragged dimension will be tokens for the originating string. This means +that the shape of the output will have an additional dimension when compared to +the input. Example: + +```python +>>> tokenizer.tokenize(["This is great!", "Awesome!"]) +[["This", "is", "great!"], + ["Awesome!"]] +``` + +Model authors often want to know the alignment between the tokens and +the original string. For these instances, a separate class is available which +has a *tokenize_with_offsets* that returns a tuple containing the resulting +tokens plus a *best effort* of starting and ending offsets for each token into +the originating string. This is similar to the ops +`tf.strings.unicode_decode_with_offsets` and +`tf.strings.unicode_split_with_offsets`. We propose a new base class, +TokenizeWithOffsets, which extends Tokenizer and provides the added +functionality. This makes it clear whether or not the implementing Tokenizers +support the *_with_offsets* variant of tokenization. + +```python +def TokenizerWithOffsets(Tokenizer): + def tokenize_with_offsets(self, input): + """ + Args: + input: An N-dimensional UTF-8 string (or optionally integer) Tensor or + RaggedTensor. + Returns: + A tuple (tokens, start_offsets, limit_offsets): + * tokens is an N+1-dimensional UTF-8 string or integer Tensor or + RaggedTensor. + * start_offsets is an N+1-dimensional integer Tensor containing the + starting indices of each token (byte indices for input strings). + * limit_offsets is an N+1-dimensional integer Tensor containing the + exclusive ending indices of each token (byte indices for input + strings). + """ +``` + +Here is a basic example of using *tokenize_with_offsets*. + +```python +>>> tokenizer.tokenize_with_offsets(["This is great!", "Awesome!"]) +([["This", "is", "great!"], ["Awesome!"]], + [[0, 5, 8], [0]], + [[4, 7, 14], [8]]) +``` + +Along with these base classes, there are three tokenizers we plan on +introducing - whitespace tokenizer, unicode script tokenizer, and a wordpiece +tokenizer. + +### WhitespaceTokenizer {#whitespace_tokenize} + +A basic tokenization method that splits on International Components for Unicode +(ICU) defined whitespace characters. + +```python +class WhitespaceTokenizer(TokenizerWithOffsets): + def tokenize(self, input): + """ + Args: + input: A `RaggedTensor` or `Tensor` of UTF-8 strings with any shape. + + Returns: + A RaggedTensor of tokenized text. The returned shape is the shape of the + input tensor with an added ragged dimension for tokens of each string. + """ + + def tokenize_with_offsets(self, input): + """ + Args: + input: A `RaggedTensor`or `Tensor` of UTF-8 strings with any shape. + + Returns: + A tuple of `RaggedTensor`s `tokens`, `start_offsets`, and `limit_offsets` + where: + * `tokens`: A `RaggedTensor` of tokenized text. + * `start_offsets`: A `RaggedTensor` of the tokens' starting byte offset. + * `limit_offsets`: A `RaggedTensor` of the tokens' ending byte offset. + """ +``` + +### UnicodeScriptTokenizer {#unicode_script_tokenize} + +Splits strings based on the script codes of the Unicode code points. Script +codes correspond to ICU UScriptCode values. This means that text may often be +split by language as well as punctuation and whitespace. Similar to the +whitespace tokenizer, whitespace is removed. + +```python +class UnicodeScriptTokenizer(TokenizerWithOffsets): + def tokenize(self, input): + """ + Args: + input: A `RaggedTensor`or `Tensor` of UTF-8 strings with any shape. + + Returns: + A RaggedTensor of tokenized text. The returned shape is the shape of the + input tensor with an added ragged dimension for tokens of each string. + """ + + def tokenize_with_offsets(self, input): + """ + Args: + input: A `RaggedTensor`or `Tensor` of UTF-8 strings with any shape. + + Returns: + A tuple of `RaggedTensor`s `tokens`, `start_offsets`, and `limit_offsets` + where: + * `tokens`: A `RaggedTensor` of tokenized text. + * `start_offsets`: A `RaggedTensor` of the tokens' starting byte offset. + * `limit_offsets`: A `RaggedTensor` of the tokens' ending byte offset. + """ +``` + +#### WordpieceTokenizer {#wordpiece_tokenize} + +Wordpiece is an unsupervised text tokenizer which requires a predetermined +vocabulary for tokenization. It normally also requires a pretokenization step +that splits text into tokens, which wordpiece then splits further into +subwords (prefixes & suffixes). + +[BERT](https://github.com/google-research/bert) currently uses Wordpiece. + +```python +class WordpieceTokenizer(TokenizerWithOffsets): + def __init__(self, vocab_lookup_table, suffix_indicator='##', + max_bytes_per_word=100, token_out_type=tf.int64, + unknown_token='[UNK]'): + """ + Args: + vocab_lookup_table: A lookup table implementing the LookupInterface + containing the vocabulary of subwords. + suffix_indicator: (optional) The characters prepended to a wordpiece to + indicate that it is a suffix to another subword. Default is '##'. + max_bytes_per_word: (optional) Max size of input token. Default is 100. + token_out_type: (optional) The type of the token to return. This can be + `tf.int64` IDs, or `tf.string` subwords. The default is `tf.int64`. + unknown_token: (optional) The value to use when an unknown token is found. + Default is "[UNK]". If this is set to a string, and `token_out_type` is + `tf.int64`, the `vocab_lookup_table` is used to convert the + `unknown_token` to an integer. If this is set to `None`, + out-of-vocabulary tokens are left as is. + """ + + def tokenize(self, input): + """ + Args: + input: An N-dimensional `Tensor` or `RaggedTensor` of UTF-8 strings. + + Returns: + A `RaggedTensor`s `tokens` where `tokens[i1...iN, j]` is the string + contents, or ID in the vocab_lookup_table representing that string, + of the `j`th token in `input[i1...iN]` + """ + + def tokenize_with_offsets(self, input): + """ + Args: + input: An N-dimensional `Tensor` or `RaggedTensor` of UTF-8 strings. + + Returns: + A tuple of `RaggedTensor`s `tokens`, `start_offsets`, and `limit_offsets` + where: + * `tokens[i1...iN, j]` is the string contents, or ID in the + vocab_lookup_table representing that string, of the `j`th token in + `input[i1...iN]` + * `start_offsets[i1...iN, j]` is the byte offset for the start of the + `j`th token in `input[i1...iN]` + * `limit_offsets[i1...iN, j]` is the byte offset for the end of the + `j`th token in `input[i1...iN]` + """ +``` + +#### a CustomTokenizer example {#a-custom_tokenizer-example} + +If all tokenizers follow the same principles, it allows for flexibility in +swapping out tokenization methods, can lend itself to composability, and will be +easy for anybody already familiar with standard tokenization APIs to use. Below +is a custom tokenizer example that extends the Tokenizer base class and thus not +providing a *tokenizer_with_offsets* method. + +```python +class MyCustomTokenizer(Tokenizer): + def tokenize(self, input): + """ + A custom tokenizer for string tensors. + + Args: + input: An N-dimensional string Tensor or RaggedTensor + + Returns: + An N+1-dimensional string or integer Tensor or RaggedTensor. + """ + # normalize & strip control characters + input = tf_text.case_fold_utf8(input) + input = tf.strings.regex_replace(input, r"\p{Cc}|\p{Cf}", "") + + # tokenize based on unicode_script + script_tokenized = tf_text.unicode_script_tokenize(input) + token_codepoints = tf.strings.unicode_script( + tf.strings.unicode_decode(script_tokenized.flat_values, "UTF-8")) + + HAN_SCRIPT_ID = 17 + is_han_script = tf.equal(token_codepoints, HAN_SCRIPT_ID)[:, :1].values + is_emoji = tf_text.wordshape( + script_tokenized.flat_values, text.WordShape.HAS_EMOJI) + + # Further splitting + split_cond = is_han_script | is_emoji + unicode_char_split = tf.strings.unicode_split(script_tokenized, "UTF-8") + unicode_split_tokens = tf.where( + split_cond, + y=tf.expand_dims(script_tokenized.flat_values, 1), + x=unicode_char_split.values) + + # put back into [batch, (num + +update conventions doc -_tokens), (num_unicode_chars)] + mix_tokenized = tf.RaggedTensor.from_row_lengths( + values=unicode_split_tokens, row_lengths=script_tokenized.row_lengths()) + + return mix_tokenized +``` + +## Appendix {#appendix} + +### Appendix A - TF.Data example {#appendix-a} + +A very common use case will be using Tokenizers in the [tf.data +API](https://www.tensorflow.org/guide/datasets). With the recent (in tf-nightly) +support for RaggedTensors in tf.data, this should be straight-forward for +anybody familiar with tf.data and pose no problems. A simple example is provided +below showing how this could look. + +```python +docs = tf.data.Dataset.from_tensor_slices([['Never tell me the odds.'], + ["It's a trap!"]]) +tokenizer = text.WhitespaceTokenizer() +tokenized_docs = docs.map(lambda x: tokenizer.tokenize(x)) +iterator = tokenized_docs.make_one_shot_iterator() +tokenized_doc = iterator.get_next() +``` + +### Appendix B - Keras Preprocessing {#appendix-a} + +Keras provides its own set of preprocessing layers, one which tokenizes, +normalizes, and vectorizes the text. An equivalent tokenizer (most likely the +WhitespaceTokenizer described above) will be provided for anybody wanting to +duplicate the tokenization functionality. + +Because of the simplified nature of the Keras tokenization and that the +tokenizer API described above is to be included in a TensorFlow library outside +of core, these tokenizers will not be used from within the Keras preprocessing +layers to prevent the extra dependency from within Keras. However, more +full-featured Keras tokenization layers will be provided in the same library as +these tokenizers and use the API internally. + +### Appendix C - Other tokenizers {#appendix-c} + +Here we will briefly describe other tokenization methods that could extend the +same base classes despite not being Tensorflow ops. + +#### Segmentation {#segmentation} + +ML models trained to determine tokens within a given text are common solutions +for tokenizating CJKT languages, for example, +[SyntaxNet](https://ai.googleblog.com/2016/05/announcing-syntaxnet-worlds-most.html). +Since they use NN models internally for tokenizing, they do not package well as +ops, but instead could be built from TF ops and called through [Tensorflow +Serving](https://www.tensorflow.org/tfx/guide/serving) or +[TF.Hub](https://www.tensorflow.org/hub). + +#### SentencePiece {#sentencepiece} + +[SentencePiece](https://github.com/google/sentencepiece) is an unsupervised text +tokenizer and detokenizer where the vocabulary size is predetermined prior to +the neural model training. SentencePiece implements subword units (e.g. +byte-pair-encoding (BPE) +[Sennrich et al.](http://www.aclweb.org/anthology/P16-1162)) and unigram +language model [Kudo.](https://arxiv.org/abs/1804.10959)) with the extension of +direct training from raw sentences. + From 31799144bdc78e89a47479d63ceed71ef36a07ab Mon Sep 17 00:00:00 2001 From: Yu-Cheng Ling Date: Fri, 11 Oct 2019 10:28:12 -0700 Subject: [PATCH 059/365] RFC: On-Device Training with TensorFlow Lite (#124) * RFC for TensorFlow Lite training * Fix images for Github markdown format * Minor edit: Remove width for roadmap.png * Fix a typo. * Update the variable saving section * Fix typo * Add description for Flex * Change the status to accepted --- rfcs/20190722-tflite-training.md | 444 ++++++++++++++++++++++ rfcs/20190722-tflite-training/roadmap.png | Bin 0 -> 461535 bytes rfcs/20190722-tflite-training/trans1.png | Bin 0 -> 245010 bytes rfcs/20190722-tflite-training/trans2.png | Bin 0 -> 447833 bytes 4 files changed, 444 insertions(+) create mode 100644 rfcs/20190722-tflite-training.md create mode 100644 rfcs/20190722-tflite-training/roadmap.png create mode 100644 rfcs/20190722-tflite-training/trans1.png create mode 100644 rfcs/20190722-tflite-training/trans2.png diff --git a/rfcs/20190722-tflite-training.md b/rfcs/20190722-tflite-training.md new file mode 100644 index 000000000..2fe000b6d --- /dev/null +++ b/rfcs/20190722-tflite-training.md @@ -0,0 +1,444 @@ +# On-Device Training with TensorFlow Lite + +Status | Accepted +:------------ | :--------------------------------------------------------------- +**Author(s)** | Yu-Cheng Ling (ycling@google.com) +**Sponsor** | Andrew Selle (aselle@google.com), Jared Duke (jdduke@google.com) +**Updated** | 2019-07-22 + +## Overview & Roadmap + +TensorFlow Lite is TensorFlow's recommended solution for on-device machine +learning. Initially the project focuses on inference, but more and more users +are asking for on-device training recently. + +The doc scopes a multi-quarter effort to get generalized & optimized on-device +training working with TensorFlow Lite. The project can be broken down into a few +milestones: + +**Milestone 1: Working prototype for basic training (e.g. fully connected / conv layers only)**
+Goal: Have a working prototype to train over fully connected & convolutional layers. + +**Milestone 2A: Optimized basic training**
+Goal: Make inference & training performance comparable with TFMobile. + +**Milestone 2B: Enable on-device training loop with TensorFlow functionality**
+Goal: Encode the on-device training loop inside a TensorFlow model, with TensorFlow functionality like tf.Example and tf.data.Dataset. + +**Milestone 3: Optimized & generalized training (e.g. control flow, RNN)**
+Goal: Be able to train most models that are trainable with TensorFlow. Optimize the training performance for commonly used architectures. + +The following diagram gives an overview of TensorFlow Lite training road map. +Yellow blocks are deliverables. Blue blocks are technical tasks to unblock the +deliverables. The details of technical tasks will be explained below. + + + +## Goals & Non-Goals + +Goals: + +* Illustrate a complete roadmap for TensorFlow Lite on-device training +* Describe user experience of TensorFlow Lite on-device training +* Design for functional on-device training of TensorFlow 2.x models with + TensorFlow Lite + +Non-goals: + +* Quantized training on device +* Support TensorFlow Lite training with legacy model or TensorFlow 1.x + +## User Experience + +Throughout this document, **users** means developers who use TensorFlow Lite. + +This section explains how users can author a TensorFlow graph, convert a +TensorFlow graph to TensorFlow Lite format, use TensorFlow Lite to run training +and inference, and test TensorFlow Lite model correctness with the proposed +design. + +Note: The example defines a single TensorFlow Lite model with multiple subgraphs +for training & inference. However this isn't the only way -- You can also define +separated training model & inference model. + +We're using a simplified example in this section: + +* A model with 2 convolutional layers, 2 dense layers followed by a softmax + activation +* The whole model is trained offline +* The user want to retrain the 2 dense layers using personalized data on + device + +### Authoring TensorFlow graph + +**Defining the model using Keras Layers** + +The code defines the entire model using Keras API. Since we want to be retrain +only dense layers on device, the model is defined in 2 parts (`conv_layers` and +`dense_layers`). + +```python +conv_layers = tf.keras.Sequential([ + tf.keras.layers.Conv2D(10, kernel_size=(3, 3), activation="relu"), + tf.keras.layers.Conv2D(3, kernel_size=(3, 3), activation="relu"), + tf.keras.layers.Flatten(), +]) + +dense_layers = tf.keras.Sequential([ + tf.keras.layers.Dense(50), + tf.keras.layers.Dense(10, activation='softmax'), +]) + +model = tf.keras.Sequential([conv_layers, dense_layers]) +``` + +**Creating TensorFlow Functions for training and inference** + +With TensorFlow 2.0, the recommended way to use TensorFlow Lite is: Define a +TensorFlow function for each invocable behavior in TensorFlow Lite. The +converter will convert each TensorFlow function to a TensorFlow Lite subgraph, +and users can choose subgraphs to invoke. + +The following code defines `inference` and `train` TensorFlow functions. + +```python +@tf.function(input_signature=[ + tf.TensorSpec(shape=[None, 64, 64, 3], dtype=tf.float32)]) +def inference(x): + return model(x) + +_LOSS_FN = tf.keras.losses.mean_squared_error +_OPTIMIZER = tf.optimizers.RMSprop() +@tf.function(input_signature=[ + tf.TensorSpec(shape=[None, 64, 64, 3], dtype=tf.float32), + tf.TensorSpec(shape=[None, 10], dtype=tf.float32), +]) +def train(x, y): + with tf.GradientTape() as tape: + prediction = model(x) + loss = _LOSS_FN(prediction, y) + gradients = tape.gradient(loss, model.trainable_variables) + _OPTIMIZER.apply_gradients(zip(gradients, model.trainable_variables)) +``` + +The `train` function can be used to train the model offline. For retraining only +dense layers, define another `train_dense_layers` TensorFlow function: + +```python + +@tf.function(input_signature=[ + tf.TensorSpec(shape=[None, 64, 64, 3], dtype=tf.float32), + tf.TensorSpec(shape=[None, 10], dtype=tf.float32), +]) +def train_dense_layers(x, y): + activation = conv_layers(x) + # Note: Gradient Tape is calculated only over the dense layers. + with tf.GradientTape() as tape: + prediction = dense_layers(activation) + loss = _LOSS_FN(prediction, y) + # Note: Gradients are only applied to trainable variables in dense layers. + gradients = tape.gradient(loss, dense_layers.trainable_variables) + _OPTIMIZER.apply_gradients(zip(gradients, dense_layers.trainable_variables)) +``` + +Note that `tf.GradientTape` is calculated over only the dense layers, and +`tape.gradients` are only applied to `dense_layers.trainable_variables` too. + +Though this example is simple, it's easy to extend it to support complex use +cases. For example: + +* To retrain dense layers from scratch instead of fine-tuning, define a + `reset_dense_weights` function to reinitialize dense layer weights to zero + or small random values +* Returns loss when training +* Add a function for evaluating model quality +* Add dropout layers which only exists in training graph...etc + +### Converting Training Model to TensorFlow Lite + +After training the model, users can choose a few TensorFlow functions to convert +to TensorFlow Lite. The TensorFlow Lite Converter 2.0 will expose an API that +looks like: + +```python +tf.lite.TFLiteConverter.from_concrete_functions( + [func.get_concrete_function() + for func in [inference, train_dense_layers]]) +``` + +In this case, it's only required to run inference or train dense layers, so only +`inference` and `train_dense_layers` functions are exported. If it's required to +train the whole model on device, add the `train` function when converting. + +### Using the Model in TensorFlow Lite runtime + +There's an ongoing design effort to add enable users to call different subgraphs +in a TensorFlow Lite model. Tentatively the usage may look like: + +``` +Interpreter interpreter = Interpreter(...); +{ + auto subgraph = interpreter.SelectSubgraph("train_dense_layer"); + subgraph.SetInputTensor(0, training_feature); + subgraph.SetInputTensor(1, training_label); + subgraph.Invoke(); +} +{ + auto subgraph = interpreter.SelectSubgraph("inference"); + subgraph.SetInputTensor(0, inference_feature); + subgraph.Invoke(); + auto result = subgraph.GetOutputTensor(0); +} +``` + +Regardless of how the new API design look like, users should be able to choose +to run `train_dense_layer` or `inference` subgraph. + +### Testing TensorFlow Lite Model correctness + +On-device training is complex and it can be hard to troubleshoot. TensorFlow +Lite should provide guidelines and tools to make this easy. The core idea is: If +each TensorFlow function is converted to a TensorFlow Lite subgraph without +changing semantics, it will be easy to test TensorFlow and TensorFlow Lite +functionality side by side. + +In addition to the common ML testing best practices, there are a few specific +suggestions for TensorFlow Lite on-device learning: + +* **Test all functions in TensorFlow** before converting to TensorFlow Lite. + In this use case, in addition to testing `inference` and `train`, also test + if `train_dense_layers` since it's used on device. If it doesn't work well + in TensorFlow, it can't possibly work well in TensorFlow Lite. Check if + there are any coding error, or you may need to tune the model structure or + hyperparameter. +* **Use model diff testing tool to test all functions**. TensorFlow Lite now + has a tool which feeds the same random data into TensorFlow and TensorFlow + Lite, and compare if the results are close enough in a threshold. The model + should be extended to handle multiple subgraphs (including training and + inference subgraphs) and variables. This is an end to end test which can + capture kernel bugs or TensorFlow/TensorFlow Lite discrepancy. + +## Implementation details for basic training + +There is nothing magical in training. Technically, training is doing a series of +**mathematical computation** (requiring these op kernels), and update the weight +**variables** which is **accessible by other (inference) subgraphs**. The +converter also needs to be changed, to support and optimize training use cases. + +### Sharing variables across subgraphs + +For the variable requirement of TensorFlow Lite training, the high level goals +are: + +* Convert TensorFlow Resource Variables to TensorFlow Lite, and preserve the + same semantic +* Able to share variables between multiple TensorFlow Lite subgraphs + +We propose to define variables in TFLite that have similar semantics to resource +variables in TensorFlow: + +* Use int32 tensor to represent variable ID in TFLite instead of defining a + resource type +* Only 2 ops are required to make it work: `AssignVariableOp` and + `ReadVariableOp` +* Other ops can be added into TFLite when necessary + +### Gradient and optimizer operations + +To train a model, it's required to compute **gradients**, and apply the gradient +to trainable variables with **optimizers** (e.g. SGD, ADAM...etc). Technically, +gradients and optimizers are just some mathematical computation and variable +read/write operations. When constructing training graphs in TensorFlow, +sometimes a single fused op is used (e.g. `ReluGrad`), and sometimes it produces +multiple regular ops in unfused form (e.g. `Mul`, `MatMul`, `Add`) to compute +the gradient of one op. + +Today TensorFlow Lite doesn't have these training-specific ops. The following +approaches are considered to run training ops in TensorFlow Lite: + +**Add training ops into Flex runtime (initial implementation)**
+ +Note: "Flex" is the code name for +[Select TensorFlow operators to use in TensorFlow Lite](https://www.tensorflow.org/lite/guide/ops_select) +project, which enables using TensorFlow kernels in TensorFlow Lite directly. +Throughout the document, it will be referred as "Flex" to be concise. + +This is the easiest approach: Just whitelist these training ops to Flex whitelist. However this means Flex runtime is required for training (bloating binary size), and Flex kernels are not optimized for mobile. + +**Implement fused ops as TensorFlow Lite builtin ops (optimization)**
+We can implement these fused ops as TensorFlow Lite builtin ops. This further +enables optimizing for mobile devices (e.g. writing optimized SIMD CPU kernels, +writing GPU delegate...etc). This may need a significant amount of work. + +**Unfusing fused gradient ops (alternative considered)**
+Another interesting thought: Most ops' gradients are representable by +combining simple mathematical calculation. For example, `ReluGrad` + can be written using TensorFlow Lite builtin ops `Less` and `Where`. + +This can be done by writing graph transformation rules in TensorFlow Lite +converter. However, the performance may not be as good as fused ops. It's more +worthwhile to put the effort into writing fused builtin ops. + +### TensorFlow Lite Converter + +It requires a few changes in TensorFlow Lite Converter to support training. The +API change to support multiple functions is already discussed in example section +above. + +In addition, TensorFlow Lite converter **should stop freezing variables which +are written by exported functions**. Currently, the converter always freezes all +variables when converting (all variables are converted to constants). This is +fine for inference-only use case. For training, these variables should not be +converted to constants, so TensorFlow Lite can further modify the variables on +device. + +In the example used in "User Experience" section above: + +* If only `inference` function is exported, all weights should be frozen. +* If `train_dense_layers` is exported, only `conv_layers` variables should be + frozen. +* If `train` is exported, all variables should not be frozen. + +Freezing has another important purpose: Once a variable becomes a constant, it +can be further optimized by constant folding. The implementation described so +far makes on-device training work, but **inference will be slower than the +original graph**. This leads to the next topic: How to **optimize both training +and inference** when training is enabled. + +## Implementation details for related areas + +### Graph Transformation and Optimization + +For optimization purposes, sometimes TensorFlow Lite and TensorFlow have +different op semantics. Some ops takes transposed weights (e.g. `FullyConnected` +and `Conv2D`), and some weights are split or merged. For example, TensorFlow a +`MatMul` op will be converted to TensorFlow Lite `FullyConnected` op, with the +2nd input transposed: + +``` +TFMatMul(lhs, rhs) == TFLiteFullyConnected(lhs, transpose(rhs)) +``` + +In practice, the 2nd input of `MatMul` is often a trained weight variable. +TensorFlow Lite converter will first convert TensorFlow ops to TensorFlow Lite +ops and add ops like `Transpose` or `ReorderAxis` in the same transformation +rule. If it's converted to a constant, In TensorFlow Lite converter can further +perform constant folding and optimize the execution: + + + +However, the constant folding step can't be done if the weights are not frozen, +and the `Transpose` op will remain in the graph. This means **enabling training +may significantly slow down inference** if we don't optimize this case. + +Ideally we want to optimize the inference subgraph to make the structure the +same as when training is disabled. In high level, one way to achieve this is: + +* Allow converter to define new `inference_weights` variable, which may be + different from weights +* Define a subgraph to initialize `inference_weights` from `weights`. Start + from a simple assignment +* Implement specialized graph transformation rules to move complexity from + inference graph to initialization graph + + + +### Control Flow + +Control flow is not required for basic training. However it's useful in the +following cases: + +* **Train models with control flow**: For a model with control flow, control + flow ops are required for both inference and training. E.g. It requires `If` + to compute the gradient of `If`, and it requires `While` loop to compute the + gradient of `While`. +* **Run training loops** inside TensorFlow Lite models: To train a model, it's + usually required to invoke the training step multiple times. It's doable by + writing a loop in application code to invoke the training subgraph multiple + times. It can also be implemented by using a `While` op to iterate over the + training data. + +The detailed design of supporting control flow in TensorFlow Lite is at +[This RFC](https://github.com/tensorflow/community/pull/83). + +### Tensor List + +Tensor List is not required for basic training. However it's important for +training models with control flow loops. + +Whenever there are loops (e.g. While) in the inference graph, Tensor List is +usually required to train the model. Even if Tensor List ops aren't in the +original inference graph, when constructing the training graph, Tensor List ops +are often added automatically to memorize intermediate values, for computing +gradients over the loop. + +Tensor Lists can also be used without loops but this rarely happens. In this +case, Tensor List ops are required for inference and training. + +### Saving Format + +In TensorFlow, users can use `tf.Session` to train a model, and use `tf.train.Saver` to save the trained weights into TensorFlow checkpoint files. + +This proposal enables training with TensorFlow Lite interpreter (which is similar to `tf.Session`). In addition, we can provide utility classes (similar to `tf.train.Saver`) to save the trained format, or users can get the raw data of variables and save it by themselves. + +A few approaches to handle variable saving are described below. In the near term we will focus on the recommended approach. However, note that these approaches are not conflicting with each other, so it's possible to implement multiple of these. + +**Approach 1: Reuse TensorFlow CheckPoint format [recommended]** + +Pros: +* Interoperability: It's potentially easier to load a TensorFlow trained weights into TensorFlow Lite, and vice versa. +* Avoid designing yet another format. + +Cons: +* Currently the TensorFlow checkpoint parsing code is coupled with TensorFlow core. We may need to refactor and decouple with TensorFlow core, or rewrite the parser. + +**Approach 2: Write the variable value back to TensorFlow Lite model** + +Pros: +* Use the existing TensorFlow Lite format. Avoid introducing another format. + +Cons: +* Need to ship the FlatBuffer writer code into the binary. +* Have to write the entire model (which may contain other huge frozen constants) back to storage. +* Low interoperability with TensorFlow checkpoints + +**Approach 3: Implement TensorFlow Lite's own variable saving file format** + +Pros: +* This can be an extremely simple key-value mapping format + +Cons: +* Requires defining yet another format +* Low interoperability with TensorFlow checkpoints + +### Feeding data with tf.Example / tf.data.Dataset + +`tf.Example` and `tf.data.Dataset` are technically not training-specific +requirements. These features can also be used in inference. + +The basic training can work by feeding the raw data (e.g. float values) into +TensorFlow Lite interpreter. On top of this, we can support tf.Example and +tf.data.Dataset to make this easier to use (likely via Flex runtime). There may be a +performance drawback using these features. + +### Selective Registration + +Initially we will need to rely on Flex runtime to execute some of the fused +gradient ops. This requires to add the gradient op kernels to Flex runtime, and +it will bloat up the Flex binary size. + +We also plan to implement fused training ops as TensorFlow Lite builtin ops. +These kernels are not useful if training features are not used. + +We aim to make TensorFlow Lite small, and developers who only run inference +shouldn't get gradient kernels. This makes selective registration (being able to +link only required op kernels) more important. + +This can be done in either of 2 ways: + +* Coarse-grained: Have 2 build targets for each of the TensorFlow Lite / Flex + library. One is inference-only, and the other is inference+training +* Fine-grained: Only include the op kernels which are exactly used. + +The coarse-grained approach is good enough for the initial version of training. +Fine-grained selective registration is a nice improvement for the future. diff --git a/rfcs/20190722-tflite-training/roadmap.png b/rfcs/20190722-tflite-training/roadmap.png new file mode 100644 index 0000000000000000000000000000000000000000..398325bd0fb8f48115e5c5538f580ead8e0b71a3 GIT binary patch literal 461535 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%0DWteOv(om$jLT$^x1w7 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 yI)qpRjI4E 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 !2!}_nCq41{*tRm2E?$e#pUu%su13 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
H6aju{;|nAnINeWel<}&QBxwD291EEy-c%I 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

2Ay!S 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

cK~8nIZ>@&=ZfO6)7c8>MaW9GG% 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 literal 0 HcmV?d00001 diff --git a/rfcs/20190722-tflite-training/trans1.png b/rfcs/20190722-tflite-training/trans1.png new file mode 100644 index 0000000000000000000000000000000000000000..77d4545431e0095f8590068eb004662037152dfb GIT binary patch literal 245010 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

?jot^kF}F|y1V4bDRz)F+*C2@7F1k1DEw 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

eH}S`qwt^Mj@-xp8-}(JJ{nKU#ItsbWz=IAPE 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≥ov&&j5Cuz) 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 literal 0 HcmV?d00001 diff --git a/rfcs/20190722-tflite-training/trans2.png b/rfcs/20190722-tflite-training/trans2.png new file mode 100644 index 0000000000000000000000000000000000000000..0d5c9c0478ee527a4909ed28bad8bfb51f644b97 GIT binary patch literal 447833 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%0DtbM?r59c-e2R0A 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�QQs3L#aE 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 z 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

!8u@I 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

b4pv&B>oqCIg2TtIZm=CB^1FPP0VEAs$> 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

X?0rXuqB5W0@Tk^gZx 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�Ah%V_y`yx+cf};d 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%0DOl?T~#Z&I~f2JiaX$A_yW| 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 Date: Fri, 11 Oct 2019 10:39:31 -0700 Subject: [PATCH 060/365] RFC: TensorCord Variant Object (#100) * Initial version of TensorCord RFC. * Cleanups to TensorCord RFC. * More cleanups to TensorCord RFC. * More cleanups to TensorCord RFC. * More cleanups of TensorCord RFC. * Update to TensorCord RFC. * python -> c++ formatting. * Final update to TF TensorCord RFC. * Change status to Accepted --- rfcs/20190501-tf-tensor-cord.md | 252 ++++++++++++++++++++++++++++++++ 1 file changed, 252 insertions(+) create mode 100644 rfcs/20190501-tf-tensor-cord.md diff --git a/rfcs/20190501-tf-tensor-cord.md b/rfcs/20190501-tf-tensor-cord.md new file mode 100644 index 000000000..c17df244a --- /dev/null +++ b/rfcs/20190501-tf-tensor-cord.md @@ -0,0 +1,252 @@ +# TensorCord Variant Object + +| Status | Accepted | +:-------------- |:---------------------------------------------------- | +| **Author(s)** | Eugene Brevdo (ebrevdo@google.com) | +| **Sponsor** | Alex Passos (apassos@google.com) | +| **Updated** | 2019-06-05 + +## An update on `TensorCord Variant Object` RFC. + +After some internal discussion, we have decided to merge this RFC into another +planned update to how TensorFlow runtime represents and handles strings. When +that updated proposal is available, it will include a section on transparently +representing rope-like objects (without having to use `Variant` for this +behavior). + +## Objective + +This document proposes a new Variant object called TensorCord. A TensorCord +contains a list of `absl::string_view` and release functors / tensor references; and +can be used to store references to other Tensors or other memory locations. The +destructor of a TensorCord reduces the count on its referenced releasers; once +the reference count of a releaser reaches 0, it is executed. + +## Motivation + +A number of ops within TensorFlow could use a rope-like object that +is propagated through the graph. Examples are: + +* `tf.data` input pipelines that perform a lot of string munging (substrings and + concats, especially); these incur a lot of copy overhead. +* `tf.contrib.rpc` and `tf.io.*_proto` (prev. `tf.contrib.proto`) ops that + handle strings and messages and submessages. For example, in proto + encode/decode ops, encoded submessages are contiguous substrings of serialized + messages. Decoding is therefore done by copying substrings on decode, and + encoding is performed by concatenating substrings on encode. +* When serializing numerical tensors, there is currently no equivalent to + `tf.io.decode_raw`. `tf.io.encode_raw` would make sense, but it would incur + the overhead of copying the tensor data into a new string. A more efficient + approach is to create a TensorCord pointed at the old tensor. +* Strings coming in from network I/O are copied out of protos and into + tensors, which also incurs a copy overhead. + +## User Benefit + +Faster input data pipelines and handling of strings and views for users (in a +transparent manner). + +## Design Proposal + +The TensorCord object itself can be implemented using RefCounted objects with a +constructor that takes an `absl::string_view` and either a releaser callback or +a pointer to a `Tensor` or `RefCounted`. + +Below is an example of use: + +```c++ +auto t = strings.flat(); +// old way via copy: +Tensor copy = tensor::DeepCopy(strings); + +// new way: a referencing view: +Tensor view(DT_VARIANT, {strings.NumElements()}); +auto t_view = view.flat(); +for (int i = 0; i < num_elem; ++i) { + t_view(i) = TensorCord(t(i), &strings); +} +``` + +## Alternatives Considered + +A new tensor type `DT_CORD`, which is a tensor of arrays of +`absl::string_view` objects, and additionally has a releaser that runs on its +unref. This implementation seems to be faster but much more invasive from an API +standpoint; e.g. it adds a `CHECK` to the `Tensor::Tensor(dtype, shape)` +constructor so users don't accidentally create a `DT_CORD` tensor without +a releaser. + +| Alternatives | TensorCord DT_VARIANT | DT_CORD | +:------------- |:--------------------- |:------- | +| Separate releasers per element | Yes | No | +| Overhead | Higher (each Tensor element keeps a reference; Variant & RunVariantDtor overhead is more costly) | Lower (can have onereleaser per tensor) | +| Intrusiveness | Lower (use DT_VARIANT) | Higher (add new TF type) | +| Flexibility | High (elements can point to locations backed by different owners) | Lower (all elements must be backed by data whose lifetime depends a shared set of releasers) + +## Detailed Design + +### Public C++ API + +The TensorCord object constructor and Append methods accept a string_view and +either a Tensor pointer or releaser callback. Its underlying string views can +be iterated over or a string can be constructed via explicit cast: + +```c++ +class TensorCord { +public: + typedef void (*Releaser)(void*); + + // At final destruction, releaser will be called as releaser(memory). + // To create a releaser for a std::function that captures objects, use: + // + // template + // TensorCord::Releaser CreateThunkFor(const T& fn) { + // return [](void* ptr) { (*static_cast(ptr))(); }; + // } + // + // auto fn = [&]() { ... }; + // auto releaser = CreateThunkFor(fn); + // auto tc = TensorCord(view, releaser, &fn); + // + // Remember that in this case, fn needs to outlast the TensorCord. + // + // Creates a TensorCord from `view`, with memory releaser `releaser` and releaser + // arg `memory`. + explicit TensorCord(absl::string_view view, Releaser releaser, + void* memory = nullptr); + + // Creates a TensorCord from `view`, with memory backed by `tensor`. If it `view` + // is small enough, no reference is created on `tensor`; instead the memory is + // stored inline. + explicit TensorCord(absl::string_view view, Tensor* tensor); + explicit TensorCord(absl::string_view view, RefCounted* ref_counted); + + void Append(const TensorCord& other); + void Append(absl::string_view view, CordRep::Releaser releaser, + void* memory = nullptr); + void Append(absl::string_view view, Tensor* tensor); + void Append(absl::string_view view, RefCounted* ref_counted); + + size_t size() const; + bool empty() const; + + explicit operator string() const; + + // Usage example: + // for (absl::string_view s : cord.Chunks()) { ... } + ChunkRange Chunks() const; + ChunkIterator chunk_begin() const; + ChunkIterator chunk_end() const; + + // Copy and move constructor, copy and move assignment operators. + // And all the associated Variant-stored object methods + // (Encode, Decode, DebugString, etc). +}; +``` + +### Ops and Op extensions supporting TensorCord: + +The following ops would be extended to support TensorCord: +* basic string ops (join, concat, reduce_join, as_string) +* `tf.contrib.rpc` +* `tf.io.*proto` +* Example parsing ops (`Parse{Single,}{Sequence,}Example`) + +A new op would be added to create views into dense tensors as TensorCord +objects. + +### Python API + +We create a new TensorCord python object: + +```python +class TensorCord(composite_tensor.CompositeTensor): + + def __init__(self, variant): + self._variant = variant + self._as_string = None + if not in eager or tf.function mode: + self._as_string = tf.strings.as_string(variant) + + def as_string(self): + if self._as_string is None: + self._as_string = tf.strings.as_string(self._variant) + return self._as_string + + @property + def variant(self): + return self._variant + + def _to_components(self): + return (self.variant,) + + @classmethod + def _from_components(cls, components, metadata): + variant, = components + return cls(variant=variant) + + @property + def _is_graph_tensor(self): + return getattr(self._variant, "graph", None) is not None + + # also properties/methods like name, op, dtype, graph, shape, numpy, etc. +``` + +Additionally we add a conversion object for `convert_to_tensor(cord, dtype)` to +return `cord.as_string()` when `dtype=string` and return the variant otherwise; +and a similar conversion for `session.run()`: + +```python +def _tensor_cord_to_tensor(value, dtype=None, name=None, as_ref=False): + if as_ref: + raise ValueError + if dtype == dtypes.string: + return value.as_string() + elif dtype in (None, dtypes.variant): + return value.variant + else: + raise ValueError("Don't know how to convert TensorCord to dtype {}".format(dtype)) + +ops.register_tensor_conversion_function(TensorCord, _tensor_cord_to_tensor) + +def _tensor_cord_session_fetch(tensor_cord): + return ([tensor_cord.as_string()], lambda val: val[0]) + +session.register_session_run_conversion_functions( + TensorCord, + fetch_function=_tensor_cord_session_fetch) +``` + +## Performance Implications + +**NOTE** The statement below requires an upcoming PR that allows inlining small +values inside a `Variant` object. + +TL;DR: Creating a TensorCord view of full strings of a `DT_STRING` tensor is +1-1.25x more expensive than a direct copy of `DT_STRING` unless the string lengths +are approximately 128 bytes each. Once string lengths on average are >128 +bytes, the TensorCord approach is more performant. + +We are able to match or exceed `DT_STRING` performance by using a specialized +implementation of TensorCord and modifications to the `Variant` class: + +* TensorCord performs optional inlining and selective referencing of backing + Tensors (usually for strings < 32 bytes in size). This requires a specialized + constructor that knows about `Tensor` objects. + +* The Variant object is modified to inline its underlying data if the stored + value is <= 48 bytes in size (leaving 16 bytes for alignment + additional + stored Variant data). This reduces the amount of overhead and indirection in + storing small values like TensorCord inside Variant and greatly reduces the + cost of `DT_VARIANT` tensor destruction. It keeps the Variant object <= 64 + bytes, which is the per-element aligned size inside `Tensor` + buffers. + +## Questions and Discussion Topics + +* Are there other good rope-like alternatives? +* Any python API considerations? +* Do we need additional Python code to create TensorCord objects from python + strings? +* Considerations for TF-Lite if we extend a number of string processing ops to + using `DT_VARIANT` inputs. From 592221e839eb9629a9ff4c73d46ee44ccb832d97 Mon Sep 17 00:00:00 2001 From: Edd Wilder-James Date: Fri, 11 Oct 2019 10:43:38 -0700 Subject: [PATCH 061/365] Update 20190816-tf-project-versioning.md Include review feedback note on experimental as advice. --- rfcs/20190816-tf-project-versioning.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/rfcs/20190816-tf-project-versioning.md b/rfcs/20190816-tf-project-versioning.md index 55b811d8b..d4fcecaa0 100644 --- a/rfcs/20190816-tf-project-versioning.md +++ b/rfcs/20190816-tf-project-versioning.md @@ -36,3 +36,9 @@ by the use of dependencies in `pip`, or whichever package manager is being used Within the constraints of semantic versioning, project maintainers should feel free to do whatever is best for their projects and users. + +## Review Feedback + +Included as advisory but not binding. + +* Jason Zaman: It might be a good idea to also mention stability guarantees, and things that are excluded from them. eg TensorFlow itself says anything that's `tf.foo.experimental.bar` is not stable and is allowed to change at anytime, and other projects should think about having a similar mechanism if needed. From ed6c5974a3fcabd659245cc5394e5d90367f109c Mon Sep 17 00:00:00 2001 From: Alexandre Passos Date: Fri, 11 Oct 2019 11:42:03 -0700 Subject: [PATCH 062/365] RFC: Best practices for custom operations in TensorFlow (#126) * changes * changes * fix link * checkpoint link * new-rfc * changes * changes * changes * Update 20190726-custom-ops.md change Status to Accepted --- rfcs/20190726-custom-ops.md | 56 +++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 rfcs/20190726-custom-ops.md diff --git a/rfcs/20190726-custom-ops.md b/rfcs/20190726-custom-ops.md new file mode 100644 index 000000000..fa2d543f5 --- /dev/null +++ b/rfcs/20190726-custom-ops.md @@ -0,0 +1,56 @@ +# Best practices for custom operations in TensorFlow + +| Status | Accepted | +:-------------- |:---------------------------------------------------- | +| **Author(s)** | Alexandre Passos (apassos@google.com | +| **Sponsor** | Karmel Allison (karmel@google.com) | +| **Updated** | 2019-06-10 | + +For most of TF’s history, it was very expensive for third-party packages or +libraries to release their own tf operations. This created pressure to put ops +in tf core or in tf contrib, which created some uncertainty around support +stories and backwards compatibility. + +Around (but technically not a part of) TF 2.0, however, TensorFlow supports [a +straightforward way for third-party package to build and deploy their own custom +TF ops](https://github.com/tensorflow/custom-op/blob/master/README.md). To +maintain a healthy ecosystem, we recommend the following best practices. + +## Experimental ops should live out of tree + +Unless some special considerations apply, experimental op development should not +happen inside the core TensorFlow package. Strongly prefer adding experimental +or new operations to libraries and packages downstream from core TensorFlow. Any +op in core TensorFlow is subject to very strict backward and forward +compatibility policies, as TensorFlow is very aggressive about not breaking +existing GraphDefs, and this includes even meant-to-be experimental operations +in the core TensorFlow package. + +Once things are no longer experimental, and once the TensorFlow team determines +it is ok with taking responsibility for the code, it’s fine to propose adding a +new version with the final intended interface and implementation to core +TensorFlow. The intermediate states are best explored in another package. + +This has many advantages: + - downstream packages often have a faster release cadence than core TensorFlow + - each downstream package can choose its own backward and forward compatibility + processes, allowing fine-grained trade-offs between velocity and stability + +## Out-of-tree ops must be namespaced + +Since an op’s name uniquely identifies it, different TF packages should ensure +their op names are globally unique across the entire TF ecosystem. To do so, +prepend the package’s name to the op’s name and separate with a ‘>’. An op named +“MatMul” inside the “tensorflow_addons” package should be named “Addons>MatMul”, +for example. + +The string used for a package’s component name is any valid op name, but should +be unique to the package. This allows different packages to experiment with ops +without needing a central coordinator to assign unique operation names. Failing +to use unique names will mean two packages are potentially incompatible. + +If a third-party-developed operation is to be integrated in TensorFlow core, it +should be renamed to have no prefix, creating a new op name, and removing any +risk of internal and external versions silently diverging. + + From 8eb9d49203c5bbaeb55e14f617ba632d2919a3ac Mon Sep 17 00:00:00 2001 From: Hongye Sun Date: Fri, 20 Sep 2019 10:52:03 -0700 Subject: [PATCH 063/365] RFC: TFX Generic Container Component Execution --- ...90829-tfx-container-component-execution.md | 555 ++++++++++++++++++ .../tfx-container-execution-classes.png | Bin 0 -> 32156 bytes .../tfx-k8s-container-execution.png | Bin 0 -> 29805 bytes .../tfx-local-container-execution.png | Bin 0 -> 24802 bytes 4 files changed, 555 insertions(+) create mode 100644 rfcs/20190829-tfx-container-component-execution.md create mode 100644 rfcs/20190829-tfx-container-component-execution/tfx-container-execution-classes.png create mode 100644 rfcs/20190829-tfx-container-component-execution/tfx-k8s-container-execution.png create mode 100644 rfcs/20190829-tfx-container-component-execution/tfx-local-container-execution.png diff --git a/rfcs/20190829-tfx-container-component-execution.md b/rfcs/20190829-tfx-container-component-execution.md new file mode 100644 index 000000000..af1bed8ae --- /dev/null +++ b/rfcs/20190829-tfx-container-component-execution.md @@ -0,0 +1,555 @@ +# TFX Container Component Execution Proposal + +Status | Proposed +:------------- | :------- +**Author(s)** | Ajay Gopinathan (ajaygopinathan@google.com), Hongye Sun (hongyes@google.com), Makoto Uchida (muchida@google.com), Ruoyu Liu (ruoyu@google.com) +**Sponsor(s)** | Konstantinos Katsiapis (katsiapis@google.com), Pavel Dournov (dournov@google.com), Ramesh Chandra (rameshuc@google.com) +**Updated** | 2019-08-29 + +## Objective + +This RFC proposes an orchestrator agnostic way to reliably execute a user’s +container in the TFX pipeline. The proposal can support: + +* Running an arbitrary container in either local docker environment or remote + k8s cluster. +* Passing data into the container +* Passing output data from the container +* Capturing logs from the container +* Handling errors and retries +* Cancelling the container execution if the pipeline is terminated + +## Motivation + +Currently, in a TFX pipeline, there is no way to execute a generic container as +one of its steps. Without this feature, users cannot bring their own containers +into the pipeline. This blocks following use cases: + +* User already had a docker image and want to run the image as one of the + steps in a TFX pipeline. +* User wants to use non-python code like R as one of the steps in a TFX + pipeline. +* User wants to have an isolated python environment for their component code. + +This RFC is a follow-up design for +[Container-based Component RFC](https://github.com/tensorflow/community/pull/146). +This design defines how to execute the container spec as part of a TFX pipeline. +The execution may occurs in local docker or in a remote kubernetes cluster. + +### Existing solutions + +#### Kubeflow Pipeline (KFP) ContainerOp + +Today, KFP’s ContainerOp leverages +[Argo container template API](https://github.com/argoproj/argo/blob/master/pkg/apis/workflow/v1alpha1/workflow_types.go) +to launch user’s container in a k8s pod. Argo as the orchestrator controls when +to launch the POD and it uses a sidecar container to report output files back +and wait for user’s container to complete. We are not proposing to use Argo API +because of the following reasons: + +* Argo’s API is orchestrator-specific and cannot be ported to Airflow or local + runners. +* Argo’s API doesn’t provide an extensible way to run custom code before and + after POD API which is critical to support metadata tracking and caching + features. +* Argo doesn’t provide an easy way to recover from user’s transient errors, + which is critical in production workload. + +#### Airflow k8s pod operator + +Airflow supports to launch a k8s pod by an +[operator](https://github.com/apache/airflow/blob/master/airflow/contrib/operators/kubernetes_pod_operator.py). +This approach is closer to what we are proposing in the document. However, we +cannot directly use the operator because: + +* Airflow operator requires to be run inside an Airflow pipeline which is not + the case for local and KF runners. +* Airflow operator exposes a subset of POD’s API, where we want to expose the + full pod spec to the user. +* Airflow operator doesn’t provide a reliable way to retry user’s container + and recover from transient errors. +* Airflow does not support initializing operator inside another operator. + Going back to use multiple Airflow operators for a component is a regression + now that we have `BaseComponentLauncher` ready. + +## Proposed Design + +### TLDR + +We propose to solve the above problems by the following design. + +* Define container as an executor spec. +* Launch container by component launcher in either local docker or k8s pod. +* Use platform config to specify platform specific settings like k8s pod + config. + +The proposed solution has following parts: + +* Extensible `ExecutorSpec` concept which can support container as an + executor. +* Extensible `BaseComponentLauncher` concept to support pluggable component + launchers in tfx runner. + * `DockerComponentLauncher` which launches `ExecutorContainerSpec` in + docker environment. + * `KubernetesPodComponentLauncher` which launches `ExecutorContainerSpec` + in k8s environment. +* Extensible `PlatformConfig` framework. + * `KubernetesPodPlatformConfig` to support k8s pod spec as a config. + * `DockerPlatformConfig` to support docker run configs. + +### Architecture + +Architecture that allows local container execution. + +![TFX local container execution](20190829-tfx-container-component-execution/tfx-local-container-execution.png) + +Architecture that allows Kubernetes container execution. + +![TFX k8s container execution](20190829-tfx-container-component-execution/tfx-k8s-container-execution.png) + +Class diagram that allows container execution + +![TFX container execution_classes](20190829-tfx-container-component-execution/tfx-container-execution-classes.png) + +### Python DSL experience + +In order to use container base component in TFX DSL, user needs to do following +steps. Step 1 and Step 2 follow the DSL extension proposed by the other RFC +(https://github.com/tensorflow/community/pull/146). + +#### Step 1: Defines container based component by `ExecutorContainerSpec` + +``` +class MyContainerBasedExampleGen(BaseComponent): + + SPEC_CLASS = types.make_spec_class( + inputs={ +      "raw_input": ChannelParameter(type=standard_artifacts.ExternalArtifact), +  } + outputs={ +      "examples": ChannelParameter(type=standard_artifacts.Examples), +  } + parameters={ +      "num_csv_columns": ExecutionParameter(type=int), +  } + ) + + EXECUTOR_SPEC = ExecutorContainerSpec( + container_image='gcr.io/my_project/my_example_gen:stable', + command=['python'], + args=['my_example_gen.py', + '--input_csv_file', '{{ inputs.raw_input.uri }}', + '--output_examples', '{{ outputs.examples.uri }}', + '--num_csv_columns', '{{ exec_props.num_csv_columns }}' ], + ) +``` + +#### Step 2: Creates pipeline from container based component + +``` +def create_pipeline(): +  my_csv_file = Channel('CSVFile', uri="/path/to/csv_file") + +  my_example_gen = MyContainerBasedExampleGen( +        raw_input=my_csv_file, num_csv_columns=20) + +  return pipeline.Pipeline( +    pipeline_name = 'my_container_based_pipeline', +    pipeline_root = 'gs://path/to/root', +    components = [my_example_gen], +    ... +  ) +``` + +#### Step 3(a): Sets docker config via runner’s config + +``` +_ = BeamRunner(platform_configs={ + 'MyContainerBasedExampleGen': [DockerPlatformConfig(volumes={...})] +}).run(create_pipeline()) +``` + +#### Step 3(b): Sets k8s platform config via runner’s config + +``` +_ = KubeflowDagRunner(platform_configs={ + 'default': [KubernetesPodPlatformConfig(Pod().use_gcp_secret().spec()] + 'MyContainerBasedExampleGen': [ + KubernetesPodPlatformConfig(Pod(cpu=2, memory='1GB').spec())]} +).run(create_pipeline()) +``` + +### Component launcher + +A component launcher launches a component by invoking driver, executor and +publisher. It understands how to launch a component executor from an +`ExecutorSpec`. The `BaseComponentLauncher` is an abstract base class with two +abstract methods: + +* `can_launch`: public method to check whether the launcher can launch an + instance of `ExecutorSpec` with a specified `PlatformConfig` instance. The + method will be used by `TfxRunner` to choose launcher for a component. +* `_run_executor`: a protected method to launch an `ExecutorSpec` instance. + The method is invoked by `BaseComponentLauncher.launch` method. + +Subclasses of the base component launcher can support launching executors in +different target platforms. For example: + +* `InProcessComponentLauncher` can launch an executor class in the same python + process. +* `DockerComponentLauncher` can launch a container executor in docker + environment. +* `KubernetesPodComponentLauncher` can launch a container executor in k8s + environment. +* A Dataflow launcher can launch a beam executor in Dataflow service. +* Etc. + +Pseudo implementation: + +``` +class BaseComponentLauncher(with_metaclass(abc.ABCMeta, object)): + @abc.abstractmethod + @classmethod + def can_launch(cls, executor_spec: ExecutorSpec, + platform_spec: Optional[PlatformConfig]) -> bool: + return False + + @abc.abstractmethod + def _run_executor(execution_id: int, + input_dict: Dict[Text, List[types.Artifact]], + output_dict: Dict[Text, List[types.Artifact]], + exec_properties: Dict[Text, Any]) -> Any: + pass + +class InProcessComponentLauncher(BaseComponentLauncher): + # InProcessComponentLauncher implements default launcher for python executor. + # It doesn't support platform_spec. + @classmethod + def can_launch(cls, executor_spec: ExecutorSpec, + platform_spec: Optional[PlatformConfig]) -> bool: + if platform_spec: + return False + return isinstance(executor_spec, ExecutorClassSpec) + + def _run_executor(execution_id: int, + input_dict: Dict[Text, List[types.Artifact]], + output_dict: Dict[Text, List[types.Artifact]], + exec_properties: Dict[Text, Any]) -> Any: + # Python in process launcher implementation. + # Subclass should override this method to implement platform launcher + … + +class DockerComponentLauncher(BaseComponentLauncher): + + @classmethod + def can_launch(cls, executor_spec: ExecutorSpec, + platform_spec: Optional[PlatformConfig]) -> bool: + if not isinstance(executor_spec, ExecutorContainerSpec): + return false + + if not platform_spec: + return true + + return isinstance(platform_spec, DockerPlatformConfig): + + def _run_executor(execution_id: int, + input_dict: Dict[Text, List[types.Artifact]], + output_dict: Dict[Text, List[types.Artifact]], + exec_properties: Dict[Text, Any]) -> None: + # Docker launcher implementation + ... + +class KubernetesPodComponentLauncher(BaseComponentLauncher): + @classmethod + def can_launch(cls, executor_spec: ExecutorSpec, + platform_spec: Optional[PlatformConfig]) -> bool: + if not isinstance(executor_spec, ExecutorContainerSpec): + return false + + if not platform_spec: + return true + + return isinstance(platform_spec, DockerPlatformConfig): + + def _run_executor(execution_id: int, + input_dict: Dict[Text, List[types.Artifact]], + output_dict: Dict[Text, List[types.Artifact]], + exec_properties: Dict[Text, Any]) -> None: + # k8s pod launcher implementation + … +``` + +### Platform config + +Platform config carries platform specific configs. Usually, one platform config +type maps to one type of component launcher type. For example, +`DockerPlatformConfig` can only be used by `DockerComponentLauncher` and +`KubernetesPodPlatformConfig` can only be used by +`KubernetesPodComponentLauncher`. + +Each platform config can be merged with another config with the same type. This +capacity is needed to support a layered configuration system in runner’s config: + +* User can define a default platform config list which will be applied to all + components in the pipeline. +* User can define component specific config by using component’s name as a + selector. +* Component specific config should override the default config. + +Pseudo implementation: + +``` +class PlatformConfig(with_metaclass(abc.ABCMeta, object)): + def merge(self, platform_config: PlatformConfig) -> PlatformConfig: + """Merge the current config with a new config. + Usually, it only happens when component config is merged with default config. + """ + # Simple recursive dictionary merge logic + +class DockerPlatformConfig(PlatformConfig): + def __init__(self, **kwargs): + # The kwargs is the same as the list defined in + # https://docker-py.readthedocs.io/en/stable/containers.html#docker.models.containers.ContainerCollection.run + self.run_kwargs = kwargs + +class KubernetesPodPlatformConfig(PlatformConfig): + def __init__(self, pod_spec: V1PodSpec): + self.pod_spec = pod_spec +``` + +#### Pod spec layers + +A final pod spec is merged by 3 layers of pod specs. They are: + +* Base pod spec layer +* Default config spec layer +* Component specific config spec layer + +The merge logic follows +[strategic merge patch](https://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/#use-a-strategic-merge-patch-to-update-a-deployment) +to merge layers in order: base -> default -> component config. + +Strategic merge patch is different from JSON patch by merging lists and maps +instead of replacing them entirely. In this way, the patch layer doesn’t have to +specify the full content of a list or map. + +The base pod spec layer is created from user’s container spec. The pod spec +includes a main container spec with image path and entrypoint of the container. + +Default and component platform configs are configured by runner’s constructor. + +For example: + +``` +# base pod spec +apiVersion: v1 +kind: Pod +spec: + containers: + - name: main + image: tensorflow/tensorflow:v1.13 + command: ["python", "-c", "ml/app.py"] + +# pipeline pod spec +spec: + serviceAccountName: PipelineRunner + containers: + - name: main + resources: + limits: + memory: "128Mi" + cpu: "500m" + +# component config pod spec +spec: + containers: + - name: main + env: + - name: MYSQL_ROOT_PASSWORD + value: "password" + +# final pod spec +apiVersion: v1 +kind: Pod +spec: + serviceAccountName: PipelineRunner + containers: + - name: main + image: tensorflow/tensorflow:v1.13 + command: ["python", "-c", "ml/app.py"] + resources: + limits: + memory: "128Mi" + cpu: "500m" + env: + - name: MYSQL_ROOT_PASSWORD + value: "password" +``` + +### TFX runner + +A `TFXRunner` compiles a logical pipeline into underlying orchestrator’s DSL. In +this proposal, the base runner should accept launchers and `platform_configs` +and provide a default strategy to choose launcher for each component. + +The default choosing logic is: + +* If `platform_configs` is set, use it along with executor spec to find the + first launcher which can support them. +* Otherwise, find the first launcher which can support the executor spec + without `platform_configs`. +* `platform_configs` has higher priority than `default_platform_configs`. + +Pseudo implementation: + +``` +class TfxRunner(with_metaclass(abc.ABCMeta, object)): + def __init__(self, launchers: List[BaseComponentLauncher], + platform_configs: Dict[Text, List[PlatformConfig]]): + self.launchers = launchers + self.default_platform_configs = platform_configs.get('default') + self.platform_configs = platform_configs + + def _get_component_launch_info( + self, component: BaseComponent) -> ComponentLaunchInfo: + component_platform_configs = self.platform_configs.get(component.name) + # Use PlatformConfig.merge to merge configs with the same type. + component_platform_configs = self._merge_platform_configs( + component_platform_configs, self.default_platform_configs) + # Select launcher by platform config. + for platform_config in component_platform_configs: + for launcher in self.launchers: + if launcher.can_launch(component.executor_spec, platform_config): + return ComponentLaunchInfo(component, launcher, platform_config) + for launcher in self.launchers: + if launcher.can_launch(component.executor_spec): + return ComponentLaunchInfo(component, launcher) + + def run(self, pipeline) -> Optional[Any]: + component_launcher_infos = {c.name: self._get_component_launch_info(c) + for c in pipeline.components)} + return self._run(self, pipeline, component_launcher_infos) + + @abc.abstractmethod + def _run(self, pipeline, component_launcher_infos) -> Optional[Any]: + pass +``` + +### Output interface + +User container can receive a +[tmp directory path from default artifact store](https://github.com/tensorflow/community/blob/2c0b009ef955975b15a3cc18b1378e0ed38f394e/rfcs/20190904-tfx-generic-container-based-component.md#artifact-properties-after-execution-is-complete) +to write output data. The directory parameter will be called +`exec_properties.tmp_path`, which can be passed in as a command line argument. +The executor will look for `output.json` file under `exec_properties.tmp_path` +to get the outputs from the component. The output file follows the following +schema: + +``` +"$id": https://pipeline.mlx.org/output.schema.json" +"$schema": http://json-schema.org/draft-07/schema#" +type: object +title: Output +properties: + error_status: { "$ref": "#/definitions/OutputErrorStatus" } + outputs: + type: object + exec_properties: + type: object +definitions: + OutputErrorStatus: + type: object + properties: + code: + type: string + enum: [PERMANENT_ERROR, RETRYABLE_ERROR] + message: + type: string +``` + +The output.json file is optional, but if user’s container writes to the file. It +overrides the default handling of k8s pod launcher. Here are the explanation of +the output fields: + +* error_status: it tells the executor whether it should retry or fail. +* outputs and exec_properties: they will be used to override the execution and + output artifact metadata in MLMD. + +The output interfaces relies on `BaseComponentLauncher` to update states back to +MLMD from executor. + +### Auth context resolution + +K8s pod launcher internally uses k8s python client. The auth context resolution +logic is as follows: + +1. If the current env is in a cluster, uses `load_incluster_config` to load k8s + context. +1. If not, use default k8s active context to connect to remote cluster. + +### Pod launcher resiliency + +In this design section, we focused more on the launcher resiliency under +`KubeflowDAGRunner`. In `AirflowDAGRunner`, the launcher code is running in the +same process of Airflow orchestrator which we rely on Airflow to ensure its +resiliency. `BeamDAGRunner`, however, is considered mainly for local testing +purpose and we won't add support for it to be resiliency. + +In `KubeflowDAGRunner`, a pipeline step will create two pods in order to execute +user’s container: + +* A launcher pod which contains driver, k8s pod launcher and publisher code. +* A user pod with user’s container. + +Pod in k8s is not resilient by itself. We will use Argo’s retry feature to make +launcher pod to be partially resilient. The details are as follows: + +* Each argo launcher step will be configured with a default retry count. +* Argo will retry the step in case of failure no matter what type of error. +* The launcher container will create a tmp workdir from `pipeline_root`. +* It will keep intermediate results like created pod ID in the tmp workdir. +* The k8s pod launcher will be implemented in a way that it will resume the + operation based on the intermediate results in the tmp workdir. +* The launcher will also record a permanent failure data in the tmp workdir so + it won’t resume the operation in case of non-retriable failures. + +### Default retry strategy + +K8s pod launcher supports exponential backoff retry. This strategy applies to +all runners which can support k8s pod launcher. Docker launcher are not in the +scope of the design as it is mainly for local development use case. + +The retry only happens if the error is retriable. An error is retriable only +when: + +* It’s a transient error code from k8s pod API. +* The output.json file from artifact store indicates it’s a retriable error. +* The pod get deleted (For example: GKE preemptible pod feature). + +### Log streaming + +Container launcher streams log from user’s docker container or k8s pod through +API. It will start a thread which constantly pulls new logs and output it to +local stdout. + +### Cancellation + +The container launcher handles cancellation request varies by orchestrators: + +* Airflow natively supports cancellation propagation to operator. We will need + to pass the cancellation request from operator into executor. +* Argo doesn’t natively support cancellation propagation. Currently KFP relies + on Argo’s pod annotation to workaround the limitation and have been proven + to be working. We will use the same way to propagate cancellation request to + user’s container. + +In order to allow user to specify the cancellation command line entrypoint, k8s +pod launcher will support an optional parameter called `cancellation_command` +from `ExecutorContainerSpec`. + +## Open discussions + +* In argo runner, each step requires 2 pods with total 3 containers (launcher + main container + launcher argo wait container + user main container) to run. + Although all launcher containers requires minimum k8s resources, it still + can be a concern on resource usage. diff --git a/rfcs/20190829-tfx-container-component-execution/tfx-container-execution-classes.png b/rfcs/20190829-tfx-container-component-execution/tfx-container-execution-classes.png new file mode 100644 index 0000000000000000000000000000000000000000..3018b37b185f900ceb4c97a0b05cd884e5c93000 GIT binary patch literal 32156 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 U$3w}FZxU2~t`4n~dmHk<0BivMJOBUy literal 0 HcmV?d00001 diff --git a/rfcs/20190829-tfx-container-component-execution/tfx-k8s-container-execution.png b/rfcs/20190829-tfx-container-component-execution/tfx-k8s-container-execution.png new file mode 100644 index 0000000000000000000000000000000000000000..708b623c3b36a7d686c9f61b4568a6733b9e43f4 GIT binary patch literal 29805 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 Date: Fri, 20 Sep 2019 11:01:00 -0700 Subject: [PATCH 064/365] fix code format --- ...190829-tfx-container-component-execution.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/rfcs/20190829-tfx-container-component-execution.md b/rfcs/20190829-tfx-container-component-execution.md index af1bed8ae..6a4327f02 100644 --- a/rfcs/20190829-tfx-container-component-execution.md +++ b/rfcs/20190829-tfx-container-component-execution.md @@ -119,7 +119,7 @@ steps. Step 1 and Step 2 follow the DSL extension proposed by the other RFC #### Step 1: Defines container based component by `ExecutorContainerSpec` -``` +```python class MyContainerBasedExampleGen(BaseComponent): SPEC_CLASS = types.make_spec_class( @@ -146,7 +146,7 @@ class MyContainerBasedExampleGen(BaseComponent): #### Step 2: Creates pipeline from container based component -``` +```python def create_pipeline():   my_csv_file = Channel('CSVFile', uri="/path/to/csv_file") @@ -163,7 +163,7 @@ def create_pipeline(): #### Step 3(a): Sets docker config via runner’s config -``` +```python _ = BeamRunner(platform_configs={ 'MyContainerBasedExampleGen': [DockerPlatformConfig(volumes={...})] }).run(create_pipeline()) @@ -171,7 +171,7 @@ _ = BeamRunner(platform_configs={ #### Step 3(b): Sets k8s platform config via runner’s config -``` +```python _ = KubeflowDagRunner(platform_configs={ 'default': [KubernetesPodPlatformConfig(Pod().use_gcp_secret().spec()] 'MyContainerBasedExampleGen': [ @@ -206,7 +206,7 @@ different target platforms. For example: Pseudo implementation: -``` +```python class BaseComponentLauncher(with_metaclass(abc.ABCMeta, object)): @abc.abstractmethod @classmethod @@ -298,7 +298,7 @@ capacity is needed to support a layered configuration system in runner’s confi Pseudo implementation: -``` +```python class PlatformConfig(with_metaclass(abc.ABCMeta, object)): def merge(self, platform_config: PlatformConfig) -> PlatformConfig: """Merge the current config with a new config. @@ -340,7 +340,7 @@ Default and component platform configs are configured by runner’s constructor. For example: -``` +```yaml # base pod spec apiVersion: v1 kind: Pod @@ -402,7 +402,7 @@ The default choosing logic is: Pseudo implementation: -``` +```python class TfxRunner(with_metaclass(abc.ABCMeta, object)): def __init__(self, launchers: List[BaseComponentLauncher], platform_configs: Dict[Text, List[PlatformConfig]]): @@ -445,7 +445,7 @@ The executor will look for `output.json` file under `exec_properties.tmp_path` to get the outputs from the component. The output file follows the following schema: -``` +```yaml "$id": https://pipeline.mlx.org/output.schema.json" "$schema": http://json-schema.org/draft-07/schema#" type: object From d49e7999e5e55af1b526ab3537ba128a5e11380c Mon Sep 17 00:00:00 2001 From: hongye-sun <43763191+hongye-sun@users.noreply.github.com> Date: Thu, 10 Oct 2019 21:46:06 -0700 Subject: [PATCH 065/365] Apply suggestions from code review Co-Authored-By: Adam Wood --- ...90829-tfx-container-component-execution.md | 106 +++++++++--------- 1 file changed, 52 insertions(+), 54 deletions(-) diff --git a/rfcs/20190829-tfx-container-component-execution.md b/rfcs/20190829-tfx-container-component-execution.md index 6a4327f02..fc4c8ea30 100644 --- a/rfcs/20190829-tfx-container-component-execution.md +++ b/rfcs/20190829-tfx-container-component-execution.md @@ -11,7 +11,7 @@ Status | Proposed This RFC proposes an orchestrator agnostic way to reliably execute a user’s container in the TFX pipeline. The proposal can support: -* Running an arbitrary container in either local docker environment or remote +* Running an arbitrary container in either a local Docker environment or a remote k8s cluster. * Passing data into the container * Passing output data from the container @@ -25,16 +25,16 @@ Currently, in a TFX pipeline, there is no way to execute a generic container as one of its steps. Without this feature, users cannot bring their own containers into the pipeline. This blocks following use cases: -* User already had a docker image and want to run the image as one of the +* User already has a docker image and wants to run the image as one of the steps in a TFX pipeline. -* User wants to use non-python code like R as one of the steps in a TFX +* User wants to use non-Python code (R, for example) as one of the steps in a TFX pipeline. -* User wants to have an isolated python environment for their component code. +* User wants to have an isolated Python environment for their component code. This RFC is a follow-up design for [Container-based Component RFC](https://github.com/tensorflow/community/pull/146). This design defines how to execute the container spec as part of a TFX pipeline. -The execution may occurs in local docker or in a remote kubernetes cluster. +The execution may occurs in local Docker container or in a remote Kubernetes cluster. ### Existing solutions @@ -42,7 +42,7 @@ The execution may occurs in local docker or in a remote kubernetes cluster. Today, KFP’s ContainerOp leverages [Argo container template API](https://github.com/argoproj/argo/blob/master/pkg/apis/workflow/v1alpha1/workflow_types.go) -to launch user’s container in a k8s pod. Argo as the orchestrator controls when +to launch user’s container in a k8s pod. Argo, as the orchestrator, controls when to launch the POD and it uses a sidecar container to report output files back and wait for user’s container to complete. We are not proposing to use Argo API because of the following reasons: @@ -50,14 +50,14 @@ because of the following reasons: * Argo’s API is orchestrator-specific and cannot be ported to Airflow or local runners. * Argo’s API doesn’t provide an extensible way to run custom code before and - after POD API which is critical to support metadata tracking and caching + after POD API, which is critical to support metadata tracking and caching features. * Argo doesn’t provide an easy way to recover from user’s transient errors, which is critical in production workload. #### Airflow k8s pod operator -Airflow supports to launch a k8s pod by an +Airflow supports launching a k8s pod by an [operator](https://github.com/apache/airflow/blob/master/airflow/contrib/operators/kubernetes_pod_operator.py). This approach is closer to what we are proposing in the document. However, we cannot directly use the operator because: @@ -68,8 +68,8 @@ cannot directly use the operator because: full pod spec to the user. * Airflow operator doesn’t provide a reliable way to retry user’s container and recover from transient errors. -* Airflow does not support initializing operator inside another operator. - Going back to use multiple Airflow operators for a component is a regression +* Airflow does not support initializing an operator inside another operator. + Going back to using multiple Airflow operators for a component is a regression now that we have `BaseComponentLauncher` ready. ## Proposed Design @@ -83,16 +83,16 @@ We propose to solve the above problems by the following design. * Use platform config to specify platform specific settings like k8s pod config. -The proposed solution has following parts: +The proposed solution has the following parts: -* Extensible `ExecutorSpec` concept which can support container as an +* Extensible `ExecutorSpec` concept which can support a container as an executor. * Extensible `BaseComponentLauncher` concept to support pluggable component - launchers in tfx runner. + launchers in a TFX runner. * `DockerComponentLauncher` which launches `ExecutorContainerSpec` in - docker environment. + a Docker environment. * `KubernetesPodComponentLauncher` which launches `ExecutorContainerSpec` - in k8s environment. + in a k8s environment. * Extensible `PlatformConfig` framework. * `KubernetesPodPlatformConfig` to support k8s pod spec as a config. * `DockerPlatformConfig` to support docker run configs. @@ -113,11 +113,11 @@ Class diagram that allows container execution ### Python DSL experience -In order to use container base component in TFX DSL, user needs to do following +In order to use container base component in TFX DSL, user needs follow these steps. Step 1 and Step 2 follow the DSL extension proposed by the other RFC (https://github.com/tensorflow/community/pull/146). -#### Step 1: Defines container based component by `ExecutorContainerSpec` +#### Step 1: Define the container based component by `ExecutorContainerSpec` ```python class MyContainerBasedExampleGen(BaseComponent): @@ -144,7 +144,7 @@ class MyContainerBasedExampleGen(BaseComponent): ) ``` -#### Step 2: Creates pipeline from container based component +#### Step 2: Create pipeline from container based component ```python def create_pipeline(): @@ -161,7 +161,7 @@ def create_pipeline():   ) ``` -#### Step 3(a): Sets docker config via runner’s config +#### Step 3(a): Set docker config via runner’s config ```python _ = BeamRunner(platform_configs={ @@ -169,7 +169,7 @@ _ = BeamRunner(platform_configs={ }).run(create_pipeline()) ``` -#### Step 3(b): Sets k8s platform config via runner’s config +#### Step 3(b): Set k8s platform config via runner’s config ```python _ = KubeflowDagRunner(platform_configs={ @@ -181,8 +181,8 @@ _ = KubeflowDagRunner(platform_configs={ ### Component launcher -A component launcher launches a component by invoking driver, executor and -publisher. It understands how to launch a component executor from an +A component launcher launches a component by invoking a driver, an executor and +a publisher. It understands how to launch a component executor from an `ExecutorSpec`. The `BaseComponentLauncher` is an abstract base class with two abstract methods: @@ -195,14 +195,13 @@ abstract methods: Subclasses of the base component launcher can support launching executors in different target platforms. For example: -* `InProcessComponentLauncher` can launch an executor class in the same python +* `InProcessComponentLauncher` can launch an executor class in the same Python process. -* `DockerComponentLauncher` can launch a container executor in docker +* `DockerComponentLauncher` can launch a container executor in a Docker environment. -* `KubernetesPodComponentLauncher` can launch a container executor in k8s +* `KubernetesPodComponentLauncher` can launch a container executor in a k8s environment. * A Dataflow launcher can launch a beam executor in Dataflow service. -* Etc. Pseudo implementation: @@ -282,7 +281,7 @@ class KubernetesPodComponentLauncher(BaseComponentLauncher): ### Platform config Platform config carries platform specific configs. Usually, one platform config -type maps to one type of component launcher type. For example, +type maps to one component launcher type. For example, `DockerPlatformConfig` can only be used by `DockerComponentLauncher` and `KubernetesPodPlatformConfig` can only be used by `KubernetesPodComponentLauncher`. @@ -388,7 +387,7 @@ spec: ### TFX runner -A `TFXRunner` compiles a logical pipeline into underlying orchestrator’s DSL. In +A `TFXRunner` compiles a logical pipeline into the underlying orchestrator’s DSL. In this proposal, the base runner should accept launchers and `platform_configs` and provide a default strategy to choose launcher for each component. @@ -467,23 +466,22 @@ definitions: type: string ``` -The output.json file is optional, but if user’s container writes to the file. It -overrides the default handling of k8s pod launcher. Here are the explanation of -the output fields: +The output.json file is optional, but if the user’s container writes to the file. It +overrides the default handling of the k8s pod launcher. The output fields are: -* error_status: it tells the executor whether it should retry or fail. -* outputs and exec_properties: they will be used to override the execution and +* error_status: tells the executor whether it should retry or fail +* outputs and exec_properties: used to override the execution and output artifact metadata in MLMD. -The output interfaces relies on `BaseComponentLauncher` to update states back to +The output interfaces rely on `BaseComponentLauncher` to update states back to MLMD from executor. ### Auth context resolution -K8s pod launcher internally uses k8s python client. The auth context resolution +The k8s pod launcher internally uses the k8s Python client. The auth context resolution logic is as follows: -1. If the current env is in a cluster, uses `load_incluster_config` to load k8s +1. If the current env is in a cluster, use `load_incluster_config` to load k8s context. 1. If not, use default k8s active context to connect to remote cluster. @@ -493,21 +491,21 @@ In this design section, we focused more on the launcher resiliency under `KubeflowDAGRunner`. In `AirflowDAGRunner`, the launcher code is running in the same process of Airflow orchestrator which we rely on Airflow to ensure its resiliency. `BeamDAGRunner`, however, is considered mainly for local testing -purpose and we won't add support for it to be resiliency. +purpose and we won't add support for it to be resilient. In `KubeflowDAGRunner`, a pipeline step will create two pods in order to execute user’s container: -* A launcher pod which contains driver, k8s pod launcher and publisher code. +* A launcher pod which contains the driver, k8s pod launcher, and publisher code. * A user pod with user’s container. -Pod in k8s is not resilient by itself. We will use Argo’s retry feature to make -launcher pod to be partially resilient. The details are as follows: +A pod in k8s is not resilient by itself. We will use Argo’s retry feature to make +the launcher pod partially resilient. The details are as follows: -* Each argo launcher step will be configured with a default retry count. -* Argo will retry the step in case of failure no matter what type of error. -* The launcher container will create a tmp workdir from `pipeline_root`. -* It will keep intermediate results like created pod ID in the tmp workdir. +* Each Argo launcher step will be configured with a default retry count. +* Argo will retry the step in case of failure, no matter what type of error. +* The launcher container will create a tmp workdir in `pipeline_root`. +* It will keep intermediate results (for example, the ID of the created pod) in the tmp workdir. * The k8s pod launcher will be implemented in a way that it will resume the operation based on the intermediate results in the tmp workdir. * The launcher will also record a permanent failure data in the tmp workdir so @@ -516,7 +514,7 @@ launcher pod to be partially resilient. The details are as follows: ### Default retry strategy K8s pod launcher supports exponential backoff retry. This strategy applies to -all runners which can support k8s pod launcher. Docker launcher are not in the +all runners which can support k8s pod launcher. Docker launchers are not in the scope of the design as it is mainly for local development use case. The retry only happens if the error is retriable. An error is retriable only @@ -528,28 +526,28 @@ when: ### Log streaming -Container launcher streams log from user’s docker container or k8s pod through -API. It will start a thread which constantly pulls new logs and output it to +The container launcher streams the log from user’s docker container or k8s pod through the +API. It will start a thread which constantly pulls new logs and outputs them to local stdout. ### Cancellation -The container launcher handles cancellation request varies by orchestrators: +How the container launcher handles cancellation request varies by orchestrators: * Airflow natively supports cancellation propagation to operator. We will need to pass the cancellation request from operator into executor. * Argo doesn’t natively support cancellation propagation. Currently KFP relies - on Argo’s pod annotation to workaround the limitation and have been proven - to be working. We will use the same way to propagate cancellation request to + on Argo’s pod annotation to workaround the limitation and has been proven + to work. We will use the same process to propagate cancellation requests to user’s container. -In order to allow user to specify the cancellation command line entrypoint, k8s +In order to allow the user to specify the cancellation command line entrypoint, the k8s pod launcher will support an optional parameter called `cancellation_command` from `ExecutorContainerSpec`. ## Open discussions -* In argo runner, each step requires 2 pods with total 3 containers (launcher +* In the Argo runner, each step requires 2 pods with total 3 containers (launcher main container + launcher argo wait container + user main container) to run. - Although all launcher containers requires minimum k8s resources, it still - can be a concern on resource usage. + Although each launcher container requires minimal k8s resources, + resource usage is still a concern. From cc718ec94ed9778d9e82dacacb92e93861028091 Mon Sep 17 00:00:00 2001 From: Hongye Sun Date: Mon, 14 Oct 2019 17:15:12 -0700 Subject: [PATCH 066/365] Fix PR comments. --- ...90829-tfx-container-component-execution.md | 68 +++++++++---------- 1 file changed, 33 insertions(+), 35 deletions(-) diff --git a/rfcs/20190829-tfx-container-component-execution.md b/rfcs/20190829-tfx-container-component-execution.md index fc4c8ea30..2bed48343 100644 --- a/rfcs/20190829-tfx-container-component-execution.md +++ b/rfcs/20190829-tfx-container-component-execution.md @@ -12,7 +12,7 @@ This RFC proposes an orchestrator agnostic way to reliably execute a user’s container in the TFX pipeline. The proposal can support: * Running an arbitrary container in either a local Docker environment or a remote - k8s cluster. + Kubernetes cluster. * Passing data into the container * Passing output data from the container * Capturing logs from the container @@ -21,9 +21,9 @@ container in the TFX pipeline. The proposal can support: ## Motivation -Currently, in a TFX pipeline, there is no way to execute a generic container as -one of its steps. Without this feature, users cannot bring their own containers -into the pipeline. This blocks following use cases: +Currently, the execution of a generic container as a step in a TFX pipeline is +not supported. Without this feature, users cannot bring their own containers +into the pipeline. This blocks the following use cases: * User already has a docker image and wants to run the image as one of the steps in a TFX pipeline. @@ -42,7 +42,7 @@ The execution may occurs in local Docker container or in a remote Kubernetes clu Today, KFP’s ContainerOp leverages [Argo container template API](https://github.com/argoproj/argo/blob/master/pkg/apis/workflow/v1alpha1/workflow_types.go) -to launch user’s container in a k8s pod. Argo, as the orchestrator, controls when +to launch user’s container in a Kubernetes pod. Argo, as the orchestrator, controls when to launch the POD and it uses a sidecar container to report output files back and wait for user’s container to complete. We are not proposing to use Argo API because of the following reasons: @@ -55,9 +55,9 @@ because of the following reasons: * Argo doesn’t provide an easy way to recover from user’s transient errors, which is critical in production workload. -#### Airflow k8s pod operator +#### Airflow Kubernetes pod operator -Airflow supports launching a k8s pod by an +Airflow supports launching a Kubernetes pod by an [operator](https://github.com/apache/airflow/blob/master/airflow/contrib/operators/kubernetes_pod_operator.py). This approach is closer to what we are proposing in the document. However, we cannot directly use the operator because: @@ -76,12 +76,11 @@ cannot directly use the operator because: ### TLDR -We propose to solve the above problems by the following design. +We propose to solve the above problems with the following design: -* Define container as an executor spec. -* Launch container by component launcher in either local docker or k8s pod. -* Use platform config to specify platform specific settings like k8s pod - config. +* Define a container as an executor spec. +* Launch a container via a component launcher in either a local docker or Kubernetes pod. +* Use a platform config to specify a platform-specific settings config. The proposed solution has the following parts: @@ -92,9 +91,9 @@ The proposed solution has the following parts: * `DockerComponentLauncher` which launches `ExecutorContainerSpec` in a Docker environment. * `KubernetesPodComponentLauncher` which launches `ExecutorContainerSpec` - in a k8s environment. + in a Kubernetes environment. * Extensible `PlatformConfig` framework. - * `KubernetesPodPlatformConfig` to support k8s pod spec as a config. + * `KubernetesPodPlatformConfig` to support Kubernetes pod spec as a config. * `DockerPlatformConfig` to support docker run configs. ### Architecture @@ -105,7 +104,7 @@ Architecture that allows local container execution. Architecture that allows Kubernetes container execution. -![TFX k8s container execution](20190829-tfx-container-component-execution/tfx-k8s-container-execution.png) +![TFX Kubernetes container execution](20190829-tfx-container-component-execution/tfx-Kubernetes-container-execution.png) Class diagram that allows container execution @@ -114,8 +113,7 @@ Class diagram that allows container execution ### Python DSL experience In order to use container base component in TFX DSL, user needs follow these -steps. Step 1 and Step 2 follow the DSL extension proposed by the other RFC -(https://github.com/tensorflow/community/pull/146). +steps. Step 1 and Step 2 follow the DSL extension proposed by [TFX Generic Container-based Component](https://github.com/tensorflow/community/pull/146). #### Step 1: Define the container based component by `ExecutorContainerSpec` @@ -169,7 +167,7 @@ _ = BeamRunner(platform_configs={ }).run(create_pipeline()) ``` -#### Step 3(b): Set k8s platform config via runner’s config +#### Step 3(b): Set Kubernetes platform config via runner’s config ```python _ = KubeflowDagRunner(platform_configs={ @@ -199,7 +197,7 @@ different target platforms. For example: process. * `DockerComponentLauncher` can launch a container executor in a Docker environment. -* `KubernetesPodComponentLauncher` can launch a container executor in a k8s +* `KubernetesPodComponentLauncher` can launch a container executor in a Kubernetes environment. * A Dataflow launcher can launch a beam executor in Dataflow service. @@ -274,7 +272,7 @@ class KubernetesPodComponentLauncher(BaseComponentLauncher): input_dict: Dict[Text, List[types.Artifact]], output_dict: Dict[Text, List[types.Artifact]], exec_properties: Dict[Text, Any]) -> None: - # k8s pod launcher implementation + # Kubernetes pod launcher implementation … ``` @@ -467,7 +465,7 @@ definitions: ``` The output.json file is optional, but if the user’s container writes to the file. It -overrides the default handling of the k8s pod launcher. The output fields are: +overrides the default handling of the Kubernetes pod launcher. The output fields are: * error_status: tells the executor whether it should retry or fail * outputs and exec_properties: used to override the execution and @@ -478,35 +476,35 @@ MLMD from executor. ### Auth context resolution -The k8s pod launcher internally uses the k8s Python client. The auth context resolution +The Kubernetes pod launcher internally uses the Kubernetes Python client. The auth context resolution logic is as follows: 1. If the current env is in a cluster, use `load_incluster_config` to load k8s context. -1. If not, use default k8s active context to connect to remote cluster. +1. If not, use default Kubernetes active context to connect to remote cluster. ### Pod launcher resiliency In this design section, we focused more on the launcher resiliency under `KubeflowDAGRunner`. In `AirflowDAGRunner`, the launcher code is running in the -same process of Airflow orchestrator which we rely on Airflow to ensure its -resiliency. `BeamDAGRunner`, however, is considered mainly for local testing +same process of Airflow orchestrator, and we rely on Airflow to ensure the +resiliency of the process. `BeamDAGRunner`, however, is considered mainly for local testing purpose and we won't add support for it to be resilient. In `KubeflowDAGRunner`, a pipeline step will create two pods in order to execute user’s container: -* A launcher pod which contains the driver, k8s pod launcher, and publisher code. +* A launcher pod which contains the driver, Kubernetes pod launcher, and publisher code. * A user pod with user’s container. -A pod in k8s is not resilient by itself. We will use Argo’s retry feature to make +A pod in Kubernetes is not resilient by itself. We will use Argo’s retry feature to make the launcher pod partially resilient. The details are as follows: * Each Argo launcher step will be configured with a default retry count. * Argo will retry the step in case of failure, no matter what type of error. * The launcher container will create a tmp workdir in `pipeline_root`. * It will keep intermediate results (for example, the ID of the created pod) in the tmp workdir. -* The k8s pod launcher will be implemented in a way that it will resume the +* The Kubernetes pod launcher will be implemented in a way that it will resume the operation based on the intermediate results in the tmp workdir. * The launcher will also record a permanent failure data in the tmp workdir so it won’t resume the operation in case of non-retriable failures. @@ -514,19 +512,19 @@ the launcher pod partially resilient. The details are as follows: ### Default retry strategy K8s pod launcher supports exponential backoff retry. This strategy applies to -all runners which can support k8s pod launcher. Docker launchers are not in the +all runners which can support Kubernetes pod launcher. Docker launchers are not in the scope of the design as it is mainly for local development use case. The retry only happens if the error is retriable. An error is retriable only when: -* It’s a transient error code from k8s pod API. -* The output.json file from artifact store indicates it’s a retriable error. -* The pod get deleted (For example: GKE preemptible pod feature). +* It’s a transient error code from Kubernetes pod API. +* Or, the output.json file from artifact store indicates it’s a retriable error. +* Or, the pod get deleted (For example: GKE preemptible pod feature). ### Log streaming -The container launcher streams the log from user’s docker container or k8s pod through the +The container launcher streams the log from user’s docker container or Kubernetes pod through the API. It will start a thread which constantly pulls new logs and outputs them to local stdout. @@ -541,7 +539,7 @@ How the container launcher handles cancellation request varies by orchestrators: to work. We will use the same process to propagate cancellation requests to user’s container. -In order to allow the user to specify the cancellation command line entrypoint, the k8s +In order to allow the user to specify the cancellation command line entrypoint, the Kubernetes pod launcher will support an optional parameter called `cancellation_command` from `ExecutorContainerSpec`. @@ -549,5 +547,5 @@ from `ExecutorContainerSpec`. * In the Argo runner, each step requires 2 pods with total 3 containers (launcher main container + launcher argo wait container + user main container) to run. - Although each launcher container requires minimal k8s resources, + Although each launcher container requires minimal Kubernetes resources, resource usage is still a concern. From 5e0b96cf248a728348766de9de411183a5afa1c7 Mon Sep 17 00:00:00 2001 From: Even Oldridge Date: Wed, 16 Oct 2019 11:20:30 -0700 Subject: [PATCH 067/365] Create 20191016-dlpack-support.md Template Creation --- rfcs/20191016-dlpack-support.md | 57 +++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 rfcs/20191016-dlpack-support.md diff --git a/rfcs/20191016-dlpack-support.md b/rfcs/20191016-dlpack-support.md new file mode 100644 index 000000000..aed44684a --- /dev/null +++ b/rfcs/20191016-dlpack-support.md @@ -0,0 +1,57 @@ +# dlpack support for interoperability with other GPU frameworks + +| Status | (Proposed) | +:-------------- |:---------------------------------------------------- | +| **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) (update when you have community PR #)| +| **Author(s)** | My Name (me@example.org), AN Other (you@example.org) | +| **Sponsor** | A N Expert (whomever@tensorflow.org) | +| **Updated** | YYYY-MM-DD | +| **Obsoletes** | TF-RFC it replaces, else remove this header | + +## Objective + +This document proposes the adoption of dlpack (https://github.com/dmlc/dlpack) as way of passing tensor data to other frameworks without leaving the GPU and without a copy. dlpack is currently supported by cuPy, cuDF, + +What are we doing and why? What problem will this solve? What are the goals and +non-goals? This is your executive summary; keep it short, elaborate below. + +## Motivation + +Why this is a valuable problem to solve? What background information is needed +to show how this design addresses the problem? + +Which users are affected by the problem? Why is it a problem? What data supports +this? What related work exists? + +## User Benefit + +How will users (or other contributors) benefit from this work? What would be the +headline in the release notes or blog post? + +## Design Proposal + +This is the meat of the document, where you explain your proposal. If you have +multiple alternatives, be sure to use sub-sections for better separation of the +idea, and list pros/cons to each approach. If there are alternatives that you +have eliminated, you should also list those here, and explain why you believe +your chosen approach is superior. + +Factors to consider include: + +* performance implications +* dependencies +* maintenance +* platforms and environments impacted (e.g. hardware, cloud, other software + ecosystems) +* [compatibility](https://www.tensorflow.org/programmers_guide/version_compat) +* how will this change impact users, and how will that be managed? + +## Detailed Design + +This section is optional. Elaborate on details if they’re important to +understanding the design, but would make it hard to read the proposal section +above. + +## Questions and Discussion Topics + +Seed this with open questions you require feedback on from the RFC process. From d3d11adde3a1e0e268c60cdb8647c97d8030fa23 Mon Sep 17 00:00:00 2001 From: Sean Morgan Date: Wed, 16 Oct 2019 14:54:52 -0400 Subject: [PATCH 068/365] Remove no longer existing file to update (#163) --- sigs/addons/RELEASE.md | 1 - 1 file changed, 1 deletion(-) diff --git a/sigs/addons/RELEASE.md b/sigs/addons/RELEASE.md index 76641da7a..eaa71c828 100644 --- a/sigs/addons/RELEASE.md +++ b/sigs/addons/RELEASE.md @@ -7,7 +7,6 @@ SIG Addons release process consists of the folowing steps: * Freeze the tensorflow version in - [setup.py](https://github.com/tensorflow/addons/blob/master/setup.py) - [requirements.txt](https://github.com/tensorflow/addons/blob/master/build_deps/requirements.txt) - - [requirements_gpu.txt](https://github.com/tensorflow/addons/blob/master/build_deps/requirements_gpu.txt) * Remove `--nightly` flag from [release scripts](https://github.com/tensorflow/addons/tree/master/tools/ci_build/builds) * Compile the docs: [instructions](https://github.com/tensorflow/addons/tree/master/tools/docs) 3. Trigger [Travis build](https://travis-ci.org/tensorflow/addons) From cd16f5b99294480be4134b554139d513860f71a8 Mon Sep 17 00:00:00 2001 From: Edd Wilder-James Date: Wed, 16 Oct 2019 12:00:56 -0700 Subject: [PATCH 069/365] Update issue templates --- .github/ISSUE_TEMPLATE/custom.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/custom.md diff --git a/.github/ISSUE_TEMPLATE/custom.md b/.github/ISSUE_TEMPLATE/custom.md new file mode 100644 index 000000000..b088830a2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/custom.md @@ -0,0 +1,14 @@ +--- +name: Custom issue template +about: For community repo issues +title: '' +labels: '' +assignees: '' + +--- + +# Community repo + +The only issues you should file here concern the community's documentation or processes. + +All other bugs should be filed on the appropriate repo, questions directed to the various email groups, or if it's a "how-to" question, StackOverflow. From 6e5c4998612939efbef8bb087bc8f702cf90df9b Mon Sep 17 00:00:00 2001 From: Even Oldridge Date: Wed, 16 Oct 2019 12:34:33 -0700 Subject: [PATCH 070/365] Update 20191016-dlpack-support.md Saving this intermediate draft. --- rfcs/20191016-dlpack-support.md | 54 ++++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 11 deletions(-) diff --git a/rfcs/20191016-dlpack-support.md b/rfcs/20191016-dlpack-support.md index aed44684a..4b6e2e45a 100644 --- a/rfcs/20191016-dlpack-support.md +++ b/rfcs/20191016-dlpack-support.md @@ -3,17 +3,15 @@ | Status | (Proposed) | :-------------- |:---------------------------------------------------- | | **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) (update when you have community PR #)| -| **Author(s)** | My Name (me@example.org), AN Other (you@example.org) | +| **Author(s)** | eoldridge@nvidia.com, AN Other (you@example.org) | | **Sponsor** | A N Expert (whomever@tensorflow.org) | -| **Updated** | YYYY-MM-DD | -| **Obsoletes** | TF-RFC it replaces, else remove this header | +| **Updated** | 2019-10-16 | ## Objective -This document proposes the adoption of dlpack (https://github.com/dmlc/dlpack) as way of passing tensor data to other frameworks without leaving the GPU and without a copy. dlpack is currently supported by cuPy, cuDF, +This document proposes the adoption of dlpack (https://github.com/dmlc/dlpack) as way of passing tensor data to other frameworks without leaving the GPU and without a copy. dlpack is a community effort to define a common tensor data structure that can be shared by different frameworks. dlpack is currently supported by cuPy, cuDF, DGM, TGL, PyTorch, MxNet. -What are we doing and why? What problem will this solve? What are the goals and -non-goals? This is your executive summary; keep it short, elaborate below. +The interoperability of dlpack would allow for fast on-GPU communication between TensorFlow and these frameworks opening up a wide range of use cases outlined below. It would further enable \_\_cuda_array_interface\_\_ interoperability through cuPy/cuDF which support both methods providing a way to transfer data to Numba, PyArrow and other frameworks that have adopted that method. ## Motivation @@ -23,11 +21,22 @@ to show how this design addresses the problem? Which users are affected by the problem? Why is it a problem? What data supports this? What related work exists? +DLPack is a community effort to define a common tensor data structure that can be shared by different frameworks allowing data to be quickly shared often with zero or minimal copy. One of the main bottlenecks when trying to achieve GPU performance is I/O. The transfer of data between GPU and CPU or between formats is costly to the point where many operations become faster to simply run on the CPU because of the additional costs associated with moving the data. Even when mechanisms exist to copy data directly on GPU, memory constraints limit the application because two copies of the data are required. By implementing dlpack within TensorFlow there would be a way to transfer data directly between frameworks, enabling the development of a range of applications that weren't previously possible but are currently available in PyTorch and MxNet. + +Applications that take advantage of dlpack include: (adding my own, other contributions needed) + - Inline on-gpu preprocessing of tabular data using cuDF to prepare it for the model (normalization, categorical encoding, etc) improving preprocessing performance by 10x + - Larger than cpu memory dataloader that iterates over parquet files and batch loads tensors, providing a significant speedup over traditional dataloaders for tabular data + - End to end acceleration of training on GPU (https://medium.com/rapids-ai/accelerating-deep-learning-recommender-systems-by-15x-using-rapids-fastai-and-pytorch-b50b4d8568d1) + +Beyond the application benefit, Tensorflow's adoption of dlpack would further incentivize other frameworks considering its adoption as all three major DL frameworks would now be supporting it. That would improve the availability of other frameworks for the Tensorflow userbase. + ## User Benefit How will users (or other contributors) benefit from this work? What would be the headline in the release notes or blog post? +Users who wish to utilize other GPU accelerated frameworks like cuDF, cuPy, etc would be able to do so without expensive copy operations. By doing direct dataloading, feature engineering and preprocessing on GPU we see 10-15x speedups over traditional workflows involving CPUs to prepare the data for model readiness. + ## Design Proposal This is the meat of the document, where you explain your proposal. If you have @@ -46,12 +55,35 @@ Factors to consider include: * [compatibility](https://www.tensorflow.org/programmers_guide/version_compat) * how will this change impact users, and how will that be managed? -## Detailed Design +The TensorFlow Tensor object provide API to get the array data of tensor. + +input_tensor.flat().data() +Can we get the data from the above function and use to initialize the DLTensor like this? + + DLTensor* x; + int ndim = 1; + int dtype_code = kDLFloat; + int dtype_bits = 32; + int dtype_lanes = 1; + int device_type = kDLCPU; + int device_id = 0; + + TVMArrayAlloc(shape, ndim, dtype_code, dtype_bits, dtype_lanes, + device_type, device_id, &x); + static_cast(x->data) = data; + +Workflow proposed by @futurely + +Tensor constructs Buffer with Allocator. Buffer calls TypedAllocator::Allocate to allocate memory through Allocator::AllocateRaw. GPUcudaMallocAllocator::AllocateRaw calls cudaMalloc. + +Maybe cuda.synchronize related API should be added to every class involved in the above pipeline. + +Runtime uses DeviceFactory to CreateDevices. BaseGPUDeviceFactory::CreateGPUDevice allocates GPUDevice containing GPUAllocator. GPUProcessState::GetGPUAllocator composes AllocatorParts including GPUcudaMallocAllocator. + +GpuExecutor::Allocate is a simple wrapper of GpuDriver::DeviceAllocate which utilizes cuMemAlloc. -This section is optional. Elaborate on details if they’re important to -understanding the design, but would make it hard to read the proposal section -above. +TensorFlow has added conversion between CPU Tensor and numpy array. ## Questions and Discussion Topics -Seed this with open questions you require feedback on from the RFC process. +https://github.com/tensorflow/tensorflow/issues/29039#issuecomment-527520270 Outlines the key issues that need to be addressed, namely that a synch is required to ensure the tensor information is valid. Supporting \_\_cuda_array_interface\_\_ is another option as well, although cuPy and cuDF have opted to support both. From 138d6ac6f9be89c9ea7bb5582eea3475e1148508 Mon Sep 17 00:00:00 2001 From: Even Oldridge Date: Wed, 16 Oct 2019 14:53:03 -0700 Subject: [PATCH 071/365] Update 20191016-dlpack-support.md --- rfcs/20191016-dlpack-support.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/rfcs/20191016-dlpack-support.md b/rfcs/20191016-dlpack-support.md index 4b6e2e45a..84a227b47 100644 --- a/rfcs/20191016-dlpack-support.md +++ b/rfcs/20191016-dlpack-support.md @@ -23,19 +23,23 @@ this? What related work exists? DLPack is a community effort to define a common tensor data structure that can be shared by different frameworks allowing data to be quickly shared often with zero or minimal copy. One of the main bottlenecks when trying to achieve GPU performance is I/O. The transfer of data between GPU and CPU or between formats is costly to the point where many operations become faster to simply run on the CPU because of the additional costs associated with moving the data. Even when mechanisms exist to copy data directly on GPU, memory constraints limit the application because two copies of the data are required. By implementing dlpack within TensorFlow there would be a way to transfer data directly between frameworks, enabling the development of a range of applications that weren't previously possible but are currently available in PyTorch and MxNet. -Applications that take advantage of dlpack include: (adding my own, other contributions needed) - - Inline on-gpu preprocessing of tabular data using cuDF to prepare it for the model (normalization, categorical encoding, etc) improving preprocessing performance by 10x +Existing applications that take advantage of dlpack include: (adding my own, other contributions needed) + - Inline on-gpu preprocessing of tabular data using cuDF to prepare it for the model (normalization, categorical encoding, etc) improving preprocessing performance by 10x over pandas and CPU - Larger than cpu memory dataloader that iterates over parquet files and batch loads tensors, providing a significant speedup over traditional dataloaders for tabular data - End to end acceleration of training on GPU (https://medium.com/rapids-ai/accelerating-deep-learning-recommender-systems-by-15x-using-rapids-fastai-and-pytorch-b50b4d8568d1) -Beyond the application benefit, Tensorflow's adoption of dlpack would further incentivize other frameworks considering its adoption as all three major DL frameworks would now be supporting it. That would improve the availability of other frameworks for the Tensorflow userbase. +Beyond the application benefit, Tensorflow's adoption of dlpack would further incentivize other frameworks considering its adoption as all three major DL frameworks would now be supporting it. ## User Benefit How will users (or other contributors) benefit from this work? What would be the headline in the release notes or blog post? -Users who wish to utilize other GPU accelerated frameworks like cuDF, cuPy, etc would be able to do so without expensive copy operations. By doing direct dataloading, feature engineering and preprocessing on GPU we see 10-15x speedups over traditional workflows involving CPUs to prepare the data for model readiness. +Users who wish to utilize other GPU accelerated frameworks like cuDF, cuPy, etc would be able to do so without expensive copy operations. By doing direct dataloading, feature engineering and preprocessing on GPU we see 10-15x speedups over traditional workflows involving CPUs to prepare the data for model readiness in other frameworks and they would be immediately available in tensorflow. + +Along those same lines users would be able to develop preprocessing or other GPU based functionality and be able to support integration with all dl frameworks simplifying development efforts when creating solutions that are upstream or downstream from deep learning models. + +A blog post or release notes headline could read "Tensorflow now supports dlpack enabling interoperability with other GPU powered frameworks like cuPy, cuDF, DGM, TGL, PyTorch, and MxNet." ## Design Proposal From fe3c32811277efbf9e2250a147d767a17b87143f Mon Sep 17 00:00:00 2001 From: Even Oldridge Date: Wed, 16 Oct 2019 16:39:58 -0700 Subject: [PATCH 072/365] Update 20191016-dlpack-support.md Updated description --- rfcs/20191016-dlpack-support.md | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/rfcs/20191016-dlpack-support.md b/rfcs/20191016-dlpack-support.md index 84a227b47..339bd13f6 100644 --- a/rfcs/20191016-dlpack-support.md +++ b/rfcs/20191016-dlpack-support.md @@ -9,9 +9,9 @@ ## Objective -This document proposes the adoption of dlpack (https://github.com/dmlc/dlpack) as way of passing tensor data to other frameworks without leaving the GPU and without a copy. dlpack is a community effort to define a common tensor data structure that can be shared by different frameworks. dlpack is currently supported by cuPy, cuDF, DGM, TGL, PyTorch, MxNet. +This document proposes the adoption of dlpack (https://github.com/dmlc/dlpack) as way of passing tensor data to other frameworks without leaving the GPU and without a copy per [24453](https://github.com/tensorflow/tensorflow/issues/24453). dlpack is a community effort to define a common tensor data structure that can be shared by different frameworks. dlpack is currently supported by cuPy, cuDF, DGM, TGL, PyTorch, MxNet. -The interoperability of dlpack would allow for fast on-GPU communication between TensorFlow and these frameworks opening up a wide range of use cases outlined below. It would further enable \_\_cuda_array_interface\_\_ interoperability through cuPy/cuDF which support both methods providing a way to transfer data to Numba, PyArrow and other frameworks that have adopted that method. +The interoperability of dlpack would allow for fast on-GPU communication between TensorFlow and these frameworks opening up a wide range of use cases outlined below. It would further enable \_\_cuda_array_interface\_\_ interoperability through cuPy/cuDF which support both methods providing a way to transfer data to Numba, PyArrow and other frameworks that have adopted that method, although [a similar request has been made to support that method of interoperability](https://github.com/tensorflow/tensorflow/issues/29039) and ideally both would be supported. ## Motivation @@ -21,14 +21,16 @@ to show how this design addresses the problem? Which users are affected by the problem? Why is it a problem? What data supports this? What related work exists? -DLPack is a community effort to define a common tensor data structure that can be shared by different frameworks allowing data to be quickly shared often with zero or minimal copy. One of the main bottlenecks when trying to achieve GPU performance is I/O. The transfer of data between GPU and CPU or between formats is costly to the point where many operations become faster to simply run on the CPU because of the additional costs associated with moving the data. Even when mechanisms exist to copy data directly on GPU, memory constraints limit the application because two copies of the data are required. By implementing dlpack within TensorFlow there would be a way to transfer data directly between frameworks, enabling the development of a range of applications that weren't previously possible but are currently available in PyTorch and MxNet. +DLPack is a community effort to define a common tensor data structure that can be shared by different frameworks allowing data to be quickly shared often with zero or minimal copy. One of the main bottlenecks when trying to achieve GPU performance when operating across different frameworks is I/O and data formatting. The transfer of data between GPU and CPU or between formats is costly to the point where many operations become faster to simply run on the CPU because of the additional costs associated with moving/transforming the data. Even when mechanisms exist to copy data without leaving the GPU, memory constraints limit the application because two copies of the data are required. By implementing dlpack within TensorFlow there would be a way to transfer data directly between frameworks, enabling the development of a range of applications that weren't previously possible but are currently available in PyTorch and MxNet. -Existing applications that take advantage of dlpack include: (adding my own, other contributions needed) +Existing applications that take advantage of dlpack include: (adding my own and those listed in , other contributions needed) - Inline on-gpu preprocessing of tabular data using cuDF to prepare it for the model (normalization, categorical encoding, etc) improving preprocessing performance by 10x over pandas and CPU - Larger than cpu memory dataloader that iterates over parquet files and batch loads tensors, providing a significant speedup over traditional dataloaders for tabular data - - End to end acceleration of training on GPU (https://medium.com/rapids-ai/accelerating-deep-learning-recommender-systems-by-15x-using-rapids-fastai-and-pytorch-b50b4d8568d1) + - [End to end acceleration of training on GPU](https://medium.com/rapids-ai/accelerating-deep-learning-recommender-systems-by-15x-using-rapids-fastai-and-pytorch-b50b4d8568d1); + - Use of Tensorflow in conjunction with [tvm](https://github.com/dmlc/tvm) + - Use of Tensorflow in conjunction with [dgl](https://github.com/dmlc/dgl) -Beyond the application benefit, Tensorflow's adoption of dlpack would further incentivize other frameworks considering its adoption as all three major DL frameworks would now be supporting it. +Beyond the benefit of specific applications, Tensorflow's adoption of dlpack would further incentivize other frameworks considering its adoption as all three major DL frameworks would now be supporting it. Finally, it would also make the development of applications that operate upstream and downstream of deep learning frameworks easier to develop as a single framework agnostic method could be used in conjunction all DL frameworks. ## User Benefit @@ -37,12 +39,14 @@ headline in the release notes or blog post? Users who wish to utilize other GPU accelerated frameworks like cuDF, cuPy, etc would be able to do so without expensive copy operations. By doing direct dataloading, feature engineering and preprocessing on GPU we see 10-15x speedups over traditional workflows involving CPUs to prepare the data for model readiness in other frameworks and they would be immediately available in tensorflow. -Along those same lines users would be able to develop preprocessing or other GPU based functionality and be able to support integration with all dl frameworks simplifying development efforts when creating solutions that are upstream or downstream from deep learning models. +More generally, users would be able to develop preprocessing or other GPU based functionality and be able to support integration with all dl frameworks simplifying development efforts when creating solutions that are upstream or downstream from deep learning models. A blog post or release notes headline could read "Tensorflow now supports dlpack enabling interoperability with other GPU powered frameworks like cuPy, cuDF, DGM, TGL, PyTorch, and MxNet." ## Design Proposal +@Santosh-Gupta @a6802739 @futurely @jermainewang This is where I need help. + This is the meat of the document, where you explain your proposal. If you have multiple alternatives, be sure to use sub-sections for better separation of the idea, and list pros/cons to each approach. If there are alternatives that you @@ -59,6 +63,7 @@ Factors to consider include: * [compatibility](https://www.tensorflow.org/programmers_guide/version_compat) * how will this change impact users, and how will that be managed? +@tobegit3hub asked: The TensorFlow Tensor object provide API to get the array data of tensor. input_tensor.flat().data() @@ -90,4 +95,4 @@ TensorFlow has added conversion between CPU Tensor and numpy array. ## Questions and Discussion Topics -https://github.com/tensorflow/tensorflow/issues/29039#issuecomment-527520270 Outlines the key issues that need to be addressed, namely that a synch is required to ensure the tensor information is valid. Supporting \_\_cuda_array_interface\_\_ is another option as well, although cuPy and cuDF have opted to support both. +https://github.com/tensorflow/tensorflow/issues/29039#issuecomment-527520270 Outlines the key issues that need to be addressed, namely that a synch is required to ensure the tensor information is valid. Supporting \_\_cuda_array_interface\_\_ is another option as well, although cuPy and cuDF have opted to support both and ideally Tensorflow would as well. From 5b34b41753405a74b75b5956026a078fe25aefdf Mon Sep 17 00:00:00 2001 From: Even Oldridge Date: Thu, 17 Oct 2019 16:56:00 -0700 Subject: [PATCH 073/365] Update 20191016-dlpack-support.md --- rfcs/20191016-dlpack-support.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rfcs/20191016-dlpack-support.md b/rfcs/20191016-dlpack-support.md index 339bd13f6..2c0556de9 100644 --- a/rfcs/20191016-dlpack-support.md +++ b/rfcs/20191016-dlpack-support.md @@ -3,13 +3,13 @@ | Status | (Proposed) | :-------------- |:---------------------------------------------------- | | **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) (update when you have community PR #)| -| **Author(s)** | eoldridge@nvidia.com, AN Other (you@example.org) | +| **Author(s)** | eoldridge@nvidia.com, @futurely | | **Sponsor** | A N Expert (whomever@tensorflow.org) | | **Updated** | 2019-10-16 | ## Objective -This document proposes the adoption of dlpack (https://github.com/dmlc/dlpack) as way of passing tensor data to other frameworks without leaving the GPU and without a copy per [24453](https://github.com/tensorflow/tensorflow/issues/24453). dlpack is a community effort to define a common tensor data structure that can be shared by different frameworks. dlpack is currently supported by cuPy, cuDF, DGM, TGL, PyTorch, MxNet. +This document proposes the adoption of dlpack (https://github.com/dmlc/dlpack) as way of passing tensor data to other frameworks without leaving the GPU and without a copy per [24453](https://github.com/tensorflow/tensorflow/issues/24453). dlpack is a community effort to define a common tensor data structure that can be shared by different frameworks. dlpack is currently supported by cuPy, cuDF, DGM, TGL, PyTorch, and MxNet. The interoperability of dlpack would allow for fast on-GPU communication between TensorFlow and these frameworks opening up a wide range of use cases outlined below. It would further enable \_\_cuda_array_interface\_\_ interoperability through cuPy/cuDF which support both methods providing a way to transfer data to Numba, PyArrow and other frameworks that have adopted that method, although [a similar request has been made to support that method of interoperability](https://github.com/tensorflow/tensorflow/issues/29039) and ideally both would be supported. @@ -21,10 +21,10 @@ to show how this design addresses the problem? Which users are affected by the problem? Why is it a problem? What data supports this? What related work exists? -DLPack is a community effort to define a common tensor data structure that can be shared by different frameworks allowing data to be quickly shared often with zero or minimal copy. One of the main bottlenecks when trying to achieve GPU performance when operating across different frameworks is I/O and data formatting. The transfer of data between GPU and CPU or between formats is costly to the point where many operations become faster to simply run on the CPU because of the additional costs associated with moving/transforming the data. Even when mechanisms exist to copy data without leaving the GPU, memory constraints limit the application because two copies of the data are required. By implementing dlpack within TensorFlow there would be a way to transfer data directly between frameworks, enabling the development of a range of applications that weren't previously possible but are currently available in PyTorch and MxNet. +DLPack is a community effort to define a common tensor data structure that can be shared by different frameworks allowing data to be quickly shared often with zero or minimal copy. One of the main bottlenecks when trying to achieve GPU performance when operating across different frameworks is I/O and data formatting. The transfer of data between GPU and CPU or between formats is costly to the point where many operations become faster to simply run on the CPU because of the additional costs associated with moving/transforming the data. Even when mechanisms exist to copy data without leaving the GPU, memory constraints limit the application because two copies of the data are required. By implementing dlpack within TensorFlow there would be a way to transfer data directly between frameworks, enabling the development of a range of applications that weren't previously possible. Existing applications that take advantage of dlpack include: (adding my own and those listed in , other contributions needed) - - Inline on-gpu preprocessing of tabular data using cuDF to prepare it for the model (normalization, categorical encoding, etc) improving preprocessing performance by 10x over pandas and CPU + - Inline on-gpu preprocessing of tabular data using cuDF to prepare it for deep learning models (continuous normalization, categorical encoding, etc) improving preprocessing performance by 10x over pandas and CPU - Larger than cpu memory dataloader that iterates over parquet files and batch loads tensors, providing a significant speedup over traditional dataloaders for tabular data - [End to end acceleration of training on GPU](https://medium.com/rapids-ai/accelerating-deep-learning-recommender-systems-by-15x-using-rapids-fastai-and-pytorch-b50b4d8568d1); - Use of Tensorflow in conjunction with [tvm](https://github.com/dmlc/tvm) From ed52e9c43fabe1c4f463a4d9b13c3ef5396d5c96 Mon Sep 17 00:00:00 2001 From: Yong Tang Date: Fri, 18 Oct 2019 15:08:06 -0700 Subject: [PATCH 074/365] Update SIG I/O release team (#164) Signed-off-by: Yong Tang --- sigs/io/RELEASE.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sigs/io/RELEASE.md b/sigs/io/RELEASE.md index 35c589efe..5576f840b 100644 --- a/sigs/io/RELEASE.md +++ b/sigs/io/RELEASE.md @@ -82,3 +82,4 @@ Current Release Team: - Anthony Dmitriev - GitHub: [@dmitrievanthony](https://github.com/dmitrievanthony) - PyPI: [dmitrievanthony](https://pypi.org/user/dmitrievanthony) - Yuan (Terry) Tang - GitHub: [@terrytangyuan](https://github.com/terrytangyuan) - PyPI: [terrytangyuan](https://pypi.org/user/terrytangyuan) - Bryan Cutler - GitHub: [@BryanCutler](https://github.com/BryanCutler) - PyPI: [cutlerb](https://pypi.org/user/cutlerb) +- Aleksey Vlasenko - GitHub: [@vlasenkoalexey](https://github.com/vlasenkoalexey) - PyPI: [vlasenkoalexey](https://pypi.org/user/vlasenkoalexey) From 618d02473bb33a0135df20e50fdbf64c21befa9a Mon Sep 17 00:00:00 2001 From: Even Oldridge Date: Mon, 21 Oct 2019 09:40:22 -0700 Subject: [PATCH 075/365] Update 20191016-dlpack-support.md Added @VoVAllen as contributor and tvm example --- rfcs/20191016-dlpack-support.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rfcs/20191016-dlpack-support.md b/rfcs/20191016-dlpack-support.md index 2c0556de9..fbc1205f4 100644 --- a/rfcs/20191016-dlpack-support.md +++ b/rfcs/20191016-dlpack-support.md @@ -3,7 +3,7 @@ | Status | (Proposed) | :-------------- |:---------------------------------------------------- | | **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) (update when you have community PR #)| -| **Author(s)** | eoldridge@nvidia.com, @futurely | +| **Author(s)** | eoldridge@nvidia.com, @futurely, @VoVAllen | | **Sponsor** | A N Expert (whomever@tensorflow.org) | | **Updated** | 2019-10-16 | @@ -27,7 +27,7 @@ Existing applications that take advantage of dlpack include: (adding my own and - Inline on-gpu preprocessing of tabular data using cuDF to prepare it for deep learning models (continuous normalization, categorical encoding, etc) improving preprocessing performance by 10x over pandas and CPU - Larger than cpu memory dataloader that iterates over parquet files and batch loads tensors, providing a significant speedup over traditional dataloaders for tabular data - [End to end acceleration of training on GPU](https://medium.com/rapids-ai/accelerating-deep-learning-recommender-systems-by-15x-using-rapids-fastai-and-pytorch-b50b4d8568d1); - - Use of Tensorflow in conjunction with [tvm](https://github.com/dmlc/tvm) + - Use of Tensorflow in conjunction with [tvm](https://github.com/dmlc/tvm); [TF custom op implementation of TVM](https://github.com/tobegit3hub/tftvm) - Use of Tensorflow in conjunction with [dgl](https://github.com/dmlc/dgl) Beyond the benefit of specific applications, Tensorflow's adoption of dlpack would further incentivize other frameworks considering its adoption as all three major DL frameworks would now be supporting it. Finally, it would also make the development of applications that operate upstream and downstream of deep learning frameworks easier to develop as a single framework agnostic method could be used in conjunction all DL frameworks. From 1e3e3d36d8291c0e0fcaa22aa3f5f4110797d058 Mon Sep 17 00:00:00 2001 From: Even Oldridge Date: Mon, 21 Oct 2019 09:55:10 -0700 Subject: [PATCH 076/365] Update 20191016-dlpack-support.md Added DALI as a benefiting framework --- rfcs/20191016-dlpack-support.md | 1 + 1 file changed, 1 insertion(+) diff --git a/rfcs/20191016-dlpack-support.md b/rfcs/20191016-dlpack-support.md index fbc1205f4..c0ae71983 100644 --- a/rfcs/20191016-dlpack-support.md +++ b/rfcs/20191016-dlpack-support.md @@ -29,6 +29,7 @@ Existing applications that take advantage of dlpack include: (adding my own and - [End to end acceleration of training on GPU](https://medium.com/rapids-ai/accelerating-deep-learning-recommender-systems-by-15x-using-rapids-fastai-and-pytorch-b50b4d8568d1); - Use of Tensorflow in conjunction with [tvm](https://github.com/dmlc/tvm); [TF custom op implementation of TVM](https://github.com/tobegit3hub/tftvm) - Use of Tensorflow in conjunction with [dgl](https://github.com/dmlc/dgl) + - Zero copy transfer of data in [DALI](https://github.com/NVIDIA/DALI) reducing memory requirements by half. Beyond the benefit of specific applications, Tensorflow's adoption of dlpack would further incentivize other frameworks considering its adoption as all three major DL frameworks would now be supporting it. Finally, it would also make the development of applications that operate upstream and downstream of deep learning frameworks easier to develop as a single framework agnostic method could be used in conjunction all DL frameworks. From ce069c4e9890aeb6be5f74a6a571ce73dc7ff078 Mon Sep 17 00:00:00 2001 From: Even Oldridge Date: Mon, 21 Oct 2019 14:24:43 -0700 Subject: [PATCH 077/365] Update 20191016-dlpack-support.md --- rfcs/20191016-dlpack-support.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20191016-dlpack-support.md b/rfcs/20191016-dlpack-support.md index c0ae71983..9232793cb 100644 --- a/rfcs/20191016-dlpack-support.md +++ b/rfcs/20191016-dlpack-support.md @@ -29,7 +29,7 @@ Existing applications that take advantage of dlpack include: (adding my own and - [End to end acceleration of training on GPU](https://medium.com/rapids-ai/accelerating-deep-learning-recommender-systems-by-15x-using-rapids-fastai-and-pytorch-b50b4d8568d1); - Use of Tensorflow in conjunction with [tvm](https://github.com/dmlc/tvm); [TF custom op implementation of TVM](https://github.com/tobegit3hub/tftvm) - Use of Tensorflow in conjunction with [dgl](https://github.com/dmlc/dgl) - - Zero copy transfer of data in [DALI](https://github.com/NVIDIA/DALI) reducing memory requirements by half. + - Zero copy transfer of data in [DALI](https://github.com/NVIDIA/DALI) reducing memory requirements. Beyond the benefit of specific applications, Tensorflow's adoption of dlpack would further incentivize other frameworks considering its adoption as all three major DL frameworks would now be supporting it. Finally, it would also make the development of applications that operate upstream and downstream of deep learning frameworks easier to develop as a single framework agnostic method could be used in conjunction all DL frameworks. From 01f3b0b5b59efb4f250dd24aa4f89ca76a0a5ad7 Mon Sep 17 00:00:00 2001 From: Even Oldridge Date: Wed, 23 Oct 2019 10:15:51 -0700 Subject: [PATCH 078/365] Update 20191016-dlpack-support.md Updated to add @alextp as a sponsor and to include his comments. --- rfcs/20191016-dlpack-support.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/rfcs/20191016-dlpack-support.md b/rfcs/20191016-dlpack-support.md index 9232793cb..354d67a7c 100644 --- a/rfcs/20191016-dlpack-support.md +++ b/rfcs/20191016-dlpack-support.md @@ -4,8 +4,8 @@ :-------------- |:---------------------------------------------------- | | **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) (update when you have community PR #)| | **Author(s)** | eoldridge@nvidia.com, @futurely, @VoVAllen | -| **Sponsor** | A N Expert (whomever@tensorflow.org) | -| **Updated** | 2019-10-16 | +| **Sponsor** | alexandre.tp@gmail.com | +| **Updated** | 2019-10-23 | ## Objective @@ -94,6 +94,10 @@ GpuExecutor::Allocate is a simple wrapper of GpuDriver::DeviceAllocate which uti TensorFlow has added conversion between CPU Tensor and numpy array. +Notes from @alextp: + +AFAICT it should be easy to take cuda pointers in and out of TF and use them to build dlpack structures from tensors or vice versa. The tricky part is that TF does not use cudamalloc to allocate memory but its own allocator whose internal state is stored on the CPU and matches the head of TF's compute stream, so we need to sync TF's stream before the memory is usable from dlpack and similarly sync other cuda streams before memory is made usable by TF tensors (and similarly we need to sync the streams when trying to free the buffers). + ## Questions and Discussion Topics https://github.com/tensorflow/tensorflow/issues/29039#issuecomment-527520270 Outlines the key issues that need to be addressed, namely that a synch is required to ensure the tensor information is valid. Supporting \_\_cuda_array_interface\_\_ is another option as well, although cuPy and cuDF have opted to support both and ideally Tensorflow would as well. From c8b0981eacdc1198f2ddf8791388a10d089809f6 Mon Sep 17 00:00:00 2001 From: hongye-sun <43763191+hongye-sun@users.noreply.github.com> Date: Thu, 24 Oct 2019 12:20:10 -0700 Subject: [PATCH 079/365] Update the discussions Add discussions from the review meeting and remove cancellation section which is out of the scope of the initial RFC. --- ...90829-tfx-container-component-execution.md | 51 +++++++++++++------ 1 file changed, 35 insertions(+), 16 deletions(-) diff --git a/rfcs/20190829-tfx-container-component-execution.md b/rfcs/20190829-tfx-container-component-execution.md index 9c903873d..bb19916a5 100644 --- a/rfcs/20190829-tfx-container-component-execution.md +++ b/rfcs/20190829-tfx-container-component-execution.md @@ -528,24 +528,43 @@ The container launcher streams the log from user’s docker container or Kuberne API. It will start a thread which constantly pulls new logs and outputs them to local stdout. -### Cancellation - -How the container launcher handles cancellation request varies by orchestrators: - -* Airflow natively supports cancellation propagation to operator. We will need - to pass the cancellation request from operator into executor. -* Argo doesn’t natively support cancellation propagation. Currently KFP relies - on Argo’s pod annotation to workaround the limitation and has been proven - to work. We will use the same process to propagate cancellation requests to - user’s container. - -In order to allow the user to specify the cancellation command line entrypoint, the Kubernetes -pod launcher will support an optional parameter called `cancellation_command` -from `ExecutorContainerSpec`. - -## Open discussions +## Discussions * In the Argo runner, each step requires 2 pods with total 3 containers (launcher main container + launcher argo wait container + user main container) to run. Although each launcher container requires minimal Kubernetes resources, resource usage is still a concern. + + * With an additional pod, it gives launcher more control over execution and reduce the discrepancy between different orchestrators. We decided to go with the platform launcher approach and the additional container resource can be ignored. + +* For executor container spec, will environment variables be supported? + + * It’s not added right now to the container spec. Most things could be passed down using command line and arguments. So there is a workaround right now. Also, environment variables can be platform specific. Kubernetes for example, has certain conventions that don’t apply in other platforms. Hence, this could be part of platform_config instead of spec. + +* Step 3 indicates we first create a DAG, then use node identity to apply platform configuration. Another possibility is to do it directly during DAG construction. For example, if user goes back and changes the DAG, the platform configuration may stop mapping well, and will need to be revisited by the user. Did we consider the second option? + + * We don’t want users to add platform configuration at the pipeline level since it won’t be portable. We want the same pipeline to be compatible with local run and say running on k8s. Right now, we’d like to keep the pipeline specification itself clean from platform-specific abstractions. + + * The current proposal uses the component name as the key for binding. Different instantiations may have late binding for their names. For example, if I have 3 ExampleGen, should we be binding to the name instead of the type? + + * The names need to be unique else compilation fails. The instance names are actually component id, which is enforced to be unique at compile time. + + * How is caching affected by container tags? We should be careful with using container tags, since these are mutable. We should be relying on digest instead. If we cannot safely get digest, we should disable caching so we don’t fail due to the inability to obtain the digest at runtime. E.g. ‘latest’ and ‘nightly’ tags are not good candidates + + * By default, if we provide a tag name, the image will be cached in the cluster. We should log an error if caching requirement cannot be met at runtime. Note that currently, executor code changes don’t affect caching behaviour. We should change the above and ensure caching takes the above into account as well. + + * Will we ensure we have adequate test coverage? + + * We will add e2e tests for both Docker container and Kubernetes container launchers. The former using Beam as orchestrator, and the latter using Kubeflow orchestrator. + + + * What are the major user-facing differences between using TFX DSL with these extensions compared with KFP’s SDK today? + + * here is a difference in how users will specify platform-specific configuration in the pipeline. In KFP’s SDK, the user specifies this in-place when writing the logical pipeline. In TFX DSL, the need to ensure the logical pipeline is portable necessarily means the platform configuration needs to be specified outside the logical pipeline, which may be slightly more cumbersome than the KFP experience today. Note that the separation of configuration sometimes appears in KFP SDK too, when users want to apply global settings. + + * We don’t support or provide mechanisms for users to control container lifetime, e.g. container cancellation. + + * A lot of cancellation operations are best effort anyway. Failures on cancel operations are hard to handle. Users need to understand from the document that we are not aiming to enable such operations. + * If user starts a long-running job from a container, and the pipeline is canceled, users may want the container to receive this message and cancel gracefully. + * Can we guarantee that workflows will not stop until we get confirmation of cancellation of long-running operations? + * This seems difficult, and best effort may be enough, given that this is all Kubernetes itself does today. From 754a6e21b2f92557bed9c5e1f7947cd1b2f711e7 Mon Sep 17 00:00:00 2001 From: Edd Wilder-James Date: Thu, 24 Oct 2019 14:44:29 -0700 Subject: [PATCH 080/365] Update 20190904-tfx-generic-container-based-component.md Fix status --- rfcs/20190904-tfx-generic-container-based-component.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rfcs/20190904-tfx-generic-container-based-component.md b/rfcs/20190904-tfx-generic-container-based-component.md index dd6b860b1..fed4091b7 100644 --- a/rfcs/20190904-tfx-generic-container-based-component.md +++ b/rfcs/20190904-tfx-generic-container-based-component.md @@ -1,8 +1,8 @@ # TFX Generic Container-based Component Proposal -Status | Proposed +Status | Accepted :------------ | :------- -**RFC #** | https://github.com/tensorflow/community/pull/146 +**RFC #** | [146](https://github.com/tensorflow/community/pull/146) **Author(s)** | Ajay Gopinathan (ajaygopinathan@google.com), Hongye Sun (hongyes@google.com), Makoto Uchida (muchida@google.com) **Sponsor** | Konstantinos Katsiapis (katsiapis@google.com) **Updated** | 2019-09-04 From 4ccf91469c0ef5d6bab7751d3e1aa20587838305 Mon Sep 17 00:00:00 2001 From: Zhuo Peng <1835738+brills@users.noreply.github.com> Date: Thu, 3 Oct 2019 09:59:49 -0700 Subject: [PATCH 081/365] initial commit --- rfcs/20191017-tfx-standardized-inputs.md | 692 ++++++++++++++++++ .../impl_tfxio.png | Bin 0 -> 51239 bytes .../oss_lib_org.png | Bin 0 -> 49047 bytes .../overview.png | Bin 0 -> 39507 bytes 4 files changed, 692 insertions(+) create mode 100644 rfcs/20191017-tfx-standardized-inputs.md create mode 100644 rfcs/20191017-tfx-standardized-inputs/impl_tfxio.png create mode 100644 rfcs/20191017-tfx-standardized-inputs/oss_lib_org.png create mode 100644 rfcs/20191017-tfx-standardized-inputs/overview.png diff --git a/rfcs/20191017-tfx-standardized-inputs.md b/rfcs/20191017-tfx-standardized-inputs.md new file mode 100644 index 000000000..a39b2ede1 --- /dev/null +++ b/rfcs/20191017-tfx-standardized-inputs.md @@ -0,0 +1,692 @@ + + +# Standardized TFX Inputs + +Status | Proposed +:------------ | :------------------------------------------------------------ +**RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) +**Author(s)** | Zhuo Peng (zhuo@google.com), Kester Tong (kestert@google.com) +**Sponsor** | Konstantinos Katsiapis (katsiapis@google.com) +**Updated** | 2019-10-03 + +# Objective + +* To define a common in-memory data representation that: + * is powerful enough to encode the following logical training data format: + flat + ([`tf.Example`](https://github.com/tensorflow/tensorflow/blob/abfba15cd9734cec7ecd3d0661b146fc251c842d/tensorflow/core/example/example.proto#L88)), + sequence + ([`tf.SequenceExample`](https://github.com/tensorflow/tensorflow/blob/abfba15cd9734cec7ecd3d0661b146fc251c842d/tensorflow/core/example/example.proto#L298)) + or structured data (e.g. + [Protocol Buffers](https://developers.google.com/protocol-buffers) or + [Apache Avro](https://avro.apache.org/)). + * all TFX components can understand and can support their own unique use + cases with. +* To define an I/O abstraction layer that produces the above in-memory + representation from supported physical storage formats, while hiding TFX’s + choice of such storage formats from TFX users. +* To define a bridge from the above in-memory representation to TF feedables + (i.e. Tensors and certain + [CompositeTensors](https://github.com/tensorflow/tensorflow/blob/abfba15cd9734cec7ecd3d0661b146fc251c842d/tensorflow/python/framework/composite_tensor.py#L1)). + +# Motivation + +## Fragmented in-memory data representations across TFX + +A TFX component may use its input data (data generated by ExampleGen) in two +ways: + +* it may need to understand the data and conduct analysis. Usually this + happens in [Apache Beam](https://beam.apache.org/), and does not involve a + TF Model. For example: + * [TFDV](https://github.com/tensorflow/data-validation) and + [TFT](https://github.com/tensorflow/transform) compute some statistics + over the data. + * [TFMA](https://github.com/tensorflow/model-analysis) may slice the + dataset by certain columns in the data. +* it may feed the data to TensorFlow. Note that feeding TF alone may not + require understanding the data. For example, TFMA may feed a TF model with + serialized tf.Example, which may be the raw form of the data. + +Currently, each TFX component has its own in-memory data representation to cover +the two use cases by a different approach: + +| | TFDV | TFT | TFMA | BulkInference | +|:---| :--- | :--- | :--- | :------------ | +| In-memory data representation | Arrow RecordBatches | Dict[str, np.ndarray] | str (raw data records), Dict[str, np.ndarray] | str (raw data records) | +| Understand the data and conduct analysis | input data is encoded losslessly as RecordBatches. | the in-mem representation may be lossy. | Relies on the model’s input layer, and the format is Dict[str, np.ndarray]. | N/A | +| Feed TF | N/A | the in-mem representation is TF feedable. | Feed “raw data” to the model. | Feed “raw data” to the model | + +This has created many issues: + +* Users of individual components need to adapt their data (if input format not + already supported) to each component they want to use. +* Individual components rely on unenforceable assumptions on how to interpret + the input data consistently. +* The complexity of adding new logical data representations (for example, + tf.SequenceExample) scales with the number of components. + +## The need for supporting new physical storage formats in TFX + +Two factors drive this need: + +* TFX needs to offer users more choices of the storage format, e.g, + [Apache Parquet](https://parquet.apache.org/). +* TFX wants to be able to choose the optimal storage format based on user’s + workload, in a user-transparent manner. A unified I/O abstraction would make + it easier to support a new physical format in TFX, since one would not have + to understand every single TFX component in order to implement such support. + +## TFX interoperability with the rest of the world + +If we choose a commonly available and adopted exchange format as our in-memory +representation, our users will be able to use TFX components with much less +effort on data conversion. This aligns with TFX’s long term vision. + +# User Benefit + +## TFX End Users + +While this change is transparent to end users, it will facilitate the design and +implementation of many user-facing features, for example: + +* Columnar storage format in TFX. +* Structured training examples. + +## Individual TFX component users + +We use TFXIO to refer to the proposed I/O abstraction layer. All TFX components +will start using TFXIO to ingest the data and have a unified way of representing +the data. Individual TFX component users would be able to implement TFXIO for +their own data formats / storage formats that are not supported by TFX. By +design, any such implementation will be readily accessible by all TFX +components. + +## TFX developers + +Developers working on TFX infrastructure will not have to understand the +internals of each component any more in order to make changes to I/O and parsing +(for example, adding support for a new storage format for the training +examples). + +Developers working on TFX components would benefit from sharing common +operations against the unified in-memory representation, or even higher-level +computations. For instance, suppose that we implement a sketch-based algorithm +to compute approximate heavy hitters over this in-memory representation. We can +now share this implementation inside both TFDV and TFT for their top-K feature +value computation. + +# Design Proposal + +This design proposes **a common in-memory data representation**, **a way to +translate that into TF feedables** (np.ndarray or EagerTensors) and **a set of +APIs** each component can use to get both. + +![alt_text](20191017-tfx-standardized-inputs/overview.png) + +## Common in-memory data representation + +[Apache Arrow](https://arrow.apache.org/) will be used as the common in-memory +data representation. Beam-based TFX components will accept +PCollection[pyarrow.[RecordBatch](https://arrow.apache.org/docs/python/data.html#record-batches)]. + +Each logical data format will have its own encoding convention, +[discussed](#logical-data-encoding-in-arrow) in the detailed design. + +We chose Apache Arrow because: + +* It’s Expressive enough. + * Lossless encoding of (conformant) tf.Example, tf.SequenceExample + * Can encode structured data (proto) +* It’s a columnar format. It works well with common TFX workloads: + * Column (feature)-wise analysis + * Feed a batch of columns (features) to TensorFlow. +* It’s OSS friendly. + * Community support for more storage format I/O (e.g. Apache Parquet) + * Friendly to other OSS data formats, both in-memory and on disk (e.g. + Pandas) + * Friendly to numpy / TF: many Arrow array types share the same memory + layout with numpy ndarrays and certain type of TF (composite) Tensors. +* TF neutral. + * Leaves the possibility of supporting other ML libraries open. + +## Translation from Arrow to TF feedables + +The analogy to this is parsing tf.Examples into TF feedables -- extra +information is needed in this translation because a +[`Feature`](https://github.com/tensorflow/tensorflow/blob/abfba15cd9734cec7ecd3d0661b146fc251c842d/tensorflow/core/example/feature.proto#L76) +can be converted to a Tensor, a SparseTensor or a +[RaggedTensor](https://www.tensorflow.org/guide/ragged_tensor) depending on the +[feature specs](https://github.com/tensorflow/tensorflow/blob/635e23a774936b5fe6fa3ef3cb6e54b55d93f324/tensorflow/python/ops/parsing_ops.py#L46-L49). +Currently this extra information is implicitly contained in the pipeline schema +(an instance of the +[TFMD Schema](https://github.com/tensorflow/metadata/blob/master/tensorflow_metadata/proto/v0/schema.proto)) +proto. + +Similarly, an Arrow column can be translated to various TF feedables. +[An extension to the pipeline schema](#tensorrepresentation) is proposed to for +a user to express the intention for conversion. + +The conversion can be efficient (zero-copy) in certain cases. It is +[discussed](#efficient-arrow-tensor-conversion) in the detailed design. + +## Standardized Inputs APIs + +We propose a set of APIs that TFX components will call, and need to be +implemented for each of the supported combination of {physical, logical} format. + +```py +class TFXIO(object): + """Abstract basic class of all Standardized TFX inputs API implementations.""" + def __init__( + self, pipeline_env, + schema: Optional[tfmd.Schema]=None + ): + pass + + @abc.abstractmethod + def BeamSource(self, + projections: Optional[List[ColumnName]]=None + ) -> beam.PTransform: + """Returns a beam PTransform that produces PCollection[pa.RecordBatch]. + + May NOT raise an error if the TFMD schema was not provided at construction time. + + Args: + specified number of rows. Otherwise, beam will try to adjust the batch + size automatically. + projections: if not None, only the specified subset of columns will be + read. + """ + + @abc.abstractmethod + def TensorAdapter(self) -> TensorAdapter: + """Returns a TensorAdapter that converts pa.RecordBatch to TF inputs. + + May raise an error if the TFMD schema was not provided at construction time. + """ + + @abc.abstractmethod + def ArrowSchema(self) -> pyarrow.Schema: + """Returns the schema of the Arrow RecordBatch generated by BeamSource(). + + May raise an error if the TFMD schema was not provided at construction time. + """ + + @abc.abstractmethod + def TFDataset(self, ...) -> tf.data.Dataset: + """Returns a Dataset of TF inputs. + + May raise an error if the TFMD schema was not provided at construction time. + """ +``` + +Where `TensorAdapter` is: + +```py +class TensorAdapter(object): + + def __init__( + self, + tensor_representations: Dict[str, TensorRepresentation]): + """Initializer. + + Args: + tensor_representations: keys are the names of the output tensors; values + describe how an output tensor should be derived from a RecordBatch. See + this section for details. + """ + pass + + def TypeSpecs(self) -> Dict[str, tf.TypeSpec]: + """Returns tf.TypeSpec for each tensor to be produced by ToBatchTensors(). + + TypeSpecs can be used to construct placeholders or tf.function signatures. + """ + + def ToBatchTensors( + self, record_batch: pyarrow.RecordBatch, + projections: Optional[List[TensorName]]=None + ) -> Dict[str, TFFeedable]: # TFFeedable: np.ndarrays or tf.EagerTensor + # (or compositions of them, i.e. + # CompositeTensors). + """Converts a record batch to batched tensors. + + Each will conform to the corresponding TypeSpec. + + Args: + projections: if not None, only specified subset of tensors will be + converted. + """ +``` + +Note that we will provide a default implementation of `TensorAdapter`, but TFXIO +implementations can implement their own `TensorAdapter`. A custom +`TensorAdapter` would allow a `TFXIO` implmentation to rely on a TF graph to +do parsing -- the same graph can be used in both `BeamSource` and +`TensorAdapter`. + +# Detailed Design + +## Logical data encoding in Arrow + +On a high level, a batch of logical entities (“examples”) is encoded into a +[`pyarrow.RecordBatch`](https://arrow.apache.org/docs/python/generated/pyarrow.RecordBatch.html#pyarrow.RecordBatch). +Features or fields (from structured records) are encoded as columns in the +RecordBatch. + +Note that +[`pyarrow.Table`](https://arrow.apache.org/docs/python/data.html#tables) offers +an abstraction similar to RecordBatch with the key difference being that a +column in a Table might contain multiple chunks of contiguous memory regions +while a column in a RecordBatch contains only one chunk. RecrodBatch is chosen +because we want to enforce that TFXIO implementations produce batched data in +the most efficient way (one chunk per batch). Users of TFXIO may construct a +Table from one or more RecordBatches since easy conversion from one to the other +is supported by Apache Arrow. + +This design aims to support the logical structure of tf.Example, +tf.SequenceExample or structured data like Protocol Buffers. Thus only a subset +of Arrow array types are needed. All TFX components will guarantee to understand +those types, but no more. Below is a summary of supported encodings: + +| Logical representation | Arrow encoding | +| :--------------------- | :------------- | +| Feature with no value | `NullArray` | +| Univalent feature (one value per example) | `FixedSizeListArray` (list_size = 1) | +| Multivalent feature (multiple values per example) | `[FixedSize]ListArray` | +| Sequence feature (list of lists of values per example) | `[FixedSize]ListArray<[FixedSize]ListArray>` | +| Proto-like structured data | `ListArray}>>` | + +However the design is flexible to support more complicated logical structures, +for example, k-nested sequences (tf.SequenceExample is 2-nested). + +Next we show that these encodings cover the logical data formats we aim to +support: + +### tf.Example + +[Conformant](https://github.com/tensorflow/tensorflow/blob/abfba15cd9734cec7ecd3d0661b146fc251c842d/tensorflow/core/example/example.proto#L78) +tf.Examples are assumed. I/O + parsing should throw an error upon non-conformant +instances. + +A key requirement derived from the conformant-ness is for the encoding to be +able to distinguish the following two cases: + +* a feature is present, but it’s value list is empty + + ``` + { + features { + "my_feature": { + bytes_list { + } + } + } + ``` + +* a feature is not present + + ``` + { + features { + } + } + ``` + + or + + ``` + { + features { + "my_feature": {} # none of the oneof is set + } + } + ``` + +Each feature can be encoded as: + +``` +[FixedSize]ListArray +``` + +Then, the feature value in case a) is encoded as an empty sub-list, while the +feature value in case b) is encoded as null. + +If we know that all the lists in a `ListArray` are of equal length (from the +schema of the data, see below sections), `FixedSizeListArray` can be used to +obviate the `O(N)` space overhead for lengths of lists. + +### tf.SequenceExample + +[Conformant](https://github.com/tensorflow/tensorflow/blob/abfba15cd9734cec7ecd3d0661b146fc251c842d/tensorflow/core/example/example.proto#L184) +tf.SequenceExamples are assumed. I/O + parsing should throw an error upon +non-conformant instances. + +A context feature will be encoded similarly to a feature in tf.Example. A +sequence feature will be encoded as: + +``` +[FixedSize]ListArray<[FixedSize]ListArray> +``` + +To avoid name conflicts with context features, all the sequence features can be +grouped into one `StructArray`: + +``` +StructArray<{'sequence_feature1': ListArray>, ...}> +``` + +### Structured data (e.g. Protocol Buffers / Apache Avro) + +A batch of structured records can be encoded as follows: + +* Each direct leaf field of the structure can be encoded similarly to + tf.Example. (`ListArray` of primitive types). +* Each sub-message can be encoded as: + + ``` + ListArray>> + ``` + +## Arrow to TF Feedable conversion + +### TensorRepresentation + +One or more Arrow columns can potentially be converted to multiple types of TF +feedables. + +For example, a `ListArray` can be converted to: + +* a Tensor, if given a default value to pad +* a SparseTensor to represent a ragged array +* a RaggedTensor + +The choice depends on user’s intents, which currently is +[implicitly](https://github.com/tensorflow/transform/blob/11afcff467f779ba6163686395582e69603987d1/tensorflow_transform/tf_metadata/schema_utils.py#L172) +expressed in the pipeline schema. + +We propose to create a new [TFMD](https://github.com/tensorflow/metadata) +(TensorFlow MetaData) Proto, `TensorRepresentation` to carry those intents implicitly: + +```protobuf +message TensorRepresentation { + oneof { + DenseTensor { … } // column_name, dtype, shape, default_value + VarLenSparseTensor { … } // column_name, dtype + SparseTensor { } // dtype, value_column_name, indice_column_names + VarLenRaggedTensor { … } // dtype + RaggedTensor { } // dtype, value_column_name, row_partition_column_names, ... + StructuredTensor { } // column_names + } +} +``` + +This proto is used in two places: + +* It’s part of TFMD schema: + + ```protobuf + message TensorRepresentationGroup { + map tensor_representation = 2; + }; + + message Schema { + repeated Feature feature = 1; + // … + map tensor_representation_group = 42; + } + ``` + + Note : + + * `TensorRepresentationGroup` allows different instances of one TFX + component use different sets of `TensorRepresentation`s. + * `tensor_representation_group` is **optional**. If the user does not + specify any, a default representation will be derived from + schema.feature to keep backwards compatibility. + * this field is **not** a sub-message of Schema::Feature, because a TF + feedable may comprise multiple columns + + Being part of the schema makes it possible to serialize and materialize the + intents for other components to use, which allows TFT’s materialization + functionality to have its own TFXIO implementation that hides the + data/physical format from the user. + + When generating the initial schema from the statistics of the data, TFDV can + propose a default set of `TensorRepresentationGroup`. The user may revise + the proposal and TFDV can validate `TensorRepresentationGroup`s in a + continuous manner. + +* The default implementation of TensorAdapter takes an optional `Dict[str, + TensorRepresentation]` at construction time. If a TFXIO implementation + choose to use the default TensorAdapter, it needs to provide them (may come + directly from the Schema). + +### Efficient Arrow->Tensor conversion + +The key to efficient conversions is to avoid copying of data. The prerequisites +to do so are: + +* Same memory alignment +* Same memory layout + +Currently 64-byte alignment is the standard in both Tensorflow's `TensorBuffer` +and Apache Arrow's `Buffer`. Forthermore, it can be guaranteed by implementing +our own version of `arrow::MemoryPool` that is backed by a +`tensorflow::Allocator`. + +The memory layout will be the same if right types are chosen at both ends thus +zero-copy conversion can be done, for example: + +* `FixedLengthListArray` (or `ListArray` of equal-length lists) -> dense + Tensors. +* `ListArray>` -> + [RaggedTensors](https://github.com/tensorflow/tensorflow/blob/3c2dabf53dd085c21e38a28b467e52c566c0dfaf/tensorflow/python/ops/ragged/ragged_tensor.py#L1). +* `ListArray>` -> + [StructuredTensors](https://github.com/tensorflow/community/blob/master/rfcs/20190910-struct-tensor.md) + +In other cases, copies can be avoided for the values, but some computation is +needed: + +* `ListArray>` -> `tf.SparseTensor` + * Need to compute the sparse indices from `ListArray`'s list offsets. + +The rest cases require a copy: + +* `ListArray>`(of non-equal-length lists) -> dense Tensors + +With TensorRepresentation available in the Schema, a TFXIO implementation may +optimize its decoder to choose the most efficient Arrow type. + +#### Conversion of string features + +Arrow’s string arrays (`BinaryArray`) have a different memory layout than +TensorFlow’s string Tensors, even with +[`tensorflow::tstring`](https://github.com/tensorflow/community/blob/master/rfcs/20190411-string-unification.md). +There is always some overhead in conversion, but with `tensorflow::tstring` a +Tensor of `string_view`s is possible, thus the overhead will be a function of +the number of strings being converted, instead of the lengths of the strings. + +#### TF APIs for conversions + +In TF 1.x we will use np.ndarray as a bridge as Arrow has zero-copy conversion +to numpy’s ndarrays. (not for string arrays). + +Starting from TF 2.x, we will be able to create EagerTensors from Python +memoryview(s) so that strings can be covered. + +## TFMD Schema + +[The TFMD Schema](https://github.com/tensorflow/metadata/blob/master/tensorflow_metadata/proto/v0/schema.proto) +is a pipeline-level artifact and in the scope of this proposal, it may serve two +purposes: + +* To provide optional inputs to the parsing logic for optimizations. +* To carry user’s intents of converting data to TF feedables. + +The two purposes don’t have to be served in the following cases: + +* TFDV should not require a schema to work and it does not need TF feedables. +* Some TFXIO implementation may not need the schema for either purposes. + +Therefore the TFMD schema is optional, and a TFXIO implementation: + +* should guarantee that the `BeamSource()`can return a valid + `PCollection[RecordBatch]` without a schema. + * Other interfaces may raise an error when a schema was not provided. +* does not have to require a TFMD schema for all its interfaces to work. + +## (TensorFlow) Trainer integration + +For TFX to freely choose the storage format for training examples for a user, we +**cannot** expose file-based or record-based interface to that user in the TF +trainer, because: + +* the user might not know how to open those files. +* there might not be an efficient representation of a “record” (this is true + for columnar storage formats like Apache Parquet) but only an efficient + representation of a batch of records. + +Thus we propose that to most users, the TF Trainer only exposes a handle to a +`tf.data.Dataset` of parsed (composite) Tensors. + +Each `TFXIO` implementation will implement a `TFDataset()` interface to return +such a `tf.data.Dataset`. This dataset contains logically a set of batched +(composite) Tensors that are of the same type as the corresponding +`TensorAdapter()` would return for a `RecordBatch`. See +[this section](#recommended-way-of-implementing-a-tfxio) about how to minimize +the code needs to be written for a new `TFXIO` implementation. + +The `TFDataset()` interface will accept common knobs that a user may need to +tweak: + +* Batch size +* Random shuffle + +## Code organization and OSS + +### `tfx_bsl` package + +TFXIO will be used by all TFX components as well as the TFX framework, making it +be almost at the bottom of the dependency chain. Moreover, a lot of +implementations details will be in C++, with python wrapping around, and we want +to make sure our TFX components pip packages remain pure Python for easy +maintenance. Therefore we propose a new python package +[tfx_bsl](https://github.com/tensorflow/tfx-bsl) (TFX Shared Basic Libraries) to +contain the implementations of `TFXIO` and other libraries shared across TFX +components. + +![alt_text](20191017-tfx-standardized-inputs/oss_lib_org.png) + +## Recommended way of implementing a TFXIO + +To maximize code sharing, the following way of implementing a `TFXIO` is +suggested: + +![alt_text](20191017-tfx-standardized-inputs/impl_tfxio.png) + +One would only need to implement the IO+Parsing-to-arrow in C++ once, and reuse +it in the BeamSource() and a format-specific Dataset Op that produces a +DT_VARIANT tensor that points to the parsed Arrow RecordBatch. Then we provide +one C++ library that translates the Arrow RecordBatch to Tensors, which can also +be reused in a TF op (as the downstream of the Dataset, or in a Python wrapper). + +# Alternatives Considered + +We’ve considered an alternative where +[**StructuredTensor**](https://github.com/tensorflow/community/blob/master/rfcs/20190910-struct-tensor.md) +is the unified in-memory representation, and **tf.Data** is the unified I/O +abstraction. + +StructuredTensor is equally powerful as Arrow’s StructArray so it’s able to +represent all our logical representations. + +Because StructuredTensor is a CompositeTensor, we could imagine that I/O + +parsing of a logical data format in a physical storage format is handled by a +specific tf.Data Dataset that yields StructuredTensors. + +We also need to be able to construct a beam source from such a Dataset (although +there is a non-trivial gap). + +The advantages of this approach are: + +* Less effort to integrate: adding a new format == adding a new tf.Dataset. +* Unified story across TF and beam. +* No third-party dependencies. + * Note that we can still provide an Arrow -> StructuredTensor adapter to + achieve interoperability. + +What this alternative does not change / address: + +* We still need the TensorAdapter API to convert from StructuredTensor to + other TF feedables, unless we are willing to only offer StructuredTensors to + our end-users (which might be the case eventually, but not likely to happen + soon). So a good portion of this proposal will remain mostly unchanged. +* We still cannot expose file-based or record-based interface to end-users in + the TF trainer. As that is a direct result of I/O + parsing being abstracted + out. + +The disadvantages of this approach are: + +* This tightly couples TF with TFX components, in the following ways: + + * Components will need TF to read the data in. + * Components that analyze the data (e.g. TFDV) will operate against + StructuredTensors, and the easiest way to to conduct certain + computations (for example, slicing a StructuredTensor or computing the + mean) with StructuredTensors is through TF ops and their python + bindings. + + Such a coupling is not in our favor because: + + * Some TFX components functionally do not require TF to work. For example, + TFDV can analyze any data set. TFMA can analyze a model while treating + the model as a blackbox. In both cases, the ML library that trained the + model is irrelevant and TF should not be assumed. And coupling with TF + does not only introduce a heavy dependency, but also forces the user to + learn about TF if they need to implement a TFXIO for their data format. + + * Operations against StructuredTensors boils down to Python + TF ops. The + overhead of either is much higher than just calling an Arrow C++ API + that does the same operation. + + * The main extension point of TF is Ops which don't understand the nested + structures. Compared to using Arrow’s C++ APIs, implementing an Op that + deals with StructuredTensors will be much complicated. + +# Questions and Discussion Topics + +## OSS build / release issues + +### We don’t have a strong representation in the Arrow community + +This has led to some issues. For example, the PyPI/Wheel packaging for pyarrow +currently is unfunded and lacks volunteers and there is a risk of support being +dropped, but we do rely on the pyarrow wheel as TFX is released on PyPI. + +### ABI compatibility with libarrow + +The OSS library, tfx_bsl will depend on Arrow and TensorFlow’s DSOs (dynamic +shared objects). Because both libraries currently expose C++ APIs, there are +always risks of incompatible ABIs as TensorFlow and Arrow are likely to be built +using different toolchains, we cannot completely eliminate the risks. + +With [Modular TensorFlow](https://github.com/tensorflow/community/pull/77), +which replaced all the C++ APIs with C-APIs, we will be able to eliminate the +risk by using the same toolchain that builds Arrow. + +Furthermore, the Apache Arrow community is discussing about an +[ABI-stable C-struct](https://github.com/apache/arrow/pull/5442) that describes +Arrow Arrays. This will allow to build Apache Arrow from source and link +statically with our code, and only talk with pyarrow through that ABI-stable +interface. + +Since in Google we build everything from HEAD, using the same toolchain, there +are no risks. + +## Performance + +We would have to convert from Apache Arrow dataframes to TF feedables / Tensors. +Sometimes this conversion cannot happen efficiently (requires copying out the +data or other computation). diff --git a/rfcs/20191017-tfx-standardized-inputs/impl_tfxio.png b/rfcs/20191017-tfx-standardized-inputs/impl_tfxio.png new file mode 100644 index 0000000000000000000000000000000000000000..7309b56ccf643ce8cb98d9537e6ae0a06dac951a GIT binary patch literal 51239 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 literal 0 HcmV?d00001 diff --git a/rfcs/20191017-tfx-standardized-inputs/oss_lib_org.png b/rfcs/20191017-tfx-standardized-inputs/oss_lib_org.png new file mode 100644 index 0000000000000000000000000000000000000000..1e706c8da871e79941da5446428d82620eccd789 GIT binary patch literal 49047 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 Womqz+aTKgPb==G6?{p9JrT+jl)_$M> literal 0 HcmV?d00001 From b9be95c7672e9c00d8f93c161a672e2a893515aa Mon Sep 17 00:00:00 2001 From: Zhuo Peng <1835738+brills@users.noreply.github.com> Date: Thu, 3 Oct 2019 10:09:18 -0700 Subject: [PATCH 082/365] updated the RFC number --- rfcs/20191017-tfx-standardized-inputs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20191017-tfx-standardized-inputs.md b/rfcs/20191017-tfx-standardized-inputs.md index a39b2ede1..c35abdb95 100644 --- a/rfcs/20191017-tfx-standardized-inputs.md +++ b/rfcs/20191017-tfx-standardized-inputs.md @@ -4,7 +4,7 @@ Status | Proposed :------------ | :------------------------------------------------------------ -**RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) +**RFC #** | [162](https://github.com/tensorflow/community/pull/162) **Author(s)** | Zhuo Peng (zhuo@google.com), Kester Tong (kestert@google.com) **Sponsor** | Konstantinos Katsiapis (katsiapis@google.com) **Updated** | 2019-10-03 From 75ea8f386bd7e6d10e158b5ecc4da090ad2ca4a3 Mon Sep 17 00:00:00 2001 From: Zhuo Peng <1835738+brills@users.noreply.github.com> Date: Thu, 3 Oct 2019 10:19:08 -0700 Subject: [PATCH 083/365] small fixes --- rfcs/20191017-tfx-standardized-inputs.md | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/rfcs/20191017-tfx-standardized-inputs.md b/rfcs/20191017-tfx-standardized-inputs.md index c35abdb95..ca5a2b9a9 100644 --- a/rfcs/20191017-tfx-standardized-inputs.md +++ b/rfcs/20191017-tfx-standardized-inputs.md @@ -186,15 +186,13 @@ class TFXIO(object): @abc.abstractmethod def BeamSource(self, - projections: Optional[List[ColumnName]]=None + projections: Optional[List[Text]]=None ) -> beam.PTransform: """Returns a beam PTransform that produces PCollection[pa.RecordBatch]. May NOT raise an error if the TFMD schema was not provided at construction time. Args: - specified number of rows. Otherwise, beam will try to adjust the batch - size automatically. projections: if not None, only the specified subset of columns will be read. """ @@ -208,10 +206,10 @@ class TFXIO(object): @abc.abstractmethod def ArrowSchema(self) -> pyarrow.Schema: - """Returns the schema of the Arrow RecordBatch generated by BeamSource(). + """Returns the schema of the Arrow RecordBatch generated by BeamSource(). - May raise an error if the TFMD schema was not provided at construction time. - """ + May raise an error if the TFMD schema was not provided at construction time. + """ @abc.abstractmethod def TFDataset(self, ...) -> tf.data.Dataset: @@ -233,8 +231,7 @@ class TensorAdapter(object): Args: tensor_representations: keys are the names of the output tensors; values - describe how an output tensor should be derived from a RecordBatch. See - this section for details. + describe how an output tensor should be derived from a RecordBatch. """ pass @@ -279,7 +276,7 @@ Note that [`pyarrow.Table`](https://arrow.apache.org/docs/python/data.html#tables) offers an abstraction similar to RecordBatch with the key difference being that a column in a Table might contain multiple chunks of contiguous memory regions -while a column in a RecordBatch contains only one chunk. RecrodBatch is chosen +while a column in a RecordBatch contains only one chunk. RecordBatch is chosen because we want to enforce that TFXIO implementations produce batched data in the most efficient way (one chunk per batch). Users of TFXIO may construct a Table from one or more RecordBatches since easy conversion from one to the other @@ -441,7 +438,7 @@ This proto is used in two places: Note : * `TensorRepresentationGroup` allows different instances of one TFX - component use different sets of `TensorRepresentation`s. + component to use different sets of `TensorRepresentation`s. * `tensor_representation_group` is **optional**. If the user does not specify any, a default representation will be derived from schema.feature to keep backwards compatibility. @@ -492,7 +489,7 @@ needed: * `ListArray>` -> `tf.SparseTensor` * Need to compute the sparse indices from `ListArray`'s list offsets. -The rest cases require a copy: +The remaining cases require a copy: * `ListArray>`(of non-equal-length lists) -> dense Tensors From d679dfdf4cc80d8c508656d612cca9f1268bf645 Mon Sep 17 00:00:00 2001 From: Zhuo Peng <1835738+brills@users.noreply.github.com> Date: Tue, 8 Oct 2019 16:34:27 -0700 Subject: [PATCH 084/365] more fixes and addressed several comments --- rfcs/20191017-tfx-standardized-inputs.md | 27 ++++++++++++++++-------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/rfcs/20191017-tfx-standardized-inputs.md b/rfcs/20191017-tfx-standardized-inputs.md index ca5a2b9a9..471a4ede6 100644 --- a/rfcs/20191017-tfx-standardized-inputs.md +++ b/rfcs/20191017-tfx-standardized-inputs.md @@ -179,7 +179,7 @@ implemented for each of the supported combination of {physical, logical} format. class TFXIO(object): """Abstract basic class of all Standardized TFX inputs API implementations.""" def __init__( - self, pipeline_env, + self, schema: Optional[tfmd.Schema]=None ): pass @@ -226,17 +226,20 @@ class TensorAdapter(object): def __init__( self, + arrow_schema: pyarrow.Schema, tensor_representations: Dict[str, TensorRepresentation]): """Initializer. Args: + arrow_schema: the schema of the RecordBatches this adapter is to receive + in ToBatchTensors(). tensor_representations: keys are the names of the output tensors; values describe how an output tensor should be derived from a RecordBatch. """ - pass + def TypeSpecs(self) -> Dict[str, tf.TypeSpec]: - """Returns tf.TypeSpec for each tensor to be produced by ToBatchTensors(). + """Returns tf.TypeSpec for each tensor in `tensor_representation`. TypeSpecs can be used to construct placeholders or tf.function signatures. """ @@ -247,13 +250,14 @@ class TensorAdapter(object): ) -> Dict[str, TFFeedable]: # TFFeedable: np.ndarrays or tf.EagerTensor # (or compositions of them, i.e. # CompositeTensors). - """Converts a record batch to batched tensors. + """Converts a RecordBatch to batched TFFeedables per `tensor_representation` - Each will conform to the corresponding TypeSpec. + Each will conform to the corresponding TypeSpec / TensorRepresentation. Args: - projections: if not None, only specified subset of tensors will be - converted. + projections: a set of names of TFFeedables (mentioned in + `tensor_representation`). If not None, only TFFeedables of those names + will be converted. """ ``` @@ -263,6 +267,11 @@ implementations can implement their own `TensorAdapter`. A custom do parsing -- the same graph can be used in both `BeamSource` and `TensorAdapter`. +The default `TensorAdapter` can be constructed out of the Arrow schema (which +is required for any TFXIO implementation) and `TensorRepresentations`. The +latter is part of the TFMD schema. See [this section](#tensorrepresentation) +for details. + # Detailed Design ## Logical data encoding in Arrow @@ -659,8 +668,8 @@ The disadvantages of this approach are: ### We don’t have a strong representation in the Arrow community This has led to some issues. For example, the PyPI/Wheel packaging for pyarrow -currently is unfunded and lacks volunteers and there is a risk of support being -dropped, but we do rely on the pyarrow wheel as TFX is released on PyPI. +currently is unfunded and lacks volunteers, and the pyarrow wheel sometimes had +issues with TensorFlow ([example](https://github.com/apache/arrow/issues/4472)). ### ABI compatibility with libarrow From c47a0fe60838abf78e5f0be14abe645b129ec036 Mon Sep 17 00:00:00 2001 From: Zhuo Peng <1835738+brills@users.noreply.github.com> Date: Thu, 10 Oct 2019 08:38:36 -0700 Subject: [PATCH 085/365] clarify that StrcuturedTensor cannot encode null values --- rfcs/20191017-tfx-standardized-inputs.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/rfcs/20191017-tfx-standardized-inputs.md b/rfcs/20191017-tfx-standardized-inputs.md index 471a4ede6..6931f8dd0 100644 --- a/rfcs/20191017-tfx-standardized-inputs.md +++ b/rfcs/20191017-tfx-standardized-inputs.md @@ -605,8 +605,10 @@ We’ve considered an alternative where is the unified in-memory representation, and **tf.Data** is the unified I/O abstraction. -StructuredTensor is equally powerful as Arrow’s StructArray so it’s able to -represent all our logical representations. +StructuredTensor is almost equally powerful as Arrow’s StructArray, except +that it cannot encode null values (i.e. a missing value cannot be distinguished +from a null value). The discussion below assumes we extend StructuredTensor so +that nulls can be encoded. Because StructuredTensor is a CompositeTensor, we could imagine that I/O + parsing of a logical data format in a physical storage format is handled by a From c4329df079904a7b385aa6a08698265f62815968 Mon Sep 17 00:00:00 2001 From: Zhuo Peng <1835738+brills@users.noreply.github.com> Date: Mon, 28 Oct 2019 15:55:43 -0700 Subject: [PATCH 086/365] revised the RFC to add more background and better comparison against the alternatives --- rfcs/20191017-tfx-standardized-inputs.md | 246 +++++++++++------- .../double-translation.png | Bin 0 -> 27791 bytes 2 files changed, 145 insertions(+), 101 deletions(-) create mode 100644 rfcs/20191017-tfx-standardized-inputs/double-translation.png diff --git a/rfcs/20191017-tfx-standardized-inputs.md b/rfcs/20191017-tfx-standardized-inputs.md index 6931f8dd0..cd54a2423 100644 --- a/rfcs/20191017-tfx-standardized-inputs.md +++ b/rfcs/20191017-tfx-standardized-inputs.md @@ -31,25 +31,19 @@ Status | Proposed # Motivation -## Fragmented in-memory data representations across TFX - -A TFX component may use its input data (data generated by ExampleGen) in two -ways: - -* it may need to understand the data and conduct analysis. Usually this - happens in [Apache Beam](https://beam.apache.org/), and does not involve a - TF Model. For example: - * [TFDV](https://github.com/tensorflow/data-validation) and - [TFT](https://github.com/tensorflow/transform) compute some statistics - over the data. - * [TFMA](https://github.com/tensorflow/model-analysis) may slice the - dataset by certain columns in the data. -* it may feed the data to TensorFlow. Note that feeding TF alone may not - require understanding the data. For example, TFMA may feed a TF model with - serialized tf.Example, which may be the raw form of the data. - -Currently, each TFX component has its own in-memory data representation to cover -the two use cases by a different approach: +## Interoperability of TFX libraries +TFX offers a portfolio of libraries, including +[TFT](https://github.com/tensorflow/transform), +[TFDV](https://github.com/tensorflow/data-validation) and +[TFMA](https://github.com/tensorflow/model-analysis). These libraries can be +used in a standalone manner (i.e. a user can run TFDV without/outside TFX) +while on the other hand, one TFX component (a program orchestrated by TFX) may +use multiple TFX libraries under the hood. For example, there could be a +TFX component that transforms the training data by invoking TFT and +collects pre-transform and post-transform statistics of the data by invoking +TFDV. + +Currently, each TFX library accepts different in-memory data representation: | | TFDV | TFT | TFMA | BulkInference | |:---| :--- | :--- | :--- | :------------ | @@ -57,31 +51,55 @@ the two use cases by a different approach: | Understand the data and conduct analysis | input data is encoded losslessly as RecordBatches. | the in-mem representation may be lossy. | Relies on the model’s input layer, and the format is Dict[str, np.ndarray]. | N/A | | Feed TF | N/A | the in-mem representation is TF feedable. | Feed “raw data” to the model. | Feed “raw data” to the model | -This has created many issues: - -* Users of individual components need to adapt their data (if input format not - already supported) to each component they want to use. -* Individual components rely on unenforceable assumptions on how to interpret - the input data consistently. -* The complexity of adding new logical data representations (for example, - tf.SequenceExample) scales with the number of components. +When a TFX component needs to invoke multiple TFX libraries, it may need to +decode the data into one of the libraries’ in-memory representations, +and translate that into the other library’s. For example, in the “Transform” +component mentioned above: + +![alt_text](20191017-tfx-standardized-inputs/double-translation.png) + +Note that TFDV is invoked twice, with different data. Thus the translation needs +to happen twice. + +This has created several issues: + +* The translation is computationally expensive. In a real world set-up, such + translation could take as many CPU cycles as the core TFT and TFDV logic + takes in total. +* More such translation logic may need to be implemented to support expanding + TFX use cases -- imagine that TFMA needs to invoke TFDV to compute + statistics over slices of data identified by model evaluation. +* The complexity of adding new logical data representations scales with the + number of components. For example, to add SequenceExample support in TFX, + one may need to come up with an in-memory representation for each of the + components, to keep the consistency within the component. +* TFX library users whose data format is not supported natively by TFX would + have to implement the decoding logic for each of the libraries + they want to use. For example, had TFX not supported the CSV format, a user + would have to implement + [one CSV decoder for TFT](https://github.com/tensorflow/transform/blob/master/tensorflow_transform/coders/csv_coder.py), + and [another CSV decoder for TFDV](https://github.com/tensorflow/data-validation/blob/master/tensorflow_data_validation/coders/csv_decoder.py) + +A common in-memory data representation would address the issues. ## The need for supporting new physical storage formats in TFX -Two factors drive this need: - -* TFX needs to offer users more choices of the storage format, e.g, - [Apache Parquet](https://parquet.apache.org/). -* TFX wants to be able to choose the optimal storage format based on user’s - workload, in a user-transparent manner. A unified I/O abstraction would make - it easier to support a new physical format in TFX, since one would not have - to understand every single TFX component in order to implement such support. +Currently TFX (mostly) assumes tf.Example on TFRecord. However because TFX is a +managed environment, it is desired that its choice of physical format of data is +an implementation detail and is opaque to the components and the users. TFX +would like to explore switching to a columnar physical format like Apache +Parquet and it can be imagined that there will be a migration at some point. +Such a migration must happen in either of the following two ways: -## TFX interoperability with the rest of the world +* Change every single TFX library and component that needs to read data to + add support for reading the new physical format (into each library’s own + in-memory representation) +* Rely on an indirection through tf.Example and give up some performance + because of the translation. -If we choose a commonly available and adopted exchange format as our in-memory -representation, our users will be able to use TFX components with much less -effort on data conversion. This aligns with TFX’s long term vision. +Beyond easier migrations (which could arguably be one-time efforts), a good I/O +abstraction would allow TFX to choose the optimal storage format based on user’s +workload, in a user-transparent manner. # User Benefit @@ -116,6 +134,47 @@ to compute approximate heavy hitters over this in-memory representation. We can now share this implementation inside both TFDV and TFT for their top-K feature value computation. +# Requirements + +The in-memory representation should: + +* Be columnar. + + A columnar in-memory representation works better than a row based on under + typical workload of TFX libraries: + + Compute statistics over a column. + + Feed a batch of rows to TensorFlow. + +* Be able to losslessly encode the logical data format. Specifically, it + should be able to distinguish a null (unpopulated) value from an empty list. + + TFDV produces distinct statistics for nulls and empty lists. + +* Provide for efficient integration with TF computation. Ideally, using the + in-memory representation with TensorFlow should not require a data copy. + + Feeding TF is a significant TFX workload, both in terms of CPU cycles and + number of examples processed. + +* Have efficient Python APIs to slice, filter and concatenate. Or more + generally, have efficient Python APIs for data analysis type of workload. + + For example, TFMA may group the examples by “geo_location” and “language” + and evaluate the model for each of the slices. This operation would require + efficient slicing a batch of examples, and concatenation of slices that + belong to the same slice key (because the slices could be very small, and + inefficient for feeding TF). TFDV has similar use cases where statistics of + a certain slice of data needs to be collected. + + This type of workload is also significant in TFX, both in terms of CPU + cycles and number of examples processed. + +* Be interoperable with the rest of the world. + + The OSS world should be able to use TFX components with little effort on + data conversion. This aligns with TFX’s long term vision. + + # Design Proposal This design proposes **a common in-memory data representation**, **a way to @@ -600,68 +659,53 @@ be reused in a TF op (as the downstream of the Dataset, or in a Python wrapper). # Alternatives Considered -We’ve considered an alternative where -[**StructuredTensor**](https://github.com/tensorflow/community/blob/master/rfcs/20190910-struct-tensor.md) -is the unified in-memory representation, and **tf.Data** is the unified I/O -abstraction. - -StructuredTensor is almost equally powerful as Arrow’s StructArray, except -that it cannot encode null values (i.e. a missing value cannot be distinguished -from a null value). The discussion below assumes we extend StructuredTensor so -that nulls can be encoded. - -Because StructuredTensor is a CompositeTensor, we could imagine that I/O + -parsing of a logical data format in a physical storage format is handled by a -specific tf.Data Dataset that yields StructuredTensors. - -We also need to be able to construct a beam source from such a Dataset (although -there is a non-trivial gap). - -The advantages of this approach are: - -* Less effort to integrate: adding a new format == adding a new tf.Dataset. -* Unified story across TF and beam. -* No third-party dependencies. - * Note that we can still provide an Arrow -> StructuredTensor adapter to - achieve interoperability. - -What this alternative does not change / address: - -* We still need the TensorAdapter API to convert from StructuredTensor to - other TF feedables, unless we are willing to only offer StructuredTensors to - our end-users (which might be the case eventually, but not likely to happen - soon). So a good portion of this proposal will remain mostly unchanged. -* We still cannot expose file-based or record-based interface to end-users in - the TF trainer. As that is a direct result of I/O + parsing being abstracted - out. - -The disadvantages of this approach are: - -* This tightly couples TF with TFX components, in the following ways: - - * Components will need TF to read the data in. - * Components that analyze the data (e.g. TFDV) will operate against - StructuredTensors, and the easiest way to to conduct certain - computations (for example, slicing a StructuredTensor or computing the - mean) with StructuredTensors is through TF ops and their python - bindings. - - Such a coupling is not in our favor because: - - * Some TFX components functionally do not require TF to work. For example, - TFDV can analyze any data set. TFMA can analyze a model while treating - the model as a blackbox. In both cases, the ML library that trained the - model is irrelevant and TF should not be assumed. And coupling with TF - does not only introduce a heavy dependency, but also forces the user to - learn about TF if they need to implement a TFXIO for their data format. - - * Operations against StructuredTensors boils down to Python + TF ops. The - overhead of either is much higher than just calling an Arrow C++ API - that does the same operation. - - * The main extension point of TF is Ops which don't understand the nested - structures. Compared to using Arrow’s C++ APIs, implementing an Op that - deals with StructuredTensors will be much complicated. +## StructuredTensor + +We’ve considered an alternative where [StructuredTensor](https://github.com/tensorflow/community/blob/master/rfcs/20190910-struct-tensor.md) +is the unified in-memory representation, but it does not meet all of the +requirements: + +| | Arrow RecordBatch | StructuredTensor | +| :-------------------------------- | :----------------- | :---------------- | +| Columnar | Yes | Yes | +| Lossless encoding (nullity) | Yes | No (see remark 1) | +| Efficient translatable to Tensors | Yes (see remark 2) | Yes | +| Efficient slicing, filtering and concatenation | Yes | No (see remark 3) | +| Interoperability with the rest of the world | Good through Apache Arrow | +Needs adaptation (see remark 4) | + +Remarks: + +1. We could revise the design of StructuredTensor to include the nullibility + support. +2. Only when the backing buffers are aligned correctly. Currently both TF + and Apache Arrow has 64-byte alignment. And this can be enforced by + implementing our own Arrow MemoryPool wrapping a TF allocator. +3. See the comparison in [this colab notebook](https://colab.sandbox.google.com/drive/1SCQs88J4Tc6HKk2AfpYvELaJDxa4h4IQ). + * It’s worth calling out that Arrow is meant to be a data analysis library + and better data analysis support (for example, support for a “group-by” + clause) will be added over time. +4. We may gain similar interoperability by creating an Arrow to + StructuredTensor adapter. + * Beyond the technical aspects, we believe by having all the TFX libraries + directly adopting a popular OSS in-memory format will send a positive + message that TFX is meant to work well with the rest of the world. + +## tf.Data + +We’ve also considered tf.Data as the unified I/O abstraction. tf.Data has +support for a good number of data formats through +[tensorflow-io](https://github.com/tensorflow/io/tree/master/tensorflow_io). + +It's faily straightforward to implement a Beam PSource that wraps a file-backed +tf.data DatasetSource, and have that PSource produce Arrow RecordBatches, +but due to lack of support for [dynamic work rebalancing](https://cloud.google.com/blog/products/gcp/no-shard-left-behind-dynamic-work-rebalancing-in-google-cloud-dataflow) in tf.data, such an implementation would +not match the performance of existing beam PSources. + +While we cannot rely solely on tf.data as the I/O abstraction, the proposed +TFXIO interface does not disallow such a tf.data based implementation. So we can +still gain support for many other formats through tensorflow-io while still +using existing beam PSources for formats that have native support. # Questions and Discussion Topics diff --git a/rfcs/20191017-tfx-standardized-inputs/double-translation.png b/rfcs/20191017-tfx-standardized-inputs/double-translation.png new file mode 100644 index 0000000000000000000000000000000000000000..a65d1d87f14f706dd3e480a035afa5cf0fddc6af GIT binary patch literal 27791 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 literal 0 HcmV?d00001 From 273c62a1943c6986afd47858d0b4abb7c488fc21 Mon Sep 17 00:00:00 2001 From: Zhuo Peng <1835738+brills@users.noreply.github.com> Date: Mon, 28 Oct 2019 15:57:46 -0700 Subject: [PATCH 087/365] minor fix --- rfcs/20191017-tfx-standardized-inputs.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/rfcs/20191017-tfx-standardized-inputs.md b/rfcs/20191017-tfx-standardized-inputs.md index cd54a2423..0e848a4bf 100644 --- a/rfcs/20191017-tfx-standardized-inputs.md +++ b/rfcs/20191017-tfx-standardized-inputs.md @@ -671,8 +671,7 @@ requirements: | Lossless encoding (nullity) | Yes | No (see remark 1) | | Efficient translatable to Tensors | Yes (see remark 2) | Yes | | Efficient slicing, filtering and concatenation | Yes | No (see remark 3) | -| Interoperability with the rest of the world | Good through Apache Arrow | -Needs adaptation (see remark 4) | +| Interoperability with the rest of the world | Good through Apache Arrow | Needs adaptation (see remark 4) | Remarks: @@ -687,9 +686,9 @@ Remarks: clause) will be added over time. 4. We may gain similar interoperability by creating an Arrow to StructuredTensor adapter. - * Beyond the technical aspects, we believe by having all the TFX libraries - directly adopting a popular OSS in-memory format will send a positive - message that TFX is meant to work well with the rest of the world. + * Beyond the technical aspects, we believe by having all the TFX libraries + directly adopting a popular OSS in-memory format will send a positive + message that TFX is meant to work well with the rest of the world. ## tf.Data From 8bace72aa7d90ebca392de0912cdb866f1cb00f0 Mon Sep 17 00:00:00 2001 From: Anuj Singh <30765911+underscoreanuj@users.noreply.github.com> Date: Wed, 30 Oct 2019 12:25:42 +0530 Subject: [PATCH 088/365] Update 20180918-functions-not-sessions-20.md fixed a typo --- rfcs/20180918-functions-not-sessions-20.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20180918-functions-not-sessions-20.md b/rfcs/20180918-functions-not-sessions-20.md index ed11a3bcd..8c19ac595 100644 --- a/rfcs/20180918-functions-not-sessions-20.md +++ b/rfcs/20180918-functions-not-sessions-20.md @@ -219,7 +219,7 @@ A preview of this implemented in `tf.contrib.eager.defun` today (using [Au ### Functions that create state -In the above code, no `tf.Variable` objects are created inside a `tf.function` decorated function. This is makes it clear that the code will have the same semantics once wrapped. +In the above code, no `tf.Variable` objects are created inside a `tf.function` decorated function. This makes it clear that the code will have the same semantics once wrapped. Note that if the function naturally creates state only on the first trace, all is well: From 523f4955d33d49fce1687ba2adebb37fd34424b7 Mon Sep 17 00:00:00 2001 From: lzr-google Date: Wed, 6 Nov 2019 14:51:06 -0800 Subject: [PATCH 089/365] TF2 TPU SavedModel RFC Doc Draft --- rfcs/20191106-tf2-tpu-savedmodel.md | 333 ++++++++++++++++++ .../20191106-tf2-tpu-savedmodel/cpu_graph.png | Bin 0 -> 60150 bytes .../customized_embeddings.png | Bin 0 -> 46331 bytes .../20191106-tf2-tpu-savedmodel/tpu_graph.png | Bin 0 -> 107196 bytes .../tpu_result.png | Bin 0 -> 49504 bytes 5 files changed, 333 insertions(+) create mode 100644 rfcs/20191106-tf2-tpu-savedmodel.md create mode 100644 rfcs/20191106-tf2-tpu-savedmodel/cpu_graph.png create mode 100644 rfcs/20191106-tf2-tpu-savedmodel/customized_embeddings.png create mode 100644 rfcs/20191106-tf2-tpu-savedmodel/tpu_graph.png create mode 100644 rfcs/20191106-tf2-tpu-savedmodel/tpu_result.png diff --git a/rfcs/20191106-tf2-tpu-savedmodel.md b/rfcs/20191106-tf2-tpu-savedmodel.md new file mode 100644 index 000000000..d2f33622d --- /dev/null +++ b/rfcs/20191106-tf2-tpu-savedmodel.md @@ -0,0 +1,333 @@ +# TPU SavedModel Export API for TF2.x + +| Status | Proposed | +| :------------ | :------------------------------------------------------ | +| **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) | +: : (update when you have community PR #) : +| **Author(s)** | ylc@google.com, lzr@google.com | +| **Sponsor** | jhseu@google.com | +| **Updated** | 2019-11-06 | + +## Objective + +Provide an API to allow TF2 users to export TPU saved models for +inference, which: + ++ Provide a user-friendly way to specify which function to run on TPU; ++ Hides Graph construction and TPU inference specific logic (multi-core + support, etc) from users; ++ Allows specifying tags in SavedModel. + +## Motivation + +### Limitation of current `tf.saved_model.save()` + +MetaGraphDef allows saving customized tags. Current downstream components like +TPU model-server, TFX infra-validator use the tags to load the specific +MetaGraph. However tf.saved_model.save() does not allow users to specify the set +of tags in MetaGraphDef, but hard-coded the MetaGraph to have only one ‘serve’ +tag. + +### Special Logic in TPU Inference Graph + +Under the status quo, TPU computations have to be represented by a drastically +different graph from CPU. Inference-specific requirements (e.g. batching / +core-selection) also adds another layer of complexity. + +Some major differences between CPU and TPU Graph: + ++ As a protocol between TensorFlow Graph and TF2XLA, TPU device placement of a + Node is done by attaching `_tpu_replicate` attribute; ++ For multicore efficiency, TPU computations have to be encapsulated as a + function and saved in FunctionLibrary, and will be called by + TPUPartitionedCall. A TPUOrdinalSelector node has to be connected to + TPUPartitionedCall to do efficient round-robin core selection; ++ Variable nodes have to be lifted from TPU functions, rewritten as + VarHandleOp, and consumed by ReadVariableOp. + +Also for reducing the number of TPU compilation, serving platforms(For example, +Servomatic) prefers batching the inference requests with a few allowed batch +sizes. This requires wrapping TPUPartitionedCall in another function, and called +by BatchFunction. + +Below is an intuitive example of how a TPU graph is different from a CPU one: + +![Original CPU Graph](20191106-tf2-tpu-savedmodel/cpu_graph.png) +

Original CPU Graph.
+ +![TPU Graph](20191106-tf2-tpu-savedmodel/tpu_graph.png) +
TPU Graph.
+ +### User Control of Device Placement + +There has to be a way for users to specify which part of computation should be +placed on TPU, because there’s no perfect device placement policy that can work +for every use case. For example even though dense embedding ops are allowed on +TPU, serving models might still want to run embedding lookups on CPU because the +embeddings are too big to fit on TPU. + +![Customized Embeddings](20191106-tf2-tpu-savedmodel/customized_embeddings.png) +
Example of user control. In this graph, both ‘custom_embedding’ and +‘dense’ can run on TPU. But users want ‘custom_embedding’ to run on CPU for +whatever reason, e.g. CPU computations can be parallelized, users don’t have +enough TPU resources, etc. In this case, there has to be a way for them to tell +SavedModel that only ‘dense’ is to run on TPU.
+ +## User Benefit + +Enable TPU Inference. + +## Design Proposal + +### User Facing API + +For General TF2 Users + +Users need to do the following things to export a TPU SavedModel in TF2.x: + +1. Replace @tf.function with @tf.tpu.function for functions they wish to run on + TPU; + + ```python + @tf.tpu.function + def predict_step(images): + ... + ``` + +2. Create main serving function and call the tpu function above. The main + function might have additional TF ops which can’t run on TPU (e.g. + `tf.decode_image`: + + ```python + @tf.function + def serve(images): + image_tensors = tf.decode_image(images) + return predict_step(image_tensors) + ``` + + And then create a signature: + + ```python + signatures = { + 'serving_default': + serve.get_concrete_function(...), + } + tags = [tag_constants.SERVING, tag_constants.TPU] + ``` + +3. Pass the both signatures to `tf.saved_model.save()`: + + ```python + tf.saved_model.save( + model, + export_dir='...', + signatures=signatures, + tags=tags) + ``` + +The resulting TPU inference graph looks like this: + +![Resulting TPU Graph](20191106-tf2-tpu-savedmodel/tpu_result.png) +
Resulting TPU Graph.
+ +For Advanced Users who need customized Ops + +In such cases, we provide the flexibility for users to tweak `@tf.tpu.function`. + +1. If users wish not to use TPUPartitionedCall, they can disable using + TPUPartitionedCall: + + ```python + @tf.tpu.function(use_tpu_partitioned_call=False) + def predict_step(images): + ... + ``` + +2. Users can nest TPU functions within BatchFunction: + + ```python + @batch_ops.nondifferentiable_batch_function + @tf.tpu.function + def predict_step(images): + ... + ``` + +3. User can also use their customized PartitionedCallOp: + + ```python + @batch_ops.nondifferentiable_batch_function + @my_partitioned_call_op_constructor + @tf.tpu.function(use_tpu_partitioned_call=False) + def predict_step(images): + ... + ``` + +For Keras Users + +Keras users only need to pass `export_to_tpu=True` to save to TPU SavedModel. +(Currently, we require the Keras model being saved to be completely +TPU-compatible.) + +```python +tf.keras.models.save_model( + model, + filepath='...', + export_to_tpu=True) +``` + +### Changes to TF2.x API + +1. In addition to taking the keyword argument `signatures`, + tf.saved_model.save() will take an optional argument `tags`. + + Originally, concrete functions specified by `signatures` will be saved in + one MetaGraph, which has ‘serve’ tag hard-coded. + + `tags` is an optional argument. It is a Python iterable, representing the + list of tags for MetaGraph. This allows user to specify customized tags. + +2. Implement an additional `@tf.tpu.function` decorator in + `tensorflow/python/tpu/tpu.py`. This decorator handles TPU rewriting under + the hood. + +3. An additional `use_tpu_partitioned_call` keyword argument for + `def_function.function()` and `Function.__init__()`. This argument will be + passed through to the place where PartitionedCallOp is created. Originally + all stateful functions will generate StatefulPartitionedCallOp. Now we + switch to TPUPartitionedCallOp, and this routing is done by checking the + value of `use_tpu_partitioned_call`. + +### Changes to Keras API + +Keras users would like `tf.keras.models.save_model()` to work directly for +exporting TPU SavedModel, without having knowledge of tf.function / tags / +signatures. The only way to achieve this is to hide those logics under +`tf.keras.models.save_model()`. + +After the change, `tf.keras.models.save_model()` will have two additional +arguments: + +1. `export_to_tpu`: Simply setting this to `True` will export TPU model; +2. `tags_signatures`: Optionally for advanced users, if they want to have more + control of what tags / signatures they are using, they can use this argument + as if they are using TF2.x saving API. + +## Detailed Design + +### TF2.x API + +Under the hood, exporter API is doing the following things: + ++ The @tf.tpu.function wraps user-specified function; ++ `use_tpu_partitioned_call` as an attribute in Function class is controlling + whether TPUPartitionedCall is generated instead of StatefulPartitionedCall; ++ Tag the MetaGraph with user-defined tags. + +Step 1: Use a new decorator to wrap TPU version of the user-specified TPU +function. It calls tpu.rewrite inside the original function to generate a TPU +version of graph. By default, this will create a tpu function. If users wish to +preserve both CPU and TPU function, they can set `preserve_cpu_fn=True`. + +```python +# tensorflow/python/tpu/tpu.py + +FunctionCollection = namedtuple('FunctionCollection', ['tpu_fn', 'cpu_fn']) + +def _rewrite_func_wrapper(func): + def tpu_fn(*x): + return rewrite(func, x) + return tpu_fn + +@tf_export("tpu.function") +def tpu_function(func=None, *args, **kwargs): + """Compiles a TPU function into a callable TensorFlow graph.""" + def inner_func(func): + preserve_cpu_fn = False + if 'preserve_cpu_fn' in kwargs: + preserve_cpu_fn = kwargs['preserve_cpu_fn'] + del kwargs['preserve_cpu_fn'] + + if preserve_cpu_fn: + cpu_fn = def_function.function(func, *args, **kwargs) + + kwargs.update({'use_tpu_partitioned_call': True}) + tpu_func = _rewrite_func_wrapper(func) + tpu_fn = def_function.function(tpu_func, *args, **kwargs) + + if preserve_cpu_fn: + func_collection = FunctionCollection(tpu_fn=tpu_fn, cpu_fn=cpu_fn) + return func_collection + else: + return tpu_fn + + if func: + return inner_func(func) + else: + return inner_func +``` + +Step 2: Pass the `use_tpu_partitioned_call` argument all the way through +to `functional_ops.py`, where TPUPartitionedCall will be created, instead of +StatefulPartitionedCall. + +```python +# tensorflow/python/ops/functional_ops.py + +if hasattr(f, "_use_tpu_partitioned_call") and f._use_tpu_partitioned_call: + outputs = tpu_functional.TPUPartitionedCall( + args=args, + device_ordinal=tpu_ops.tpu_ordinal_selector(), + Tout=tout, + f=f) +``` + +Step 3: Create MetaGraph for SavedModel. + +```python +# tensorflow/python/saved_model/save.py + +saved_model = saved_model_pb2.SavedModel() +... +meta_graph_def = saved_model.meta_graphs.add() +asset_info, exported_graph = _fill_meta_graph_def( + meta_graph_def, saveable_view, signatures, + options.namespace_whitelist, + tags=list(tags)) +... +``` + +### Support for Keras saving API + +Adding an argument `export_to_tpu` for `tf.keras.models.save_model()`, which if +set to true will rewrite the model for TPU inference. + +Adding an argument `tags` for `tf.keras.models.save_model()` which has the same +semantics as that in `tf.saved_model.save()`. + +```python +# tensorflow/python/keras/saving/save.py + +@keras_export('keras.models.save_model') +def save_model(model, + filepath, + overwrite=True, + include_optimizer=True, + save_format=None, + signatures=None, + tags=None, + export_to_tpu=False, + options=None): + ... + if (export_to_tpu and + (not tags + or tag_constants.TPU not in tags)): + checkpoint_graph_view = save_lib._AugmentedGraphView(model) + signatures = find_function_to_export_tpu(checkpoint_graph_view) + tags = [tag_constants.SERVING, tag_constants.TPU] + + saved_model_save.save(model, filepath, overwrite, + include_optimizer, + signatures, + tags, + options) +``` diff --git a/rfcs/20191106-tf2-tpu-savedmodel/cpu_graph.png b/rfcs/20191106-tf2-tpu-savedmodel/cpu_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9014e1113582fbc54896ad1029478461cacdca15 GIT binary patch literal 60150 zcmbTebyU?`7d8rrxRG!J(nxoABZ#ClBHbyS(w)-M4T6M#lz>PhA=2F~-Q9K9=A851 zZ+!pUF)m||Gf?+lzq#g`>zQ*t^VugQ-rZIrt(V(#59pUE_fb+rI9?!8f74r^OE?G%SG#!~aQ8Y4Qt3jKIL z@wTetLG|G!et&fN1g(SIzNx#={Cg|Ta=uzDyi@Ek;MITZnfd6vhi^TT!l70hkpv0{ z|L<#&(T}y?9li4v9HPiSuNFBt3#8ru{n2*@@w4gA3}M%22&8cTyto3m|NRYtw8a`h zkz=->q~XbbEBdCsBK&`s=Z61^Z?pbvJ^&8l`|uL!`;7L_Z{WXnX>g;cHOEi(|M&RM zrh`cT8Uly-6POY_a~W{{-;=?!-aq=^A7-iHxY~AaetG$2)p z8@)E_ls~H7yk(U2bQbn>H7WheXLQ^%RR6q4ZaeGUW@UL_UUoEJy18kXYg`W8ul;Qn&P>_7 z^WpM2Px4V!Rn;uFdP+EjQmCbtHYb_qnib1_l@3JCg;WdR|@@xOiW?lw@I9o^bljZp62#?!KQ-V3FuA4QD}}T&08yK@1l;DQ(Sa_;5#Z zzj}YIadlDCd~3aI%KzSfm0}AX<_#YV-_%1~=}CCMLCoaKqrU_9J1k{Cu3Rx1&nL5u z4PUtK>}ABbGV>9=q&j#ETisOz+^8qgVh~ahNT|F*V$`$Q+gTU&!uzFVHu6vz7loNf z`A~`#w}BQEK91v`)gcH1ut-{jhi@2Z51=GRgxXyxFTkyPwz3qdZ#KY0b*GF7rA3GItU&AAj$#)H=DkaCg_^b8Uv1 zr2Dnl-Q}hm+kIEiR)7}?=7&;@mVPAd9=w~!|6TtBDiDZGf(K~--ELn?7>*^fU7-Aj zV~a9y7Qd68H2M9933ibHAtu<7eEx?dHqMgJZ@w7mv(6_qoXQnY7>9{{JFUid?76=Dr#zK`sU3WJA|~1jNP3b z&#RNoqpgi>@*q(RLc;o(F1FtI)S;oFuCA`3Ath?s->$%}Od*fY=6IyMFw^*eX`c$< z(CyMhlGZB?QR(RDf`WoDLybF%@AzwH;VaZ-pP^og%lGy7M@2-SqM-@-+|ACcfBpJ3 zCnrbogP5C#|APx*8Dx>wFFQE(yjb}1Z<9H>a*E5(hNHG;3{~Cwzl~V&G6mgQN2L@P z4v9CUrKDU>$J9~~()hoYl=Ok0t}YF^XG+gccWV}+qN3PMmzS4;4{pc}@zQ$X#g!B? z1@ZCl4$#ZX%UOklGUx&x`~pFS8Luyy=S|9bDBiJj#G*WZSzhjaCr+wQ3Agsr6YjW56>WzBb~FXiRs$1SR>c0SV<6&Hsq@exE)b8t9r z_7PrqZ;vyHeiS3ukQ?#5J)MY%4~>pqsIk?vbAN+`goKLphy&rn#$YzwW&xUrCiUTYAR|?c~n)YDL?O} zgP0ZY@$pk)&m~sZUxX8^hd(u0A>8*lidv6V_WJ2xYdE1-Fd#vH?1VjW>MXjGl_VLa z+c?Z~-nU>HraW(cfS#N~dxgP_6JD)Za!z%{%fS)nHgCJ~A$t|4VSsUhGb1Cz$&cy$ z)^%oKr$UU}4V>;K-1_?Z6C@;VOZZionJv+XS+SDS7q?v=+ie8X zK~bqkJVm?M6NIHCs_0%yxAH-IOgUvTSU^zX^WgqdH$B6sx5~;J zh9J-inMejx^BWt5*d2!OE7TjR4Zbm5x6DdC^YgmitqJ@T6B9E#tG$Ma4l8O% z{{Zj$qY{l>hWO6y?OC}U%IX=8%qzZi)VpnJ%AXYqlF&Jnj(oWv`ONaf)@x($b?D%` ziH7AA#&0FAGFm!b%>gR8vdOZqW87>TvfnYx@puwz2*exGP{uND1)Fe9S#j5?rpW%t zy;{{Km^U;+Sw%hc!?N8y= zRqT)y(H@3_L=0J)z9Ykkzf-l21)|yNy862uy$$J99e@A+RaRD(rN$yNwy+4x`Knm> z)by|Xd+{;MmlsbFNJ&LNO@|=MPa+y6E3JgpI4|~b0^vjc^fO_6{+m02rey^}6t%+Z z@?R=$_u(uA1WjMvwr}6;hUkr|TBxaUo|sBhW#YYfVba82t@NCWlT*y6ueVoQ*O#t# z`j-P&Tue;%(EAk!KAru^Nj$QZ?XqTXa0AsiFn=DOr219eGKt~xcIx9Jiir3kvZAQ_ zO0SFmnXZ{vOtUESX#SOZpIdiz<>f&sJ!J7VcyD3f731rzcbk`ou5RW;#1d|j?#;sC z<@LVLe2l}-hQGI|1N%NoDZ`46UWbu+xZ;VoS?TGrSz33>&%~AVd~UgJ(H*Ujo*eWh-()<$sK4saP_i&{vEN9^cXAw~=_?Nl=p2b$7Rg6fYF2 zOsKel$Ohrx1R8^_n}qJkUYPleH-8IbRT~GV%5!! z?xnj_@z~vAv`>0gR#rwvqszXoyE}j5PWQ&fds|zUN}`@HTR}GLGLOYMl4TuUZf?~t zLwKl2by;g*1JkvR>mVl}G_tLX6ew&mF`1jS8y@;SdeZQsjSW_aBW8iJ=pf~b#647s zuGzc!tgU;io2MvbCx*@~WZ|p%MY(?_W1O1CwYc%>bwXVOSv>%in>ZGW4ct`KVojYx zx7~Ju{pNcK-7Fz?3I(-8x4yr=@8-4kn@`YL+_K%tCF-e&$li3gKOD1I5_C(!<>DgN2ABt=bTdV@@MdJbxuJ+5eRi}+lr5m*LT*8h>CJ{c4nU7^}`$rw3DByv@ z@qhvp0m7|;bWnX1c+GKHd3lg1OD8+Nzmf#W68ovR|N0}0%2)4ckw8)G2`=a_vnYaB zq^^ip*Vi8I?i-KKH}cM?X=v1nb;)CBpFa&16SbWvU%l)pp6Yaas8XPyUVKhk&WeIS zMy+3=&MzRac^YeEWVHDz2YMa21w$TER)9PRZP==>NSzRWcXoPscyxAl;^P9qNH!vR zXc6xrB7Fxe1s|n;BJMbQC@2h6nhhk9Lcd9BszNZh!?k56=Jh^+ewq_dAwxlDOxW4R#)Cp@YS~w641jC;!`TBlBMny;G zCqj>rTDir<%7;U#l_qtDLLuNx{3rZYV(a-keTO4vzr(p13~8 z5rws3eoU~=oSb(S2_c)D75uz>DG!;dvCR@AM@}I8iVJH&CSlr*aAkSfWp#K5cDl3s7aDM}Wn9B49lX-24}bA&i*GnVEZ=n+DvSNVu?D z2?rkxqCEiN32BQi0tyO>wY4>Kk_>g+?tEifV^k{#>^+djAZ!#BB{N9Nr4c|^!JQUK zZ1fbREqa&wFq;>g$pZ4?1o;9-#KlhqebD_Fvtx*U|Ngx^obvoQ6atLAQ2<@ly{rKS z;*C_xrqhq=Y7EhwFJHzis!5pIoBBc5-V90vu^#%f(j+mZR_~IwQFzomrDK%h(aD04xf)^*6Ev2BaZl4Qz zX!w4BCfYO&&Rzh581{b!pIzBH)CZynp`@`rT|G^Uoitm%$&C zVcu@B1@E{C#tar|(L*Fc5Ba4}8ra_1S&)}^*~7T=08n}WZV$LBKZds<0@UXe7G}W- zKi{3{Tw-11hiw%x9DsYd)E8ptBp!U_lpr^^1Z3zvr*ff_5l{AmGa#vOqY`sK=xJBp3NVL(jy_4CND?D6EP1 z+Xaz3_42hkoL>pn#@^nKDJ$}rub)4YGNKAcYte)XfMo(@;hKel(!JV=4H2-gux@W} z13!KH_ANO%8R`-6kX3vu!E<=i_<8&7|A&xRSYK3&`H0bGVH~BOBDk!`R9>S@#t5L( zaCCGuFfe%h_%Z07{?I}NVBWBbgB$JThX3mfoqXyCTHVSi*@yV+GS*`A^MHj09HK5r zD{ik4?gK>1A&SpWH-;!grL?uR-QC^Gi^PQ<4o(XkT!S1Ff)NvZz%LOc6<61bCa-Jt zZAzj?u)By3xSJ)#?~C*#5YP%oMnphGkB*MW$;mIEn1&C@ToE_~`2&(-^Ct+vB_Z#d zWN2)1@=v2qbh4l*b(mL4eZg)KAh`Lj^pXEXrV90ML+=x{Th$(JydM+HsSgxj8pXlM z=E&ipz34{}0aBD{_4s+PHQ*3cX#o236Kcc5-(!@|?CR*~1b%uU;QUpE{vJP=>R}yt z1g-!HI0Sf_MTgqy>1iAsoLuEiSe>U!LjQm)eqc8k>a7?yv=6`}FOLZWrglSnT5XYx z2X~kOcX;+Q8yY==FCLp78F>wnR#1oz4>t;sIe>?m;VJ(!Xj33TTrhwFjVXkz-eo_rXZ715 zO4I`~2*Z$pqwFJnAgnOiWTOret+1RZg}VC}!JIBa3Jwl2_I)6}AS?>eLns&-zkU8J zLW%jf%y1MDc4pyld}1DQe;fh%ik5)u+f`Izee@LUIEa9qm)kMu=&}WN zf{(7WVHUQw`+Ix&wDiz3gE%2XaPF$A;~?5W*XhyVPXqI7IT!_`R9`OAZ*FX`;-L<* z`CB|Stl(u~dA4lg|AycHF}ytNXq>JPwi`w^t*op#)B0q&FfcFx^wTHM)6>79Pk2L# z30i61H@-QvA#H2|0s`#p?1F-V0s=jVvGMUISKDRb9foVD=&(ELn*m%rnUXZ=#Bx(=jP@PdLTVRkk)r{s;aDXbaziJr38&k!AO_!cad@AnFoV)Kp@Oe z{pq>RkT>)4x@~Vqe4zta9#vHw77B4i2F#7^?d^??&n)7Sk|YAos3Y%H5rg8uCmF%9 zw8e^*_e7R8U4;?rKSe76$VkX?e^A|;aYdYQ8&XUcESErg6xjYPF!5vk*B7{#<`7+UXiUoAHpOX zgb9}B-M8X7n;K!yi%-rBJUl#PWPTr*TeI~sK1N24z2|fSnciBpm`j}tWFl}~CyBsO z^d0{7+U$%b8L|A^(cb=b%woPX9BzX8(?e#EOmaKf7@7{U$A;ZZQE|XYtE^0^myK-h zY;I-?wcQO^^(xYO8meZnrN}zh3q5E4EDu{*Jp@1}zc1p4+Jb_Ry<|XiMTdrBsO&(T zxe(Y>7(p8X{p(O0A+c=HVfQe25tRZ<2OemsadBMoFfm1b=>L^Hh@sDI>wdPQvC$yX z_iz&Qz}|O5kb_px?7ZNbH^S6En}DRGp!QdN;(EG_35#^lSB^72d+B&KF4bH`juSpr zW#VU4UfZ;%8<*WWggaiLDh+D$@^K^zEpmB#RNx zb9*OF-J6aC)dep>D)u0DxeUErhOvYd`YB93S63L{3CifUB|H8Mko>F;QN3YT%r^v1 zb>Q`DbxQqe&HH8Hy8tM8Qjea;E|;oZh4YwhlV_!u1C`nHOPb=MZpW$o_rZjg%-Yu9 zFD#zd+{cc7G3(D@I-Djjq~bbeSC-z2sbLr(dV5X(IcXxm)9L>1woBTD-1{gli`ACz z@zfKQCopU%#t>QPwJ=6>$<&YwWU`zTkgZN)p5;^ylu`-GvrWWV&8MS^A2YNlEGw~O zQ~0sa;G}Vuwq>MyMLH_&=;YXdSe=A>Rpa4NeF?wBW=QQ{2Pzqn;ZU*=M&aa#}V`3Sc5@eFh71eH!=(&I%3|(Q}KO+Ful?Ds@;?4E;d~Ys5^- zV-p%53-jjO1-rBa)#W0qt52Db;!K7mjGw;KEd6oP=P)MI1?D@8sI!aEIDS(J`HAYv=F%Ey$B-jQ))+JX37d}awQfexpQ!Zff;YS6 zQye-H+5H+XFA{QcK*oR7_@(89AeMZ?T)26gYLW^CB1vPFA{<&n{t&CS!cwox8P0AKgI2oVHF(QE5MWp)GqXZW^mQ zJ@M%F+!uqV)}dOxQ1XNxul9bK{n-FT8@9N&RoaS;jMXPnMg3}V`OfU-+-O*RN9b93 ztA{UOSQz*Q?ikjBt9DvfPtM*+uYAX@<5NAJ&A#7p@1Z1%jffi~Nq?EIL_?R*%_-Ma zcubPc9PhSHW5bL)Jd+d8=CQ;atAg9uw)(2NjKflhF7|;pz#-w|m>pih;OMAJ=bB4@-{9W2oAUS142{>5 zqQsxyTh$8NznBuKmJL;5hb{fn%%p>6riBpBrxmrg-*}ka z7Bup;$8ReqDa7~$Ux*QlTFm97o3k~Na%Z0tF@!~bQ(OoaZ67+F>L}hLrWhNlEC^3} z*Ad?a8?1v$h8y(q5A5f2c;v$qXT{OqdUBa~`H}@Hd_AfKjvguT`H8h2W{lLPP5b%j z3L|bSpK9~$mHO3Bnf5}vi~fGGlpT0s^V8wdnM9nDkER%B{kd(CYDnAKW_(PykPc^B z9qt1qE+PV}&El>00_oM%JT`|V=sCpmtGu9r_=Ctl0*O)>c*2=Nok7H}G$MUx1OYs~!-INI)w4upzGV7P_ zHUz|+^=7}MR4mRhTeYqzu{US8FVCtsLP~;h0wSUBhGG&tOsNUVbQ^|jjw4v#ZK@Jo zP5YvZCwlB@ew2M1-|Y9776F#3T481E>})09QEu#)%e{Ggnb&jOGtc?z2sW_yN5wVk zmMJ8Q4`+uQY=a`c{iVi!(G>$Vw6d_U8un<9u%Tiz;?iz*tu~L9 zQkE(1Pq20CkqTK_>%*x@R!WFx((zC3D-5uGxB>{UE8rVNKSA?(G~+Xmp+%j2Ns8Os zs}3*pw{wy1=T5pBN*Y~%Nh2D*o_xISvyf?vtb4UE)rN&OVN`1rU7t zO!{PIS$!2UT(-?x;~%n12Zm3S5?0?|rsbt_=E;i6B}eX}xmcuK(Vi#9W7{^*{+2Eh zdZ(1zJj`z1pyBn)Var(K?yqJ`jm>!V^eoC@reMj;G-4v|=lBju2b-#znOR$cJe&kZ zEDo$b61}TYq1O0A)74G#+OfJ}O4F|I*a0PN0d1LGJ%hrFnzP@)r-8bmiwwI`0aP zQ(hD^x}7(SRVu_)+-(K9?-Ls1o4i|3w68sz)aVCbt64HWchL%x8Obkr&T1|*$ zDqcIDa-{>r)7@3GIbUoONwn%h&c@T#EIwSuo~hEms~Kh;IaAxwi74BUGB-!o3XBMO zK0=@D{GH49CkhPL5nhS3-*jO^w#&Q75Wpb4#gc<>U!~bLY49L| zfwxg-6c|?k2JQpO7g%0{9ApAoVE=8eA8cm-&qQY8;6rEB3xY_~NQ8#kQ6PT7kOxGW zvop7Z|F}pX>{f_UfHMqCwCDcK@Gu?&Ewh@3Xn4n8A&;~2p;NevDnOn9Cyt?lMfZVC zT#ChWLB|jNvjx$7)6bHW^R`f>SUM5VmP>-o6Q67}G&De{X}_WOgs~-lp8;cs{M1zC zJ3Ip5C)w~&dr$zOkS)~uE^`3$Idf8RO-)UGy+@bZ!`tDZEe-fpeuJ=X-O|>!W@h(< zuoZCT^Kt&5wX5cm&=uYH(ia4D+4=s08SlrAzXu0)S7?`jH*IJTOn8HxoNDmUJO7k~ z^WvE8!Os%Rr!6We+5Hvpq$*xoMn=G4)3*}=Z|}P>BWXZ@oLjDzq$PmM z1jcBv*(5EHp~S_-3Gnj=hlG@U>i<1Pf#5F}V5s8bN`|RS- z$Xz%P_!xu*B^6c4#x{X1U731jCk=@HEFq5{f+B?~bw2lZfa?kP#R`}ZR@MUmRA6ui zZs%%{JrWG+FXZ4TDBJirq|WX4Hs0G)o$w{bfDI?(Wn2tb=cZI}GgskEE%Y3jISW0lRagfj}0EkNBx& zb~gQ&J_tES9mpK1YPY#2lp`S^aLec z+eB|LBQs#zSn)R2zlvs00zH$8iprk`47(0+iqXVE1SBLhfrI-W-B`Xe>a#*X^W+-> zJImxz#h?`@eiC7CK_J&~>DrlZB;2P8qQ{kO3v(k>e|}hTen{|5I8vaepujnJ`Eu89ogi> zLv3qoJK0bMvkbtT9?XeE&XBQkaD18A-qe_pmX-$CTWwwW<1NbG0~RjAun^tsZq%@5 zhD6X+zj6vfc6fLQ_SZ?+Ow_jr07Xk{W@Cev3{b-)ymoLiq;{MMc7)*e0Fksl79x;2 zG~M5MxZg`vYc_hE@5#+ZP;g*!f;00E;4n`a|DPuCRv zJaL?DrUs)?C!6h%NxVI)XLj8iy-iJnp|K#%>(E`qsEWZOAb=W+;**#yn=BZ;PEB2& zY`zu!D4OlMnxJ;D)`O$uu*6+3ayjR+ASWk>A)2t?~ai7uxklu;b67RS#MVKkk@4s_1erSvca|NGwWUEC?`Y&g(`0#ZWjk+jYymY z6#lSW{V#CXu$7LFgT|W-C;S-^uP<8i4@it;jWlH}*nVJ85Kz`t*VG)-vIl|&vV{R; zriM4`+yQK9eJ8%6Aix0&%U!bM><#@G8rn55Koh7gNaBqcL<_U%pApiWJMVLG{74DW zKm8d3o10l$H9-QG;-pkmRCIKq(BYw>it_T7vPCFtrbGg+-T_&-cPK#kkQ~|y^>iS9 z#SLI>r9lAsmptaZjSV`B)iGVk$H)I^LS|J-VUwq`$9#NzK;5eK!;XUlSxiErXv{)X z3JgMKXNgE&i^+lw6T!Zru(WbH^x-PO3KW*9saukjtQ|B60BXPx*ucP#IA-PTd$6>K z?=}dfpP8?OFKoHf0JtEN5kw-PtX{&?D#!t+>`qmNK-oDt16R#lQ;h>3gQ^!SJ=S|U zWa~b)04lJ_Np<1WAi6sYpkz{|PY8tWEVMVTkds3fIl�FBo{%uOKf!z3VJ0WonvF z()$Z>0eNs23~Ae!><)xf+X1iKf)9M1F8$7z$P07~WMbKh`hF>J7;7n07Z6&OhhCkG&d3mYnSqGDe;#pr8?K@Pmj1H5ZTp#Xp6 z0ETSd-nx{Spe}#%^=a}d3B2ZYzw67JaC8hn*xJQ_q7k=pjVEi>JxMPd)IvNBeIMU=~yiZT{WJr!7?3ypyXS<37a;1%1KT?~ zf`YQ~FEW@1(B9+?gU^XVMo|YiA`e7-DG(3vmZfqK7O6{2H_VjbdfO-mkOwW9hKr?+ z1yurJ4s-_&{HCDPLX?YJ5R!_Fr=LlfuZ3O`>PAf83M|tX0+x*z(6XX~b0`>*hWMo- zqw3#jvw`>F(9nD;9r95Q2?>z|L%;9DlWRf zmiJdjv@e)=s>5vMDum=v^j6YTrx6*5!O6xH7V?Um64X%4u)Hgp zc(Y3}$3t=Cd1Fm@hA8HXUl^E*p*W5~4=IlYOE8RJ>KAO7J>xe;h|qwpZK@)2QG7I} zkoup;^-Ev%A)=NnqK*W}^~y5-Yy9LZVEhX=NGWbrDl*FJvw)tA=<00S;AjnTS<)6E z1lLS^7PA99AoB6elyyBQpSUD?c02a`5$@at#E3RS+5+ zpak35-(O(lieG2;1Fav(L2yE!K+*zT9jG#Ed!A&L$&dmm7WgaxQJBaHM*`M^EkdEC zshfLycV{!UjdXzD0YyBRo{qF(%_rIQiX%K1=Oc;&p8%SAAXM0g4i69O0tu#YX|NS{ znwFLp=;<3Rf3YM5pJE1T`g*n z9>cUg?uW_pw)J|8-y@H+ox_JOc=#=1L32_sfmXNIl%o$Y5p|zG!};huZe9(_{SD&( z%g`U%XBFx5s3-<5E-n@pTg!ZPQ6w9ybl))xuZx4F(b4B#;cxP;fTXwK za7GCe@E*;Gfz|V}dU_-jCIAuvp#z~?UN~zQ>^#gNB2FHoTHJv?Ol1B2&cS1%RHv8l2U38++iU8x z^K)UZtN1fxAdKoI*|gGG_}t&d^0g8@MJ)A)D?o;b_x;pnUfbXA z?Uf}iJL%Y5!!uq7!M{mh%{_CxKER`1-?IwS8|tWMD;k@b*&awdU#5ZwIuLdBKRZ-+ zpqhvTeWCYDVxw2@Nuja`qDmaSmGn$ZXdFHPQ?2T{xEz}X`uh3- z^`5RZR1Gr&M>j})jer#x5&~azJ0{#;M@jYg3PE&L5TUg&b#jXDr{ZYsyB;NPiG+UY zSv?7tLJw)PsJ2UquE3LVZFYm0hi)~U{ zO>1G&hEvNbUMxp3zv%cwXOB#^x$?dtnQ+v{kDtBt3AzZF*=~8j^##ROWUOB;=g^p4 zLFp@7&J-G}=TtFtD(1DR6ky725%)vB`tqnST9Y=`{%D^isi0)DW@&i@chB06g?=i= zae|@RGIe>P1C}&N^J5MeUIJn4H)>J{*Rmb&1|0@wDCKhnQq>w?I6j_Pb;l)(xFC0f z%p7Vauaa|{D(*27A;&!{>EUpc?0cWL7Qsq_y*j^8^nV^M%c$+A;O7S_{%=mo!0)xE z^Pt2I8QLv?9`v92 zBpzyESYDiW=j>J7G3-!%RkY(^Vz2LU=^(FjbM3&wC;mt5bzjhoSD zD*2p>u3Pf>kXaEC5#bvJX}m_uw?_j;A=Ig95qo;8d?qxyQYjtp^HOzn7GN`<`z{`tz^0l#U-+0D%%NJ_fy!S59$R^X;Oi2$@KPs#)k5P z+Be&%S+sAwbQ@PFjslEW2h9grrtMfZPfW~@symm~iB_KQG{5sH zxia1U>!cK_AT%1dB!Ak;Go5m-Y=vVaGlvaomtP%kYv-GfOM#+i%UCK2OGCN4{_?z-;$;Czm;cl-+}@7mCkShTI}6^L?#k}=b5@bT75N|P@i!P%!QUVh)czxiSsOIWjiSN+wEh!Pp=@xbuD^``JlrGd| zQ!c5og=+K<={0E-DKT^fRxGWZ&g{mi=*{&7FYDTdJ)5s}D(siS(D*$RR}h6;oY2lM zrLde~RqMPe->+Hen&-f`T(34}!!|OzGH;|F`?gBf?-Hk-M-Rcl+B_yF&pg(m*?x)L z?fj%-7VhgS8A}wUm81;1iPhZh4f7eEv|bfGoxbXu)b797?S*A=mY&;=HGf7$bz-<* zi|3x)5R8~52`Nh?zIDFZWiQdBtI&vutSOzh`Y!uJyWXAV{;$2n4?fwf+A%>Oo%mv# z#b5faI5+Cmz<@|`hwHUNWZjx)==a<$_t5&7IllV|p4m#@fzJx2k@1U|kb?+N(raPz z54oNWM>-Rdh2@N_%X`T2+B?lPtP#7#VrSm@;=9G-CaLAc9PiI@%5%?I2xjXXt=Cbm zuXH?XIQiuA>3b_jv%wA}RR%vz7O%(VJf(>hn|gG@VDz`p`Ux9?x$i|gvmId_#Dsau zE?4Qpnr?;W!|Ga=v_i!i;@@4>)*P*@o4kwXgap)G{z}0S|9<)5a5r4rqwc%aAd@o_ zQ`ViP4?}^Ji;9|ZdYP&XH;Uz_L;P9UH*b2za;526=F-xw>fZU}xMt+NA1~kb#<1-A zNoT)dxqUqwnO(IN5Y~}TDK|n?_AQmQ(Pc&!KTR_@y7?0a7*lV$t>DKtY{fplbj z?EBXFOY55I`8p%|L!I6C)-HBn_yEF=6(t!PznY-*ou0LWOk#T6`hpi(Fi(*1kV^};H<#M~Zp1|-;j<(B!FqeUwfoXa6d#IkY0>AB^Dk@7$*Q8P$+QzK>6!0t%jOwX zY8_viTh-le=AGYN;T8-`c#aRAlH1QLe<~7Ko#C9le3`k#Jv}k`y~KP5zccBFuDQij zir(#(TC@9kd+hJe;}*~N=tKHsRoWuYXLprieg3wi&{g7@$Cfty(V3pLnN0MVc@$C) zdQ4FTFlxyjfaijZ>D?>M0t<&d0=t$|E2?{hVqWD9UCC3B2L5rZD$K2pCg4QJ%o+zf zZy4wO=;bpfRq{?TMv{*g2nhb*D>GO}@z2J`X3Kv*4ySylw#L;eCSY2P>b@qgxix=X zS@+JfdWxDT(8{d+*Et=x)md+Ku4dUy>#g#iFp}bW3bUz7la8D~R37bG&lw>y+I8cE zbJA)04tsYw1cwjOms7D0hA%j)I7cUVs_xnGl#vXVE$* zQ8V&ewY24SJl*3QW#n^*sn)7^4RW}oS&xc2!yl4D{$Y%d4!8vVe&OvW&CA_Y) zkGSxqk8&Yh8NYSW&7a%fZ(kn=_L~jb&nz{oZ%Wh+qnyuF*f{Ka8{~g1I#}5p$(yD$ zwX52`n$nwS^u(IEEov^nFm#*SUHsih+TsFiLv{%M?9C+_ge+O5U>yCm zsj^!|tyZGgnFp)e@QmruaI0(lQXNUCm`FOlr%v{V&4^b)cGIuM!HB;bDMbz}bd|A6 zdELhx`jx0xjqB!lTXyIGLtqTIXl8Yl=fE^scPvLiw5#sG*LnxJfs-v6$79FY0lM(J z%wIAqh@;z8>Do0E@fF!_gwfB6m##XB<>JDN*Dsm~u@%oR&1Qu{#!V}yBCeeC4K5_i ztEX`!jW)cw3e)!n$~6<`L}JFKF-{E$ekSd{YMigk^XFeEXd5hUA4e}qG#KzKr#w9h z3NEBV?{=)pObC#>N)pDEEyJa`^`21D?><8K^d~sRoQUiWK!rcV*o@a zWo-PS8p=f<%1mv|f9{Q#FQ3gA6qS_Lc}`TV)ZG7gJsj^o-or?`LdG_v{r1D% z)v!xz(z{J>g`P&t#o;l>MC|rZH0U4^lRXb=(P?FIqzslQq=LX^qE?NHGK{G2uW~4T zwb>&}nfm#f8@t!m6qV>Fv8jD%6Z=>FGpX;J+{_M7f8=1BE`kKlp-088X@j=ql@?pQ zT}jwOBume?r4jzQ`fLqT+IDPW-n>Sgk+RD&xO}CfW%SG=pBoDk#uNnt0!x;5lchwf z)a`oiy9zQ{oSa%27xP*8ADQ`=DJ+i9M8|Yo%hu#8%_l9YHACe3s*@H3d@38uR-GG% z791pWyz53QOJ%pmj>jelQ3J44i$53+4%*#%j!DXS{SKZsT?omwrTo7HMKcSlBtF+W z+Xw?qtC_AfjBRtQnx!|pQ(KlU1ZX+|VCob={rY%r8+V~zWk1u5yhqsnZwLDH9#65* zttAhOPO0@C0TD6h2d;%$=ewJ+aa;jhMoDAK`;(hXOPAB|4oem_J$r=(>M#nLL`Jd7 zn|Zm+7>g)Z?(V8;-QrUFkdZNy_YICESB)q&xI81}ZgK*uTk`JS%)O^c13sQ=`*#@0 zcsmw1JO2+;-yKi&`~S_!I984=BL^8}Rc7{9*(;KjgzRK*Ig&_4_6kKp_THkh$x1fa z*?Zrw^SOV&$9@0v{rYsyd5`OQU9amkp3mns;}bWoO5aATne16L_n!C8(nx2!=YrLv zxVFEhsyJA|qY0`;UUTw9Vf)>clXVlKQy!x|&7Jr+yK4_*(zx=7`67 zzv_PcFUOpifZ{K|e4f_|nHhYvsTRGnJ7{+3CUyVGg8KULsds1TtHSFi>5B%%*9j0S z6euVU4>-~09O=!q?d?0#JFJR+9qa2oW^H@ck!x2f&4{e=U>u4`;U4`?@WW0t^5aZN z!=aDKx7BK&qpwXw-u)JCk$a0_R4a~@Eq#~IUYAC{e2HXuurXQqZsBslQRT(+pQd^t6aCkJj#UCD`cGSk#($lbfBMruxPG@_++N6g?`8G^s$eec{OgVU z=TErKO31LV6gvvkjR3Vg{a3TY$r=m!4N!g0Srd$P;ctw_E-|)!YQl-H3`$NJxLf&c=p* zOwTL!UnLcj$cpil!8})>EprZOY-yPh>I1Lu<_BEvi{#{7n9iOaO^vTY<|SW=sHd*t z?$_w2YJ!}Arh=j&mH-MRC%_@OQUV_7cM_Q=tt$c?0u&KZl(e*2#`VH8Hv@oI+W(7o z|6K8b(F>JcuK2w|K%mJ5%Wj}i#Q&A7*6HTgv$cAaQ}WmwC4+#t*g8X|{>u8#uf|5` zN?V%TcIKwW%gW9MV)s&F0xc!6iWV0V`94rJ)s`QeE8L*WXvF z%5Q^)PBQ-17Q93c;U3&k_Ci-LXi zk1Z{G1&fUNhl2^p^M)SRu;OzO3^XGUz|dL&ZVWSkCVG_Tqe>d>Dxu@ajz$YpQBb7! z@qP`M7#G6qs(v_<>6SbR`v2CZuL~$2 z#x{$lQqeOp+1uG=2J3NCAMdTsdNm@+@qXWhQY&<^duZ-68h zozzkvD3k-{Kpg=}1t8BrBb5{{f@QzQ$A8wz0lX$K&dy9HIUkCQt!?<)|5wiCqa`U} zp<-41q;t9vDg%&t`wc4Tz(8{%q;^*?NtK9*h_ugM#GP72wmWKSYIp900g97FzLSH= z`8`-MVC+gpSAhZ#EMWi^5<#7}9^N!8EUYtOl}U^G)9^|{&WF((AwIVhWqE1osHuUb zXTfse;$sMFV*+IdNmIJP;GpBZE>m)lXw@>Oj%H_{jWICYJkCJFbtiqd$@&)-OxPn2 zRnUBVtG($8p21-O2}+7g9B3P`%7mmOAdKObU>HYfBIDsa5qr|q{oUEb{69}?Y8@|-UN`UAAgr6&^s?G&b*+5RTtFVG@JX~_^ z5Z<=aOM0OAJf~VeV z-3JE;9+Q3x%+$}A0OScG05mi-@COY|t37`Qbt6Fb0T2e=uPc4XXal?>DVF(^L}81L zE#D#T#xT`M|KnBVdplu~kwE{py7zEO(Z(6umJono^W-^&vMd_!KS>C0?;+35?GKM$ ze6LpCCp9sL&JGkMAxxIzQH()1Uc|0ao7V&SUpCh{e>%K#6@VW(xK`bL9z00efAvz8cnU-%{@;6t zf@;Ch+3`BGw4sr_&P)T9@`{p27bG46?b%1799&$E-mNeQ%8*HVwj@KR3onUQ@{BxOH=pGUdx2FOP_SE z(uRN1Spr}pEI38BKEUPy(h1tm!S5~%;6e(A6-VQ~E z@gssKmeXNSy!VF|rxL8mA|v=#KByz0q7oAmt3M*a3r`#*T3oN|S-?dp@o-AYXkPk@&R69@bV?fYv&$s=Bpfk54CQdm+diz+*%rPX`DQD_E6?p_N?# z?P1;~Cnv+CxH-uM4I({PnxTsaU{);R>LC`51$gGqmm)bYI&Q}{_V&JQGIy>rrf1nS zh=l0Y+Ij)>eu!9M)UYVI`a9VT%g>pi<@**3H6wD@BS!F0EiNx-aJ4I{sMwVmb()x5 z>W}S~_B$%g%nU|>;Kp`4Pr>agQG5wa>aY&%v6=-=XI_>W^`<>loa9r;^4|>+0#rCOiPR9w=fobbY%FT+6p$ zw0J~9UvO~~ao8VIQc?m!Z$9ls`9r`hL7oq>|Er7$Vdrj__)UNg{5g z3}6T(CC3~q_V@M(8YR^rv&M^s%-a00SsaOyx3acw0AOQW2gDS?RX6|HQvyy4d=uvF z*_po@p_O&y6b&*D@E}%XVnDzKwLlq}b1Viir5l28h$pAWIAyMrMTC`>3WX^G*O`Ej z@Ph7zJnU@%YoqqzXEQ(C#+cv0&MvphiiDh8#(4@y#KG!WF6iWpRz2flg*s6-e_VLi z*Je?edk!$rSezyU)CL#G5jY+RCqNTEL2X{MzmNt80g8M{NsN~+5e0hvH&R%k4%v4h zCMb~9SzTFS$3XX*i<1+9JSGBQEGRlu`@A@vXjXuH_KNt9fYmW8MN>8(i~I7e6U}YM>ft=A=Y$B9Wy101m<*w!2x; z_t)_dq(P~vm*sE6T7cBx86}}H>j%ASM69qo7(b==hw=MQIXEzl2oNg|cxk=2z*%gS zxW$u5;u?YGTPI%qHMrjYl3S2G@F3>mR*;hQaZ>wJQ*I?~0<>q}){?VQGNzJD+BB#Bc!DVp;`D}lkAHYc zRBN#BLMY)Pemmo;Y#=_ar64algBW=ovC|TvcdfOB^igvSnWbPY<4rtL`0#*CHc&VS zctO~0IepUXr%~N!?n1Mad3z57VSB&UM1qOG880JR)U?bzDb(?b*4H}wvi5Q zTK_qn6wiuSi(2^lby;LnOQ#x>|7!Yz)y8iH|JMu|WY6F`56>>h?%${Skah!7pm%TI zHX42U%smCVEFgzKDgW2StC3M97!?@!1_r_xqi_SMM)g5JkmJe~Ma3zW+$SQwM*w_Q zY;cP5e{nfYUL_BOe1v;a#`rz>&DRpH>mnlmsVMC*#*gIE3*#GoXlO`7u|>BzYwCVj z>br~=%Nl5Jb;*;PIEW~ysY&kWpT%Oq;B5xH}prXpR`2bpI>5 zT_F$)=TsD64j~A@2Otx~6-ZXwvc!fu*}o{HCiY^t))s}65Rf74NYz#TYT>kNTv=XS zbrVm47}fLaVdH8a8ZVXyUb5;rH#zRnO-OOB#mEOYAiV2Ru}U#7eM$}`UcQvH$A8;} zS?$f7%_Hg^!5Yv?0?etW5@3UO#??Tj71xQ0Odbc(K_e?tVl4MQ6z9~4#n@_QS0Ejf zOjAvCuf^1^A)klJdcw04^*mK67@_{KzV!OlD~l4H0UBAXMh+<4An(_CyWu1$>7oEN z2s3J!si^dj2Z&Ywaa$hpH10=E)_V2Nxe$dk$M6_z)d{?0K}=r_wC9xk!CYshi!(x+ zl!#kkXK$~T-A^G8x?`K)djq#K<&cE{0DZx%GCWaYIfvh z#56BlC0T{V&srtWR5WCk8hCg6dl!`hW+NcowG;$j3Xk(u7}M z>+)w#ORTSr?LQFM0g#rvcnS#i@$osdSLt3$cEK}41CM|hd5iH9A{fxqSJ1;u2VLvW zQ3Xz`7cXAi+u1?ML-v?u!nTv&jNV~V2O}{>#3yYwH*$hc$qk(AkE^gBd0Oh7QCqjt zKPzx@8tL$$eAV+PWHxP?lS_9|P_1m?%~_Q6*?xoXsc-(1TJx2h>U$U? zm>JDwHvGcF$bH}OVf*LS6qdP#1)t$S2jpBm z5a#~pi~!ld1_Uhh$)Z`;zjc16e5)o_C2pRUEmn-5){mxLTj~iGAfUji4Vk=9oe00< zm;WYn4r(4(`m`zUlp1rkscGK1V|v5vL)m(O)+2ofsjc~NhFh$b3*D>MroWFJXFVx= zR%^JfsWI-=oqpHoc@?wz_=<~GQBbLwW9{#)<>(Uo0{`g^z@~ren-qFPUwL2c-nSC#biu4Qy zb&6+rm&j(=cnrQqgoSN>!AXLdcmsZD!*fH7{^)bcQThDw`pSc2!cHdAo&r{~`zohK zG9K5?ifqd*0}QBr8dek&dKQZ%G`Tj-n0F(N~xq2E-5?Q`>ZOmkRo~Cq)%2Tq-8=& zU-iz-;ZId#>o23+)yKB4<7;QNgH~dgk3^~;0$5X#7x=Wvjsdk@9_@SY;b_MftzTI$a zTR2+PEbIOKjc|#STW-ZiI(%1o?LYS#eY$G*QC@y1?|$$;J@3mYn<(upxM~?H7;eoqzP-8`OF=J!&6!*;Ts;-Ip?bVKBagxe<$4DU-)dcf0|40g1~Yy;g)8~=c)m7 zI)8l$R7&|RKBIK4Dg0>Z;0!cgCHUbNNwdw_pN}FgWS`IW%(L<^gE-O^hh2up7L;j6 zfrfG1*Trm>m+dQz#)hf*?v45c92BtRM_qSo$sNEf_gz9J99^M1!t<&%QfA=W;(h(1 zD!GOFae%`8;#=qWRKjVdrGq<)pJMZ3kwf_pxKPO7PDH}sP@1S318xxZNMA7$*&{zY zUOKnbNr>ni%TV`Vk0A;xN-3Z!Dr(;iX&v!eVPhXZSF)_oJ8x>%a_+p`J#b_pgeT3++D!^4M(v=s7PQo9OfF~vSQ6JEx4F|yYy?JVVMh! zsDhH-8S3_J!=m)tRD72-FAmW_w=do6on3XY<{yN@%X_LeYkxa)lLTX?Y5{^YiNy7TD^iz?%$l{K^{3tmPB z#|nusWlra|AWC~!nz>9D!!61p?!J-E>*H`(vz}IEb#+3`9f&IetFbP*b84loNbk%`Y6K zm^F9)+0#T3b1Wbg-YPWuqnSD(&&5_tw}C?5>R&u>7#~s=?TmQt98je;^;seRlaqki z`M+PH7*vpKp`${PTBM2x<_}7sUdH`+u`GA;7Sq~coCNW9xx-;nYuxUB0wnG$niD5e zs{)h(XSt%6Cl{Z5-P&~s<>BNCk4J6o`E3+PEL75j-y&iJFGPr6NE{y=+#LLtyM1%G zpx{?f)<-LJ%yd)yp`c=s*fn;Zicd@8tbYN~QnSt*@n%lZeZ{3}dAU^7u5?`6ZcnoG zVe^NLHZ$fC@eaudNnzAV6jw$gcBk=y=;U_^X?9|L&S9$m*NEF!G&B-czsETLk~M?M zNEi=kg+*v*Fwok=3vAsbOA{{e?iHNPj?4HRsw-q(_4=W@-=eI6xuVH4Fl8W-9wfsG zZ5BgOD&kD~18L(rku&4rod|nLRnCpGG5Z_Ox(@8#EHjL*4)D^sAeiDJJ8t zhDAkBjU(Q)#@h!6pZd{`<_YVtEBFN~d|R`gnGt0D5PxvT)pb1iH(jy}M6DzL{434m zH4Z-_cC!8v66+F7ghR z165Qk`r*Ka6d^~^Xx1$EaKR%}WE44$TV&H-LvT3GQ?RIFG;ur?Tu^6<;Ez!f3?&;p zKU-;7R29y>8x2-oo(UkA=%O6y{zf1 z!s&m7ggXBCx{@})=l%Trlr#IRl1^blE?kKLHBI+4E(x}0BY7;J}ks~n<5&;NamFx-#5-E#8GrRLMOl=e1Z z@{`+{TOY-m!xVoA%=Q`R9u5v?DhijUvW%#GbUxv?kr2M+SEhHV&eUncH`d5Gb=yHC zX=0ld^I0kl$kATiKUk5nfo6!#$zLbLjD7NrP6*n}1%@!iOAB`%XO$}4=lizC{4}S? zU)>^0h#^@3(R2{pjE|Uc!RIEZGX*M}(25$VR23*1&=BLp|5JuhzgiOLzn;`J(9$)n zoC!#3&-sCiDc6AO@EE9UA3vIZ;grn`w?a>0v!=5FrSV#7!+~I(c*3I1;_z@}qSwM5 zbDc|>eV}odJ$J*E0MtO~8a7%b8sO{*b8*}2^byLLP3Go_g(LQEZf?N2fV!`(u&H&U z*24>kTIxohM9*9HO=L$N0Vh;`(e9>l4~@tEHe7$sIEVmQmWGC%u=28RV&?9sJFdpI zwi9(8{QHZ)XU{Y8n|P6?4qaw4 z=k@xcHbt+AI9|03l9JvEEv_8+Tk8{0SY&&T>KhN+ zW+s#Q7jQ%XJt@56&L4*A^5@T=L+<~0C}IW`D2sxnO{M57#EcH27(aZ*;`>J`A^dlq zU)O6hVNu(Lv+3w#A)X)4Uf)jVzRT^3`axg!SK)R6ZaQ7pOH5zXZ9*lci#-{v4?ixj zFhAV+8^xgd&4(rVII-Sgbo@qWm%UBBqm5&w_x_uJdWj!CWCi(4+vFNUi(CffMug%< z^-DHYU&r_UJzJR_S9N2{+&zI>n)h9CsZujIfeg%{-EJcNFgCE(O z9NYI)$<7&gVwU95c0grX!ar8Nb>{QNI^s&tNtwwW$&K$dCXo&T zZjRrrO8m|a7hJjC-<|vZnvsLDVCkmJeq;uB{=HG4_f|YxuiHO*B=WN-MRpg;CJ)fm z>vx)d%A4z$S5Eh^RO==zCg=CmJD(qoVd4$Fd~N@H=kh<=4vh}M7~0C5m$t<@wpd!QT z7hbidy1G;bDJVKTbYUP)aRPpzbNnRYbWk{djYOR1Rod^x`sad&6klu4LzULH^)}4sJ+$fZ1h~F$PtoQuUQFg^`KE7V|iR@IxeYvdmu68Q;se_qms2u zB|nHntsT^lSI{3AzVbiBVZ~~&7;ZX^iJi%}AEy1J%iHMXhbN#1?+~ute9M=HzHfNX zGfQntw7d3+QmO5u^kV`u6`vaas(#j@t2sA4^xbG!{Gawqh`ti2wi|u4@8okmwENSG z#6OT-KHNG=Zu>#O{!}|#IjI)r)j)4 z^mP zx%SN>en;NCx*6R~Ui6z?4?k#wI{sAPaHCYVKtWTMe)cd#;>D8B*KCis8H=JCMLRRM zwe9y#$sbRi2X^(2{~4Ij9_};r@cD56*zEk**W8)IuJ>P@|luGzOJTX_X;#IK&Tu2S6{c(St2bG-RX<~)1YzqY%s z_jlgutZ0Q~$Q;qyoUo;5uRM`b#;vo8N-Oyp-gmcK^3H{my3G6!=Q_C%$C;TTN%>V( zhaCb9mi&S=)YMaVqh&s8bKxPNKE-*x+lE67(RUU9+WxNY}{X# zh-0WT%fAOL9>M-c-gRf&Ju<_#Wdz@ZIuCR2|ATtlhe24=C);q+Ks5{nFF(JAy1I!y zjTkxPF{zNpti2{;v(QG@SBj1MW%jN%oNXS5an(l{OdcPa*+#5cZ!C-_t)A{kni&}= zM!LGLBr!G&Rom?xiShcShK{_<_%5(KPfJskCM!5}|13K<)xgas#r}!s!sPj?ea$|f zw*1i-Dn=5YT85cFSw{Kw>-ER+3-y)#klUKxkjz?qx7xU1 z%Z7i;QOVJZeg7WM4)-P%fd~YskBQC4J8$A@C(j~^4rRO#z8v3gbW1xsPWsL_I-H&R zxW%_-H@ralShXVf?c(#}v#&PayMC#z>dhQ=wN9R;f44o@AV0S{X_E4=&Z>NH!~LGV z{~q1`&YN0vfJIEiaw^v=hV$(5p0Um8hUEI)jY%8gdq0&fhJVdG`X*4nR7lw-`g-5m zmeaBDm2L;Ji1JZ~nM}__GCOHEH8 zf;RFXxWRkMc4uDrk510O@z&ceE5^%vk_Vxvqv;zEtvEY74_RvE=*`d1dp9K9M4c)^ z5)v2yMX7@yG-WO-=(GA1O@{IHCk&sD_l(CYCW6|Y`5*kP-|a|=e>zN`a^CXoLBxXe zO5t+DNe4^)Nw^13-__PPlJCAr7MMjHH%1>bvD7}R>&ZKwuLwB!eyn$AYf`cy`VJ@x zZHBDqbe}7&7mA#18nd%*`2-wkYJT*JL*}nyFqo()%94@1{-xSUkJWmy1!sDxw8wjf zAh|xc3~~ap{Gz5-o!l33k-XecVU}Y{zHTDRd)e&q4AV0WneT1ueK`_oCqLNcng3)e zvOQ~103_4e)lL7{Gw(p9q|Ix|sfYYKZeJ2k2`^NGETNyhZ zOGRO6c-!oo=}IB;+Ea(U>osdDD}qT~CEW$Q#V+YupS8H5jXY>892KvWF)f7LP{nad z`8(|Sl2ZKIq=Ri^{K|BkxuBGm8EtsNe5w zA?@D*q~xE`(S(BEfzXpTgh~XG{3}aMx&Lb7ff)WN_1p4t0-18m7caIC!)_4~m1)LY zltij)yrjMZf+d&aZ^I!j9v&W3!E)gcmj*)B5RYC`F%gb8c>F18v76q<$I)#?{^O&? z7n+FR3#Uh4FIF#_w60`kv`Fih}Mi)`7#PJ!vNx~ zl48LhW&<9XnV%X0{xH5m&>|U#iyJozKjmyPFt@zA@_32-)pJVJwlpRoe|UI!f3N$9 zb~jAGkN?0F;O_9qFMpc$9^NxcO9b6_*@n&IKMY4h9JD>0y>N6YKI6a8@+0Re8t#lg>MH|jNEiF$H zp4@%>YdJz#yRTCg2CXyDMQN2Am9#%^oTnAp{5dC6{b>SwTD1Nk`~IFvrV(N7cT@WSfBM|`(@#B zUM>??N+^|2fB9(7oc%ps-o5ZP&*Pyk{_JNbN+zlI6Y{UNeKB_{X=pg#n(NrfEeCKA zDM4_X{ymaYtxH+0Gh*Ag}!GDyz7NzAP_g z%!IzH!DjW(pHq1;51VuH^Eoio)YQn3HIE)La&iNGeF}MOEhB+9{s}D=D{MTt4a8IV z(f)H}1??omb9r4|Cwp7Fui>I&@Xs@mxJ|VL4km!ct|9e$1_+S391CgtZ-Tq$$$Do z8yXk<->_wbHqL;v;q4}}h8npq)rXQxuQK4HdNSsjkj5xjm%It2_%Mv7NX44UD~Lm_=_dCV zXqQ!T%32H3hPOIaJmV8-!Cs6FenF$Ghk#!gpgB2}uTV}~PtK0h5@=>C&!UwR5@ym{<&bCF$ysZGBU_(?Eb zC~=VlFAF=%1kVe=rP>hpj&y?D6dZPAvxlmCE=x}W4sy0hWtbJEfpDpkympOv|4C?n zd}hJJD-ha75HOmA$i|aQS?I=}@sxHr<>5MiZE9+L7wRph8XkVj&d{~N)n(unmfoaAloYj1CRx`6cN^j zG_&z3?tki=&P8Ff-!L2KLOpQVsx;pYVdHGTcTN*&_(9&MU@ijxT9RYV0?Vu#0dQ9= zx(74^i+Wc%ya|Ffpc_PGI{SJ8{0%_lDJa$&jv|!Vg&Pyejf&^2z2IHRRl5rD>X9iwz;|C4}`~sKu!-5r@%bC=L>&Var zuW|;LnA9u$%f?w&53x=048u2>KpQUtmyD1573O#P2+1l9 z;0+c8A_#{r=>#`ioE1e4KazW>k_jWcfgf-Gea;16hCvYr>`MXc>*j_QHOy!Uj$hgy zTySa%opv1b8zwOi@!bgrfkGOh*a;6onVWc>SuG1yO>Jf7( zfI=%3ESfS3IZ3$96xLoWilFX<_f@|X4~B{lR*i%903n#Uifpl} z+{+t_w6{8p{fvu<0Ly=Yz_vBg@COoCCAh52jL7C#OsVY3*T)jdfAVv1RGU3T>*c|* zoD1*mt=`Q&1vC%}yDH@7RAym5(D=OhX{p}(_WJqhX)pEfC$9SJtzOgfM%-3=$%?7u z?tp_c!y=5YbNd*~9k2U47nSEu^56SJ6Dw788g#gk$ZKZ;coJg7-jJYxOu)Yk z{`$W;*yejz@x6MVjl;|sTFuG#?VI|%oY7CFyBXTe{LVH;2;Ny8r=I$hFGT+-2~7*w z)&1rvr*PQO!*X@F?e3nWhx55^$j9k#?1WOQmQwDEKd1dTHZh;eFH8FV?bV1Cu;617 z>xOs`yIJe0(4NAUlZB*j*Q}l7=9fO0FSxv+_QQVC$lG_liG)kjVUUTNT1645h`2dl zSSlo}6nP^&sP%4HRKnAQ&)qIde{&doChA4cW9r|Q`S~O)A1?HyO5VSJWR#Qas&BIV z&gu8Fzhp;?7aniMs=U!R%`1;{)ZiKT*k(J)p_r_1_~nvWzo0hX89=UlA*z|JVW#LT zjQC$Hz+G7PCluH9Ol&{Suz0`Hcs%yBgT!OCv)Z|MS?61j{QmA`kD-j?j+KJb)?8i2 zi~a}SFZ8cT73-PhmA4DklndIqwAi^z8GD`??zS5FJjoGrSYT`zUD6MgRR474eXA`i zrvA&E8!5IiF9Fv7`>7%y{8@qTUG0s$)0O687cDNVs{F^BlvanEOYsWYQmOBas^AbD zL8PMMQ=QqF7z@V;t2szfYcFJb_l*23DIWNkmHk8UrO)?PJ)g62LAqSV>Z5$B{fOMk zuHZ%NHU)id7Fi5Aco)saQv!z`u3yhIb=~1W9jr3aQOg>~`I8*UqmyaXkDd#Hp?le_ z;ffzu|MC2|7Hdp~EvTu2yDY)uO~$U^d$QQhX||lo<)79^=DlwB!;C+rCI?Vdt=liJ ztRx8}XXBo@A#hU!uCAmtM>M>$U>;1xPw4pT4y#r)|%R zS?H+Y)F`TmP0RmenV7$J(yDQv+oHnoJIh}cUb2|iobsIY-mwcP3+sAKz2`ElQ0qXN zJN}1C`_J9g`JH!%_oPW3osg7`iWX3K=*OAmEo(bSb*iOT*04pXC|17gekk=cTB;WP6&Am3t zOU?TJu`f-bwQY9RNy}5!9INB*uuz)q9~AH81EaxPPya1MbAvN-!`)1j`Y|C{sXu78 zdlp8O&0pRo)WhVnt)xjXGZ=f5_2KmXlWd3c!K4DoWF>GyZZmpb!ukilr$x#SzSKMK`RXV6uB3~ajwQxiySdxje`D*H-*HFrKQg-Rw1Q7*9~TD2MPL(| z#KVJgrz)bjA^4I-@8CI3)Qh?{8WKrJCif_=UDD0ln_E0GsA}1Dns4rvn z`^d=14h`{Nft$z0<^#?yLa^sL8$tlrF}JoW0NpXBi&WTMKo>SqwdqDWBv=nHc3|%m zgg^lPal@__#Rp-A2d;P$C`-DJsjPa~3*q3p!)JxFFO6Uady73i3C?A^f}wx?{p}L9 zI3lQ*wsG4^-p9930x4_W1{*2*#*LyM+Z5qH(q?&}QAOMuwIYvw8#JO)K?2=rg9qE^ z7aS#RAU@j&0V{9RUgT)yq=`7B8T1;(8$h)Wq7KlIJYy3Bqdw4wh|kPR`xXQ;+HhVV zRA-@DZhznjdofTwUA?qe12=20a zP^coG{YGP4L0A z8rWR`0&Y-U{YRqh_MJQF{qzB@FY2Q{^)E49Bs6Kz;vTROBI({gV5c7-3fh3}n@al8 z>r{F4KP<6kt3x1x(49_9}}(8XUQqV&eL ztOIo~$s_A*l(}7HKE5|K6cm>Ah3LZ&8`dyzT!VoS<7mu_f!PH4G`TQ!ws)3RR=?C| zrHJG%A%qw>!M!$He&|z2Vp0MNbKnJ!J}jJtmK6 z>Y~FCw>AY>f*fxCy^hXEWC)zI)fo{%8Zdb^e|RM+F)@B&Y--Q`;@NeS&P!}9r3hEa z16IfqqAQiWByQY;;rigOiieD(1SuLn{@%c#V(#ke>HS?lX_FweS3r|O?2eiKklBGk zO5pz2hOLVxl}DxwL9Y4BDP@PO6-@2oMTXbk6V~Twi9p&$>?)`fFXJkCAthjNpvFl+B=t57}ox&@c6CfnIO%&f{1%OsF zE(=qyRR!{xyN^Ls8Hi46O?z_WO6bN{fyel42Vfy6qyp~x+|8X`_L31b?SaAtLAsZ> zuVkbJt7ta*{x2s4G)24g@vzx-0ExNd_sQnZEbzm}LBJad3c{@ph5Q4KxP$*qAA7h% zhDe6&?OWSJIW5?VH1YmOv8vVzZLP9&h zQtAHF1GGHoiUPW}+nZVf?)d+b<{)QkASlFJQxs`&!-3D=_0+}AZuTzV5Kl>|+mXndB=O8G{Ni&}h$}{O6T;VQ=)!Qjo(sQO6)CgHKFMB+x=;lxtA%J!2~2 zCKR-Wu-UoBD`ME;HYkCX(J#&fkZ*9;(b0kqGW9Tf{*;X|oH9)rMqr%Aco|YGSrs5Q z38xqX#@Ne4^cfOc7f-{!77^_reE;E`=ep@QoFk&(~e#3|LXzFjYZO z$`bI%i^Py+U{83oumBb0rTu%RHSVvy%1sydE=vJV8Jjc)kfLzGwmop?%d-Fpj8zD4 zVfGkfeRmr;yo0$0Ky*8tkZU2wjl?EN2RN*f;Fkyy^6A&%tl_!#82Ragd>X(`^=GMD z6nO%b2g+eEA(D#(@)#T^xWk6~A_|*@a^QZ_xkN=Z%dG9{x&wCrRPhaQaqq*eIZ&ft z&;0!YJO*}d**L#|$7nWy^2ZY+5d|y>43;V)$Q%v`T^`KkkK^$T>V1Yh(8X~Q*~sQ! zhToxO;dI-c{mB4L8S4U|%3J~4Sb>f4VG1=33>7M#4K%X>Q>cIh;Y4uQX)dH#Xs-x% zGfRId4u2v$dETa`rowsjNYLM0`}Z$--6C8 zJoSrp#i)Q;y_z<4!*TE;Ya=eqGZQ@?2A&O*fU~V91^e_|I}Ko~t#B6k|Nl}9wz>OB zr^<0$T>dA>@Pm`POjS!Slzbtm3WlJQBlr{s4DW;o`wTWhP>4OOxG``s=qr+7%@? zD0dOrr4Z-@yTgHq#Y;LEL8YK4nu7o{O8>38Lxebkk)IW~KLF{ktoa@6c^w{OPgUUf z$8Xb>zK6x*j%GSflSzY|v2W3x`KBI*af}l9yMR}xM&bdrEKb1eG9%;cJ>QoE2x9>E ze;a%!XAG;xkQjVYAKb|(-zc9}bC9IN3|G9)5{6rqQvq%Ui)Y^5~B+C77L!jAwB19{l+1WjLr9e2@_@ZK?-yTA@(@`|IXccd@@N zRv~j0AT#zu3i%-!2Qqtw7ihV zK0E?zEl#i|;R2ptOwAAb7>2PX;fFy%-3SNQ2$n+Xh<&~LDuW^Xr!v^GLJ%2t@Qmre zmWM}2ADEf->^f7h;2}6*A!z-wAwZoY=mBY+yfxo#wOOU+d(&N9h(#W9EMz z9C!{7cQ8qht#qKwAE1HN3?2(?27}7KCm|%%;!g6J9N`Nl^)0(kJ`ekb^g*yAs3(ai zDJzSobYr2~5fRrz3vq*-A+VuxWRE-p-;&M_lBJ@KW85et_p55(!<$Ol>HVTRcnDQ& ziIK=DY2%4O&u-Lw6Y(_MPXf|EKejAM<4I0wbT$jjA8Yy0$77YND&i>iJ zfF4AvgM*KS7~q6d=uR#82|14rs(948^odWT-li?+zBX39-Ins{i3KNt>fDNE!-UpW z?j#d;@>m;FD*>J_yxVLN<6T(tC}c#S{kLzLF<-JvIXVo~57!Q{+ZBx5@t#9)6Z+k4 zIN97Pl`3B9%ghgV+xM8?WDaG*G3%GV)>iKJ7SXB3%;x{cykJUDGbdoTHa>^ z38Pj^t!3pfUiGXiL*A^x|8%Y+4h{(x7Z(S3o{P&?#;YPfom$AnQe4ltd*F3SAO?B?VyO-Ty7%FgQw9|N_$iqb3ZOdNC!9Yf7 zri8fT@@R$i%!h@odnfhm4{ExT^KE+X-|;nF(mmdHGGk9Ozo}R6HZ%UpC`Bo+{n~h$ ziBM6%kW5Sn;YG)W^7U_m*0~i8pDCy;4tM54-w50PR|dOJV$Ox%k^9x)~Gv^YnX3SXb^XCwzk!54KvUf z`mmBW>SHa&Rt^dED_7wYN* z*o-sK0k@`Z()^|upCCm?OsYOtd)M*4iSND?6HZe}B(=21cltG%VqWK^`acHgk;Bt@e`C+xPv znK!Sh`mOVL>I~0mw}X@p_);=7&;4~ip)V1`P~Y;86N(7W`e7Cb+cA|XFVk9Y~N?+ zyvGz9@?q5S2K4Q=xJ1HqK2g6D$z3qf%1Ue(p*-)^5bt|BoZj886NO)VspxkK$7{_s zPvHo4WFaT)d%}11pm;0WNRHU#INo#8OoEO=N;HxR9Mh706__ru zX3JrdCo^_FmwW#%6#O6N-ukbqck3FKE$F5iogxhqf^;g7#n* z9jzk=jrA1;Do-8qKYm`7--8Z1qU+4ByFIWlF?`2X>%UCXp`Qe@gl^g+t=N6)s>AChlVk%t4t&qRu2_^*WF+T>6;l%SJ_TsQEC zMCQN4mYnpBd^Y5Z!4h=fBU1Nlp<{V@`Gt%l0@EGM!BVsY()~-57~iX~3E2Ib_T?|0 z@ICr#9^CTfQNu?pw0N;L5iMRsXEa|>%bS};#l@^>jVD}G2=X-kDNhi_(=t|nV;-+} zAF+T^Sy z{|o(Yq<^I%2>w+u>eG;GvBb2mxa19i;CFdu=5ccO_Y@`7O*geLX$Fhek{K{y1f~ly zME8w#fwX}x1kT47A+K}Lw}Sbg*`k~h?@Cs`5OB(=jhuI=UM-POQ|D{tGZVL~h0l3I zQV6%s^>FZCBDIEaAq($uR+fRGuca^`TCpceyK$IQzo~v;k0_1+6TN zDG*qAYac$M;P#t8_;*`C`2^|+PtP1psG-$VRHhpiEq-Gk;{0C~J;ph%m2pSiTFivrhJwe3S&7M88vzdN z`#C4Sp@cWk)V$M6vI_40FqG0ezY$Qc_wUgqXWFc6Rw){CyCf0{xZwICCCth}BR7yq zCb)xJoorU3Use6IJ!+&UeNnJXJHU;j9=kZHqLya!b4zZ=kz{n_7=&B8a z62|-c?;GdzukG3Nwgq4D^z!0hXNL=4?67tbNj)exJN3knV6rYU$Y$u?vsTn7m zrQ5Unnvj=`I0&8NIQI3MLzSb7SS_2lO8$IyofV`X168SvcE#Fuw@6dhX4W=_g+uAPT@t*qj^cW zH+eO{0rub_b_9Q8RTZb$EfJAhTVEQso<}JnHP$sB#5X*3^gFZCHgFl8jCY+_5av27 z0##ncjqC0uKh7e^pHIHz)^zVlVw1bD=84$iWM?;3qg;#yGX~GxmYIZ_yddGH(bO)F z)Kyjc$Ho*WYJAT`d;%V3sEm7UHSk^5G3#zj&C$x=s@oFJ=sUa71-NHcR!fzq3JxNi zw0XRXA;S^P%w-}N$*$6lpQujG@J+4D-RN&T`#DK%HvF77OOH#~IcGb<^Zo3fsO$Hd z*0N3rymuciu{s4Q6Tl>hwd}H<1KNl*rcAc5!~_6^lxTPCV6JP0o|3VHjf2CDYu6H7 zUl1Cvq(E~zj2RrOau~RSX?wE>3^&->^FDo|4}>w93-j}beT<|5%?xl#aT4R?LVV4* z$@8awn=hygMy~I^_fk@r+&1>xd8pfJXBb&)yQM&w^MEAtmS{=c@}a`&<>1c2{=g6S zs!zV`91 zytwiAvl(Ionk8XRkQ0A}-~&aUNJT262O;@wTc4~37M;a)cNczej!G8dOOhs8{5$AQ z2_>~d_s$1HmN~HQdfU0+Tq)2N;GqWNDHSQ63DJSupfCnU^laV`8y6*d6=8oF=u!$OwQGC8C_jn zO^gGVlEqNxF0#bLTrS^UNF}PCj=3(Sx^AE}DSPo$!0rl;J3Na~( zN`xs+e&KZ-KdH>#?k@kGJ05N&5T7nNIGEH%M3#^>C*yy0UG7J302D$bwWz45=VSt* zn9m-U_wnP88=+VOnDl1DmzJ-h%HIz6Z7m2;MRx5xUmkuXNuP#T7eoEp&j-}J>2KyU z^!c^f)@In`J7H1Yza|$bnIW0+1BRk@J--1RXHWCNoytOuIa+R+LYbWu=NRkvj-|Fh z@>6&Bgmb@tXNiz)D$J7spM)LlSH@TVZx9dK8X%}A@15shg_SxbWU@6F6%VW=wASp5 z$g_&9HinxJ~$3GaH>Go|R z$_VaFwwB6Eo7SfKqn zQUI@nY(gmEfb-`@5Cms|?N)xit={8tc`#e00rdPY!SD+u!~nX#EI) z*(aA^2x^jI4qz1STi*mQB_-$>FpvFjp-~fm2zq*YdPsVZ`#!5lx%q-a>HqUhx)Q}B zg!uSGl4a%P;o;$lfmibV;}t^@G-xiU6yv_ozXXj@LRG`omV=(@=FNwnG=S}ctv`SJ z{EKX102-{ba{3Hv7YRBx1lWVY>^wRY`qjYz6$uY+;7ej+s#llvyG}Hl|3?de(820@ z$Fz!0NSX};GBW5JjFgdJZW$64Wr0vqP{=A4yX{qifgz4AZ(nBxCHz|yrS};b0VrZJ zvbeOgO+(01SeThTw!R2p9->8W|NCqArvXK=C{IK?Nm3BqJ}W-6c5~v+Fanmn2dQ|W z>&yb?JaDy_5S++}$jE*-b8z!~LKTFiqVeS+tZxbpIp)85nmJ&9A0*JXP{_YKJGyzq zLlXYZuswtXnUF|W+)Mfha0>>GFz^ikhYHzhm3cB^sA-7Bltq!q*?%{eB=O`)R_6k7 zcq?9Xh$#MH?C8tKlzN|?4Sba%8!32MUCr|Oj2-YE&Dl|jQK8?Y=FH~l>FIw~ws7$b z(IKr#s$`he+^_;CPXdwuR)7w?MX0E#kTBx+E;F-vK)KU31UnsEe5s}VmXNKy1wg5O`NOT-NgV<8SU-Q3PockPYF;ig=63j`oYOq^{UIqQ< zd|1n@7xGMR!JaPhLFrY*V^}^G#Vb@3P`XR1ywA6+MmadL2P}E| z;cb+ZgCWBj?B-1vgGdZt^n0>YO>YB{hZ7y>U_PlF6Ik%#DO_@)LX-pjl{kUrh28;< zN+ynueI`8r>|Y?uuYnPLpvZtLz$Ch%gl2+t3Sbl4SXt4bD?&K5ZdG3Ec`4xzi-7&w zNtPQvBn@{Q+F@wM;0{kAfEnzdjQda;02=z&o!`TTWM_qA&1cY z_nJsYBX~?p!AK0)DKqTgFf}|ruK3?=Jk#OtD`oN+_Bk%~3?6zP-Y0?@6()egHU_HX zKK7+ZNjL-HK;%^mA%R?w8|{q?WDH6YaAc^zzUJ>Nb78(i_tS)$2mxc}FCl@Ml$>mM zD;}(8m6Y)1UV>oczhZrQ;r8xS2{+x9Y$;!-xgz*J6wqEe1 z*8n#Bu_{5aL(wvefXU5QUIzRdsSEF%_^)N!eE5q03aT)@$-pTRG&|^^{ELi3>rfBB z<31e?dPC2B1nnx?lmXN~*65+0!1pYexFfL<25?fgEcD;EgLSAz{x_n);PjYwvzeby zcS#VOuo)g>!!d*2jzRz3ETPhns&#(6B14bLfh+jxGTr|aLW(E?%&z{~V#UNTlH$~m zTw@5hWQ@KA^A9L=Gfo*|ch(rJ8v!SIv%v&ZkRQA)+y7->OWyc@F@Xm3z&9{U@KsMM zWThsq7$9p-Iz#TGgNjbA|Af6@q9Sl^uDzBkWP#e)xdWdDR>0TG)YKFTVWD3~Aa!Qz zeUPC7r@SMNWFRJnB(jY16c4sCIVKIk18wb*NNPc-_;o%KXgaEa5Ec?f7>)O1;n|}r zA@9FJ08%`R67wX$(1O9jmM}&cXjn+bnEY*dy&~Y0Y&PSC z(e4EJ`29=Y+uANRrp~#DlVpC(klsT-0mfT-LGT(tpLa)xe61TCxmo>S5~{Mnd3;B` z8Te%2`*pV)paaHhv&M4K`q$+Ef9z=wK8!3`DHM_jBc}b^2VOWR(HbAML=@$38Ml{4 z{4vqd_v5QQc3AjStCmF^88CmLiTNCs)fW;!aKSJanoW~7b9A7o@)mihH2svVi=$RR zN(xP!yv&Wf{CsLCrT6&P10~RIVVIXFl_cm~FhxW~SFph6j;OV@)wEQ|A5s!p3@0A1+2kOV6L8!{>b*mDauD3>+Uw zPZtvy5oBJxu$at^wEOP&Ojq1|pj1^2j-cjEgL>q4P*0+$1)LgSWP*MiZ*F;uB_!JU3DknL%h1AjTvZwjp_7nb!-DNulL$#<$YRzn(g#>!@o!B|M)q= zf(~P8#chhKba)m5YWbMnpF`>K?XG2}|Ex7#AlfA2U*`wp_WNT~siJ32nubfwbVSU| zmbSE>rVoCms1opN8yp^%=UE(#G6~$Qdv7;3H@0a&pQhF9tA8?DgG;u@HPO%#E0+|T zVyIC$7afdaVN^o-vCe%{+1P3YC)>$6T`r{JXm-Up-Dl*dm|VZomV3ROUR{^=iG*Qm z&1>-iSJwjqVz(39PS?A)^-mN-M+NMSg?2AaD_?!HKib;5n>;7{czSlmPe@Z)>)v@2 zfvvr->!vc<^VEiyv1|f2CnmmJm*GH`PMvO!*SyaEoZ8Ux&FB65b=GpC?qS;f`*g8r zB>ksVCO2yOvwy|WL9p@3;gvhIOhaB-`^pYO+QpB`dWb74jY3O7n{huD!O`zKcHZvsZU-7rv`_=kuD9 znI2^VZz#r<2hQlOjWxF|n!OLa4`02$SLfCFTa%Z!&)}@zVd`kWJ!l4>PsM3GrbDj0 zO6*{q(XHq$(aF<|8j`kq_BGqv`nh*5o*cM~KRMehoZHlpO={Q}wY+gtDW1r*LD%E> zP&9qQ>gaG;6swJpw4d_FM)(7oxWWT%me`#QSm_U8$e?&a*4ADkbo{QmM~wTi&{=39-jrJA}5A9Y9?F=)UEGEAwMDoyOBCSTv5( z;i8!_f1<*7H@DUr%ll;Y(|M1k)8?^xewb_hVK}iH6RFJb`Fh-CeX-lMcRGEy!?`xs zTw9)3a5Yv0s-dRQ=vZSE&1}%6VoZD6e23~{%EF0KW*_q|i6z~NbWOrK z>Wg*~bq=Q4ln1V)wfP0bhf$9#*Z1P|4i*aM%O2!tQfYs9oa3+$sg}4Yd!AnE}Rl28}V0oI=M!(68HZu`$?v5^T;T9^AUdV)hl-;)T3r_ zF(uI+XKb%;9bW;Y!llanZnC)UQ>bvXPZj&BMhnonu%c*;*n=-8JGV0oG?!TirepV}}r|#`Cx?i>T zqe=mz4Hw7HhjH;Otl2qfnPm$eR>jAWdg1{NP%tbK3xw@mtQGUw;HJ2x6tw?sSs z@Wu0AG3=Z=xf3GOJyFtVqma9|ZatLN`#6K)mI^QEnt1%T!laGyPyISq@9w>QH+9~U z)s*UKHJcn)%xpEyR{~CQvZTz3N757Aa-PgRA zqKqvm(>oF;=jYu@IeQH0pN~x(?uKidnYrTCVi^*tdcW`?oovZmHkfYn5u-$5^(Q&th^MPX6|c&DVni z0Lz3@ZLX4Xvi(mB62a|HsozRT#t5&DZ5zvRHlJdDl|cQNeSHZV`;78oJs;IITzUzF zMPGVxPntQu^U~zhnE{n=T8*=%w@C^r-I`a>)~u5FL)xQIjeCa^5TPrRHu%2k)AQ|6rcs&E-PZWYoSs*mkCY!J4u0!pHV@Rv;c_r2r`PfZrvKUgmHuSBS3rRlG9m*3TQ>f)r$D-TVKU3b1_ z4E5DHy2!AMd`E|BMXYG*hb>zM54Np|VP8?0S+4JsS6<6g0wpKK`3z6lKNf5{jgB@+=LY?zY1 z_wIAX;{Hmf1a+k+?YH5frY-dq_ZE+IOx8M^H7=J$^^2ZQqp6v!d!L8Xw+w}-cUF0! z_6t~mR7yAPMh}#G2okyC(FfdbC9NktwzHoUO6^X0bgEdMZ5g|7AEw+{d235M>J}cN zQai`p_~&G&VL+K$G)V7t!{2e|;`7BsGe8y;1cugr&!&yeK027MWdo`QFo}8xo?|wLUe_?pozL*-Hvogn{=Tkl|yyo?P zI>H@zBSkqcuRh@xJMi+vPti?ZucOVNaL?fP^FBYSvP96m3*gwgIL+lgUmRL85)nQy z?JK}>Kjd{;IOx51GOn;yE=)I()08^5TIF{>?tIU0pcjji_Nz1rN+%5-KW8tYCBPUM zIC7e=@11Z>gx|0VqCP*AZ0WZ2pO=xbri$!cNUT3e^Kwn_eeAzDn14@9rYXc;Jd5RLIUAWR#q|Fin)ard^ipJ&R3(N``RT@m~fT8!TF>awa*^2ERtv8 zil6RiYot{@s@#uKZc2M5)je_Is>D6JHWa*Dc<)r^caR&w^`=b9G>^4;L&6RD^Xc3R z^`#iMX!K93>bcsc?mcf*%A!vH5F(crr>*sTr17MZH~*T~P#sRPHMLFHe6Z)7#vK_! zio=~Mz8bsE@BB*1Sys4b0t()AC=0}GFol0i&ifTW9xW*oQ`1?P$Q206fHI$x{UIbh z=NOI1(W&xf6ITQWY%;=7w|5PH9dT?UN5fZ)tMfAVo#Y7bzQ#f(P zfB$(2L67ck{SbWh3!1(`S1TnS;X`FYRsQ==XiNH!X!+&zzYl=_4A(K*l_~vC!j1kd z2|0Ab!^+Hk$N!W&z>fe~Vxh`F`mg$di}@cREu9cDFv?#==uA%#1|Ep0(!WI!nfP%4 zm=+Qk$df4#7ps9UD1sZ1jSG0eqFHcD>8_rmMIg?v4c8n?C~_t1LhN7t?_CGHAqMH{ zliB-{Bx-ZSIA2P@(0eaPQX_=k6M~?0uTEAjN~fq9;JO6%2-&%3YhRCun5JFpKukVB zzaP)^;yAb{FaU0s=NeNWG5|#cES(txB@GQ;^c$2c8xrbYi%FQ}g0t8i_%%fOG2Rc0 z%zwH8PE|S%j&Nc1+yPb6if?+3df%{t%D(NRSLgcl+jD~JIE1juGq)dw5F;|^z*_=b zv*^uiY@m|oAeEHF%fDs9n+Q9JHV7 zY7x-40)RP+n3}rNqBftJSnu^CxTt=#$2;b`TPlWz-31>kEA)yD>neA{94!)X@$m7j zEA(qS=87<5y_J zqPlji+V`v$#=X_POHFO?*s<8ZZbUR}?7|v>uA=%)=rxdmDZoSaK?`#INE%UiE0~(= zNOH{w*?3^oOl$&008?4EY(RzNxK>!@iKeKu6kt!=ps^?E5P;SkKzg^i8TID;Jv9cB ziIr7bOAA!vS5(NM83*mzD<0c_1(U(Z#M|2-s~?YmAgOyXWXo>QRRuIB+1WSaIsmu( zC?nA(1t#-~R#CW_FC?mA6YoP~MsoM!AMdXf)J9HV{iDzM4%VdDNA>ef6mnK99XuxL zRe8g%h>zE@<5l?+aRXBL6S2L$z213KN~Ev(MV-@JkWn#3cq@$m14bqw6>@9;OH&9P zhaiW4Bwt{-f2*mrt?iRcn7uMXEHE1=L5kj4U+)7PeJP+7%ivbLUZI8dyre+65T(3? z$sR0PL7JEzoXL_pK;^XBRFq*PDYCdmlew}A0C<5yV`>bS19;H?pLls~4aR?LV_R*~ zrXzsQMHZk@yP>xa>L3t=;3O!rM9T6B3XR((*}f1%17c=;^f1&7deM>C7-5;vgY;{K zck=ek?}(}^mGmez*u;|mabPIvKy-I^1EJ@DB9&26R6G<5OofoP3Rkad==T|%p#tAX zxVaqwq>I3qu^2!I31J3k0*+Q5c4$QfpHCkEPgZ71;8n5`J--PO3#{XRSk&{BfZ2g` zKKh~B+Z%m802|YVXIy&!d_>X!5&nZ0h4!p{Lz0k`q?SKKD#JxJ3f)M6v}d-WgWxnI z{dm38R)B0Hg)t&!Ne*|7#_e!wwxuNg(`|tZfBljC8Z9lDL*b^t^PbjX!^W6Ir(v>@ zLH|CwM6VDge&Mon)=h{D3sVl>WWxi_1MNd#`*;xAlLJ5ck8Nn>4=E%Jg?IANi)11> z!r;=Rx2Ln#P$BjKFkmsfwG8uefk-(fe+mNQ5&Y2cU)MqaimV#8#G_n&JxAy|u&?s6 zUYZ4B(jONV-r!><+F;-V7Wg>@ah$+M@g&6uv8)s4W z?#=g9W#Fp>|W3OtMQ4R28p zI;oR_62sjJsRS2{3$Uy1rK`cPawVi_Qb>oh{#8^bU%hG;J+cd!Qwwp*budKvsy6+v z6(*{;4?g`?4;`bo4sugi7-Y_5{{m(u<>k&TsYD79S)YIB#3Bq(o}}F1d;fL4(o8= zO%qQBViOWyPnjwb^WC}A8f)3f`Q}oo`Ki6h>VMW7O-Q>-$bzL>a|bTJprAVGf?=@) z9rP|%P5Fw(q++JTR&yS&fx}ZED!zO1uR-DCo#gko#^CP{98IVZ-Z;o3JG`gpJWYov z0A_w<_5aXfj%f#B2m}{uYHE;jy-aGF{psgh6c;<5L$mc!bnN#1xAK)E@0fZux>;oH zeEFQe_4Y#VXWaztjT>7_*U)Na19(qo)F_@qc|wDPBw!CR88S;tOOCjXZ{MUVuLGlD zf3@uKwFJ5RkKH7O#W&=}&bz4wvX2|L-00m}9xT~6 zX-znpmSDTP18u8s~HdALtfNgQP>c98FGYup5FD1A&BF zeU$4QfG8)ROzO26sLJET+BFJpoqgBiW^OTTy&GRcD0N$gor5FBXH%nFm_iiZw>Yxq zip01*>8Ega!HA=yBSZk}c0w)@EU7fR6q4whDhsYmNbXOePcCVmXB$zWp&*$O?*%U~ z$oQaR>T-)X(h)6)kuuQ0hs7#r{tCDq)2}f_mX?uRi?8g7Qo&y&7l5N75wB&Trf z0~Xb_uA!-E>ICoQ7Zn|y<%X+c@Z}@0pQ_1a(Vd2V2=r<^AKNlqDogyn(z~p(Ricz~ zOC6KO0n#g9-$q3iTL%YFXDBNws*o}hha!ruV4>@A^x0ZO*8@9W@&Vm1yP#@LDZRo; z>2K}U9%O6seZp+y;5tc+0zQV5d^TfY8Bpm$?R-JvtOI z;{GiGzDZTTqVDOCaA(C`fs_IVf$A5_G6n`Tbt*>k@?rAXrpn(r2y}2j%7vCVX(t0wf+o~=C{b9<^xZNGs(>$3P2Z%hkbe-97g9kOB} z6J3xW`J&I*xd<(IxqGl))bmKS&1HT}?7WRA)tDz>kxjP?((Nn$@F5TdRB}8@ktZ^X z6Z~`(F6~%YI8Eci6*nU8D<`Rv7TSurtrqwiR!T}!er|YCpL9gglRP);cGL(IT>j88 zkeMJ@Zo*pBczGS(UK}Kpa5(4zSs>@ce9>bOVmGn>yU^od6n0BBqen~SYCYXsO5TIt zcrW2;CB()CCM#w9;Rv{v30$1wZp0l=oB$*R^6z4lxrEQTd@+Zxs3;$^Qq3)HL#l5i zN|3}5hkoO>g0NFqHEAP|{8GQI*TL`?q%oN21eu357EWwQ{pJlAd( z4OXNdT)jEk=wtipt7!sW=8GeHzEaH(xw*Y=+d*6}p~KK58d}FPsE|jkBcynUNqpX=aJhcC81*SiGuKux_UV0ClQFHdCqHf1e z;kA%5+(TpqryuXzUN^cb{WD_xXNOng&M&d-P@}rbQ;-PZ+)Ac&D6+kliKKigzTc5I}JvE?ZoR1qoq$@ZvP&c)bU#% zvP`Nw?=AMNcEZN)o}Xtr!C8}dQHB>8He%j-5Si<tVbVJz!(;c$IO$a8V$o|O zzl}eyTsN*oTg=Y z@7r(2n$K%*ek|-z`n*!n($XNf9vJc5@YwHqgW(yYY`n@lO}+BmN{uh)+Wi83DsHlc z{gJ;z`I*DT-P9{BOHIbDllohgk%3{CEHHvQH(lrtWvq?gdG*QB~zl3YgPh)b8 z#e{Rl&weTU{+$PVV(>n&0Y)f6p!#52aiAmANp|e>hVv9(sK`RMHabLH0=EK>J>OlOm zpe+&qx~MmB)U@Jvp@5gmb5UY14q_bUx9*|RoKb`pN-y5zLap{!D)16LDiN$Fd|d{2 z($#}KG{z1$ZG$Tq7S6l`dycs6R$`jYdRZIrc==#%k>Ga&AM1bqk)`d$T6 z8W&I8y!I9sd&Rb22UAxccXssoi}Jq%SX2`gz2dz;IMlyK3%o5AcU~T6-g#G8=5bZgi&Y_iR!hN6T$m ze%|Mzzi*%xtF4!k9-j>JFG)55VfpHVNpuhMt9tXZnbyk`^^z2YH)}3xmeM#=W4ch1 zG{-?Leuq2lIcvwaaa&UuO?`!AuRaK6Gwyj5ld%)^A}R_eZf&JZ}|$D6D$_ir^fuxz5560dDI zOWyF2s6-_S`t2jp%|gZW(U~J*^OX@77rbvGrpQny0$Y3r86ItYrs%Y8Z|~L9C8dq> zA4u@v%&ZoQW{Y}rGhOPC$_QZ}-#O!`GT8NvPcnjK=W1JTO4GQ@l;NF3%1<*x*9G)o zs3R8C^BA;Pv%G@#g|$b4`=?xMYp?nBVyAqMYOdnu;^I#lM6=vtW_%?S93da8eUN5p6QPZitTA}Bo+Wif z&2i^%#C=OgA`e;GR2Y;=wlBhp5GWKlsS8%#T?_ivSn%+n=7${CVpZg;0qvGwQooRH z7%@(EE-t@#?tU{9U<}$8B&0nX^Sa0@k)Vt+Y~fRy`KS0+Wik;EMLH#L@m<973mRDE zItbn-ycajAdy~~?q==ww#4l0ijAs}{-?&y8#Zqa(upB2>-J4F!|BF1FKelzfV~D{MZO zv$~gEm6K!65EuI6qM?1>_V3?tK~4MiZheZi#9x~(wddZ4--Z^sTS}X%1xTXMYG{-U z;?*7f*x)I#{T)lrJJcgWpS$<)eF!Ak%3BrXa58WXwm3iCdv-K^KRk~~!DeNxdN_k5 ze*9z)Pg2h5>C?u|>f?s0h-3|!n`WOkeo~xiMSo>dX0|2M5)pg0!ky3O`q5%4EYpdv zayYM+FrTo=eCk7ovQwl@kbxRvsNj7_?3|Op66c4=v_HWK9-o0!_CVFoohW+`Mn0^B-Wl^qI@cb1`giMlM&Lq zG0MB=SFxb@I`vy;nY_I+#kU2vS(aeW6Iq(TYxZwqpZZ>=pjaQhkmyM4rPA-QT4xex z&UZOzs7UTme|!3lWq$EPda}NvD)ee;l;qW2Jo_B=&>RzS-#U@~c4&h`Ro>$ar$)@# z*||KFWurUp_diLN#0P_V7Bwfka8aNA3M4(8K`}j&uopRus&a3O_;DU4icKRC{g1qx`Sqn=~ z3vxBe8|fd9sYpolYws_3Jd2FD_Pr@#$4Z~g7NGY3h!mR{5F{i6>SE+KtB8YNNj~=W zK9wINm3%&!elc#5n~Mr%#`ZXBr6;A7)Wyfhkc(}y7aRDyQjYK1wu?~CCsJ^H%8-oR zgPRR?Kpzq4CAISJymvQ%bkm5!;drhrfz!y?(v|y^@9(XyYJ<)1`A-##0oVMcb1I{A zs7=QnmBaRv_``0>^W+JqLavap>iqndy3PNAYXHB;^nLt2`{MK$*7Zq(==>ok+_lBObAJ5eHUC@yb z{zpac?}xE}rf^Q^wLxZVr}?|G#>Kq8tUXB zj%&$tuAEjrvT?*y2iOX1$B3nt_0am8&35dJ5q*Nn-IOz^(fcb@j|?_hUr3sp%UJw4 z$B!aY47T`Ek%&5Ky?+hx<9Te5-3|=!@$m3W*(`#gT>Cwk%DS}H*l+cL4Z7BZQyX_^ zVBa`Xa|j3s+=}uQygzT4oS2lEZov@v?M=c_NXZQZ$6sYE+G|n*-18Y*R%qjxdrFb}IocKt_%Q4}+k^~z-Gu~H{GtMsk#nAo>vg}CNn5C9?ZgmsTdfRRN>+Ba$SCVKx zN)G?(3xMg!iFvL8HiADHuLgQnm;$Bt$zU;+E^(>l^V15wJFnr$ zc{-BYG6%Pp5^A?K3>Aupt#SfG!*;)N4Y>{HxSfTil_uBkMBni9+P?avV1g^%H*<6K zc0_WDGy}{LQ>fH-$nQvS$SaQF{Y-PVZkna#@EH}&ubXIGVcE9$%&(Y3kig(<{+U$1 z{Wp_Rq5z$uA2&IsDs$QWCKcSi5VDvLrZl*0OS&~pnmOZq4JO@5)rg`*@Mm>(UGgTx=hImsi*{xaH<7 z-Dll8t-Il;?!LEt6qF<0&@ayA*c;Vdjx$vtoLL1x^*@iC5IV4P8yg(_=E??59B0RS z3e|Wm!#q<#(hThf-gsA}0KA``esB4+r2NyTb~E0%xVUaNQ~s^0y?U=dg#%K2RqFJi+;@;#Rk%vw=X1%E;(|Aw`kqy@rdTJ&xO0 zo@HBy+*5Uf_ek)ZMisLfBICWN$MhRdnx*uY^I`YatH|LBr>2=o_70LpAEZCdt=w#Q zxn|k6BUCv_{CMsGG`9&E3-3pv5i(#mGQ7f z>)@YR!i?TAqUnyqCzb?!pA=1<7L2E|IyxiVl4QMl(~b@cdd5AE3#VAcx6M9n&Axh> zM37P7sN7wdS6~+Uv_5xfHo8{?Z-4TDz%S+EumOwDZ!%)zfl-z^Wk#meh?Ho@NM~#8 z(+_)p`>Uu=3Z>$WiaC6?H@&yU+p3%cysIjj&gfG+kmk%@2jexj#dPPXMqGW5dlCs= zewy1L>?ONf%cX9xJx|Dir2if?b+*edhI<%&!#CH4MNXNKgo40Jjq?8L_v>|yx+z(x zU%S8aAFPV6eco+6n8|H@y_M!;-8Vei&#cJpXR@|f79nj)eWZ4_LiD_8X!2w-IQQ?3 zhHx_EhpUf`uh?P)pP@1@qe8A=ROofPsI$a8ooY-C)(Fxx*XwF;f4mQ_MOTiWu~ml2 zO4eXmfa~WuBYeF%XNDOe_9pS!%#dmz*fU?&2_HST>~E{a~(lP^&a{-Xb+JTNdJc~x9%s@{fAJy~(@Fkow)t6RHc=(yvUV`x)Z>1$wC1-!<{k}{{(LZ9Qn3QkaGgvjBuFy-?3mQ%G`L2d zKjHc@TApRKk9cVb0ZXEl)q2TK-I2-@T#LleGQq7MnOhtcl?TW5 z{k0Mmy25L#QF0z_sqCK2(o69h4Sa}l$*^DCKP(trt@>{xr6VqhQfp_Z6v(r;$dQwh z@=)8|C1R{Eh*ESRj2a*_(}?Zv;aX0WEIU-9(f1pmOU0XywNI)`N@4RFkY%~QvUzZ% ze~Y;HSYdM|P%Td3>I}_Kn_N-mc1|`;viKtHE_os(J#@-%9u2T!9Wm02wehvqT*S;R zHS&ADy4h1)*swNMQI}8d)6p|Jm6t^nEAy(Hj{!P_P7BOx)vpvzvX<0{p~$rseoj0i z*gGWO7Z&{5STv|3dkwc1kn+Gc%^hb$x>~tx9c#UVWj0|2G2K^sO-qSKPZdr$#~*hd zBE>kgQWDb^i%l#7B;9|{e@^-y8Q9g>IGbC|AeM;YEA3a7@hEgvUJ<2UE2?lKT-_t5 z=EEN8ZC99#E8UnWc586ebyyYND{eZ|c$cP~qW^)NowHLZ*{9Uz{7MAlmEOVWw1JC# z!rY~s7U>=&t#{kR>SPji+oky=?G{H7xTz%AZ4lqTvSkvYLhLYVypN6ZJsT!%DtO(z z-8aFT>vy8x=8mv!@RI$lY+=@&x8{D@@`(H%;h7pGM#VoDS06H&8UgNLc7940p3q5l zOIbtlRb^UBFkxzfuZkR746{N4@Ba4v@Z5zXTinACGoS7lZc={l-O<)78zI&o^PN8C zmqsJAh4YHHJm0hX^(?#-CKD|TU+Q>N=1wUYh*+fL;tmill$j>DXu3=EOVtIOL6G_w z7Pqfi^iKu_T{+L~ft&&krLGBZ@C4KKGj{Am%ZQs6t3L{)0(^*AJkE)QS;NXtvgO+?rw3-H?r)B1kPc`xq&KH0iy$dP_jE;#x(*YdU7kpo{zvyXhcb3U!_ z$JNJUj&8;dmakz&D}r0XmlH3(2mQ=BDSwT7;Ou;kleNQ$K-#~wPJeA zv|G!+ps$MQ+g6{5q|tyYj%Ecvj)X^via9V`upzBU7~{&znf1|fyKu0ZC0p7Ioc+PV z{=r2@Ye0?lfkKQr)-I>^Szk%h`AQxBZn|YCr^hx2P2h6y-5B?8?Yu0^JjSA9PqRio zj+I`_ge8B9XbRG@N*5}8U%g80MSI-F>bo1ut|@m<;Q4CSW@}NN+`v5livbh<@W4!u zbM80Dn__&C50gG7aNorFkW|9)(vD>vZJJ0&g=NM&3VdRsU#e&-^niV@t*x!u64cS9 zdilk%f9LUycIaQ}=}Hk*e{PsQ9~m&9pEe{>T$J<`2$7F^ZT(4zcS zr0=I$W-bW@>HMK0TaKOcjo-rpd(ZAJP@evdArNPMSo2cLZSTcD zTjvXfQ)hWI-`BrBToA1+%ylL$_w8TG`6g_hmiYCIOZ$wjtH>?Gp~vXXS%D~#1}Q?txYj>V<`3m*<=;D+CxLUtNJuw&Gg&cbcz77@D4c?u z3U2_n5W1+llLcWOTCp5Sv}R~oW}t6o+mP36gvGG>m!6s0oe}R5x$S|2J8^LyyCe^! zmL_c}lYP9aH(eOTFn_+?kZH_c+A|Oz;t}1V){nTYD@YC7r6+`KWXUim?m;Js#p_&Z$BPm(# zh6$d#92$}=Cs7xj)WOtv;&l(J^a|4_G8?xCu6U|dRu{O)PFs)=H88uwWJku@m&-Ij zbO@t0B=Xs6bSTJl7l#^w`!wTSaj6AoPVl^0WC%mIXD#~?Up>rVv+?$>Z)$4F&CLbk z33^+-y~j^(Y=YjTYQlAl*BFb;gr}a&S?FVD*EWbliyT)e{WCYq!avm zFsS;@LsQAbpyOhnKmEp!manIUwH~qW?>$@`=BDy0kdAHKrfwY|ycIt1jM-G5*f$y+F+TMfu=YIxg1@_c0UutOW=vszw@)RDIf97UNW^ zOKldpo6>(F{E5t2D7lRXbT>ry_8v35W0s#ay>8)Ce7vE&%C99D%3YmXsrIlbEcF~& z@c*=To?lI+TNp=0>4JcuR3n%~MOuJ3M9M%w7&NgkfJpB~B!B`#(@{Vv0~nAnQi3oP zk&X}yE$F34C@P`%PAH*_BoMrT`{G@9-TOaW&*!twI_o|AeAxT>J^M++jy%n1_AW1g zCy#od2(Zug7G@pdcGf{Q8Ba;`fpHgqGAF_xU}abrto66Y3OzD|-Qa}}E+@e9(vSIK zAK35WjFOZsBn1iu!aGu^^$!~p9jc&tJ8N4nc>P^{bn__&SMvRm3788hLnk>kZl5lQ z;X-qk$biCDQULmr*8zf=rJY?yR@MZa{#PGvDAW*BK%eB4YXd)WB=3$QW93L_bPn93 z>qKCL-fRPiD-{wH1O`}*>#gZ6pUCKdtzEr*B!-a@A+Jd7e@_%!IFDf2hM!9H3|!H3 zdNo1U8V})ITXrWO0YN_--G{K2+YWzbOCMEL(;ydN6(6}u9Qe?{!y|ad9R0IpzeLwY zuqbnEuG-e#mT6zt%ZFtRc4fw2)|K_dNh#x1%vV z#JwfA)H{q}f@qoihQ7t~T2AS=n%_#Am1twRNe*>he(WMquA?@DhTomeKBxOttd!f@ z$Za)#h7lbK>Ak#XAKqIeTQ`40DClf4b`DSJCd)gRAaL9?{Pvhv@604sn199^t9~_=PB4v!a5I5CK>h zapG{c|JrUrtSmOuYmupw7PBBfjC!*+iqQ`b>`ub(-j+DOrLawi4SzpIR+CI$ao%H2D3{!3@=&VA`B?q<)$9&}!1Jv-svuRY^I z7jm;4yaumCuNBK+pZCt@h~fm!koY=GXjdnKAw_e^79zOJaYL%{ZFqA2IUyZpaj8n` zCrnDDiRjt{OxN$t&q$v$E>V{@=BJu-@CG}Uzjjb+iKX4ye#v8J|G;*4(nf9sFR-6z zBjdXG&(XFFD&8(L+*K#CyLL&PS~58Xu2!>K7tyF^C}spl*$jD>+???cXzyCkd`3s%1gls?F4J+^YK*-S46jOB;1q5tVt=ml4sZdjiQ#? z*r@v_+N#jiI4_{S_cuKA7C)>@d*=yU+h4=_m?3GCPSACEMHiWQ4LRdZXu(OJ@(=7Q zWI^k8Q}K*N4xCb`>C(St&t-JxVNj4Ky~8DQ@3h|j?)Xt2>;}@2)eAyFp&s{Idmd?Q zubcoZVf7cO{RfMQ+c>@$=;=36+tdtGqWW@^lq87y_4w4qkA;|<12Hr9u=?d=xjvvt z9bchH*fa<^qnde5MU1bYgDJQC{H8R32iIsNm49k~aye=7O5O3Ktn6}NUBReN119~Y zcEdxTbtViLZ00M(13FrS@WPG3AR&31+9r`qc9DWe1IagR^yXf< zf&LYM0CXL(Q1s6L3Mz<)Jxs=PW$vGM#?eYRl>ujnB!Qr$*9nh$T>2jdWI_fTS!Cb+ z07<~t?np~#0vsX7&hT^s^{Tx zbX7Q&@9hxeA1Y47?=d*MIo3^HntPn}n5kns)$NgD1h^^;X`qAC4h7@C5jDVc@32cL>X~pqE2hu zs}Q5ney6X?h4RZfpPLM%fRqB0p|&>Dwl?9FH0tKae9OkS)sdF*K;g2ZV3=FBVN?a= zOWt?K-wlsm51Nnd(&wfr_{bVFAxh=hxs$S}8s*OL0jrPbcfP0oiu5}6bvg%fej$Qc_ zEv+pi%IGm#g=jXNJZDZBdP$*m7I$hXj4Zr43n0Yy9Ebnl=-bDdB!>UZe1H<&f75-w yCq-pxKj>)RTl+sy$d4O-9Mq3`_<#E^9`A_?N=7QOPZ%BM0hhT623>08^yFVOUBXWQ literal 0 HcmV?d00001 diff --git a/rfcs/20191106-tf2-tpu-savedmodel/customized_embeddings.png b/rfcs/20191106-tf2-tpu-savedmodel/customized_embeddings.png new file mode 100644 index 0000000000000000000000000000000000000000..3d9265c756854abccf437f88dae9a45c0f34f48d GIT binary patch literal 46331 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 DRhQu7 literal 0 HcmV?d00001 diff --git a/rfcs/20191106-tf2-tpu-savedmodel/tpu_graph.png b/rfcs/20191106-tf2-tpu-savedmodel/tpu_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5928ad730c973e3e7b3d50724f59d0e3922b7a86 GIT binary patch literal 107196 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

nm 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 PJs7X#Rpm-$O#}ZAxO-kC literal 0 HcmV?d00001 diff --git a/rfcs/20191106-tf2-tpu-savedmodel/tpu_result.png b/rfcs/20191106-tf2-tpu-savedmodel/tpu_result.png new file mode 100644 index 0000000000000000000000000000000000000000..9b6b41bafc681efca6c24f567ea54f4ff0fb63bd GIT binary patch literal 49504 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 Date: Wed, 6 Nov 2019 14:54:55 -0800 Subject: [PATCH 090/365] Update 20191106-tf2-tpu-savedmodel.md --- rfcs/20191106-tf2-tpu-savedmodel.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rfcs/20191106-tf2-tpu-savedmodel.md b/rfcs/20191106-tf2-tpu-savedmodel.md index d2f33622d..1b83b5548 100644 --- a/rfcs/20191106-tf2-tpu-savedmodel.md +++ b/rfcs/20191106-tf2-tpu-savedmodel.md @@ -4,8 +4,8 @@ | :------------ | :------------------------------------------------------ | | **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) | : : (update when you have community PR #) : -| **Author(s)** | ylc@google.com, lzr@google.com | -| **Sponsor** | jhseu@google.com | +| **Author(s)** | Zhuoran Liu (lzr@google.com), Youlong Cheng (ylc@google.com) | +| **Sponsor** | Jonathan Hseu (jhseu@google.com) | | **Updated** | 2019-11-06 | ## Objective From 230783e5d9302b60420855e5ec6b9455ac9ef67b Mon Sep 17 00:00:00 2001 From: Zhuo Peng <1835738+brills@users.noreply.github.com> Date: Wed, 6 Nov 2019 15:07:31 -0800 Subject: [PATCH 091/365] replaced colab links with publicly accessible ones and clarify about TFX components does not always need to run TF. --- rfcs/20191017-tfx-standardized-inputs.md | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/rfcs/20191017-tfx-standardized-inputs.md b/rfcs/20191017-tfx-standardized-inputs.md index 0e848a4bf..596209540 100644 --- a/rfcs/20191017-tfx-standardized-inputs.md +++ b/rfcs/20191017-tfx-standardized-inputs.md @@ -32,7 +32,7 @@ Status | Proposed # Motivation ## Interoperability of TFX libraries -TFX offers a portfolio of libraries, including +TFX offers a portfolio of libraries, including [TFT](https://github.com/tensorflow/transform), [TFDV](https://github.com/tensorflow/data-validation) and [TFMA](https://github.com/tensorflow/model-analysis). These libraries can be @@ -169,6 +169,13 @@ The in-memory representation should: This type of workload is also significant in TFX, both in terms of CPU cycles and number of examples processed. + Note that TFX libraries don't always need to run TF graphs. For example, + TFDV, despite of its name, only analyzes the training data and (almost) does + not call any TF API. Another example, TFMA, will support "blackbox" + evaluation where the model being evaluated does not have to be a TF model. + Therefore a TF-neutral in-memory representation that works well with plain + Python code is desirable. + * Be interoperable with the rest of the world. The OSS world should be able to use TFX components with little effort on @@ -680,7 +687,10 @@ Remarks: 2. Only when the backing buffers are aligned correctly. Currently both TF and Apache Arrow has 64-byte alignment. And this can be enforced by implementing our own Arrow MemoryPool wrapping a TF allocator. -3. See the comparison in [this colab notebook](https://colab.sandbox.google.com/drive/1SCQs88J4Tc6HKk2AfpYvELaJDxa4h4IQ). + [This colab notebook](https://colab.research.google.com/drive/1bM8gso7c8x4UXx5htDM4N1KUSTuRvIFL) + shows that as long as the memory alignment is the same, feeding TF with an + Arrow Array has very little overhead. +3. See the comparison in [this colab notebook](https://colab.research.google.com/drive/1CvDjZCH3GQE8iojCmRHPuSqLTw8KgNf3). * It’s worth calling out that Arrow is meant to be a data analysis library and better data analysis support (for example, support for a “group-by” clause) will be added over time. From 4a6fa51b97c7d607199c3db301ce28644ba464aa Mon Sep 17 00:00:00 2001 From: Zhuoran Liu <49047362+lzr-google@users.noreply.github.com> Date: Fri, 8 Nov 2019 16:36:40 -0800 Subject: [PATCH 092/365] Update rfcs/20191106-tf2-tpu-savedmodel.md: Set RFC# Co-Authored-By: Edd Wilder-James --- rfcs/20191106-tf2-tpu-savedmodel.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20191106-tf2-tpu-savedmodel.md b/rfcs/20191106-tf2-tpu-savedmodel.md index 1b83b5548..09bb09c92 100644 --- a/rfcs/20191106-tf2-tpu-savedmodel.md +++ b/rfcs/20191106-tf2-tpu-savedmodel.md @@ -2,7 +2,7 @@ | Status | Proposed | | :------------ | :------------------------------------------------------ | -| **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) | +| **RFC #** | [171](https://github.com/tensorflow/community/pull/171) | : : (update when you have community PR #) : | **Author(s)** | Zhuoran Liu (lzr@google.com), Youlong Cheng (ylc@google.com) | | **Sponsor** | Jonathan Hseu (jhseu@google.com) | From b83d5455ab8e508bd3f516799f03aa0db094fd0c Mon Sep 17 00:00:00 2001 From: Zhuoran Liu <49047362+lzr-google@users.noreply.github.com> Date: Fri, 8 Nov 2019 17:07:06 -0800 Subject: [PATCH 093/365] Update rfcs/20191106-tf2-tpu-savedmodel.md Co-Authored-By: Edd Wilder-James --- rfcs/20191106-tf2-tpu-savedmodel.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20191106-tf2-tpu-savedmodel.md b/rfcs/20191106-tf2-tpu-savedmodel.md index 09bb09c92..475ca8693 100644 --- a/rfcs/20191106-tf2-tpu-savedmodel.md +++ b/rfcs/20191106-tf2-tpu-savedmodel.md @@ -46,7 +46,7 @@ Some major differences between CPU and TPU Graph: VarHandleOp, and consumed by ReadVariableOp. Also for reducing the number of TPU compilation, serving platforms(For example, -Servomatic) prefers batching the inference requests with a few allowed batch +[TensorFlow Serving](https://www.tensorflow.org/tfx/guide/serving)) prefers batching the inference requests with a few allowed batch sizes. This requires wrapping TPUPartitionedCall in another function, and called by BatchFunction. From c3aa72efbde0fd02c0999e3e58dbf584e89cd4c7 Mon Sep 17 00:00:00 2001 From: Mehdi Amini Date: Mon, 11 Nov 2019 10:36:43 -0800 Subject: [PATCH 094/365] RFC: MLIR Dialects for TensorFlow (#115) * MLIR Dialects for TensorFlow * Update 20190612-mlir-dialect.md Change status to Accepted --- rfcs/20190612-mlir-dialect.md | 335 ++++++++++++++++++++++++++++++++++ 1 file changed, 335 insertions(+) create mode 100644 rfcs/20190612-mlir-dialect.md diff --git a/rfcs/20190612-mlir-dialect.md b/rfcs/20190612-mlir-dialect.md new file mode 100644 index 000000000..388b44e24 --- /dev/null +++ b/rfcs/20190612-mlir-dialect.md @@ -0,0 +1,335 @@ +# TensorFlow MLIR Dialects + +|Status | Accepted | +|:------------ | :-----------------------------------------| +|**Author(s)** | Mehdi Amini (aminim@google.com) | +| | Tatiana Schpeisman (shpeisman@google.com) | +| | Chris Lattner (clattner@google.com) | +|**Sponsor** | Alexandre Passos (apassos@google.com) | +| | Jacques Pienaar (jpienaar@google.com) | +|**Updated** | 2019-06-10 | + +## Objective + +[MLIR](https://medium.com/tensorflow/mlir-a-new-intermediate-representation-and-compiler-framework-beba999ed18d) +is the intermediate representation and compiler framework we are investing in to +build the compiler infrastructure for TensorFlow. The representation for +TensorFlow exposed in this document will be what future high-level +transformations will operate on. + +We make use of two different dialects to model TensorFlow graphs in MLIR: first +the `tf_executor` dialect that represents the execution model of the TensorFlow +executor (e.g. control dependencies, deadness propagation) and the `tf` dialect +which represent the regular operations in a TensorFlow graph (the ones that +don’t have special contract with the executor). + +One intent of this design is that TensorFlow 2.x features can choose to target +just the `tf` dialect, allowing us to phase out the `tf_executor` dialect in +subsequent TensorFlow releases. The combination of the two dialects allows to +represent arbitrary existing TensorFlow graphs. + +The representation in this document does not address the specific needs of +accelerators or "custom backends" for TensorFlow. We plan to provide a generic +infrastructure for replacing the TF/XLA bridge with a more flexible and reusable +system across targets. A later design proposal will address these aspects. Also +this representation does not address shape inference, an independent design +exploration is being conducted separately at the moment. + +## TensorFlow Dialect + +The TensorFlow dialect in MLIR is an open dialect (it allows operations that +MLIR doesn't know about) that can contain any TensorFlow operation that does not +have a specific handling by the executor. These operations don’t operate on dead +values, don’t have control dependencies, and execute conceptually in program +order. The form used in this dialect aligns with the direction taken by +TensorFlow 2.0 with tf.function and autograph, as well as with the needs of +other frontends. This should ease the development of analyses and +transformations: optimizations operate on a simpler semantics and local graph +transformations can be validated in a local scope. Simple patterns like folding +`x-x` into a constant 0 do not need to update any control dependencies. It +should also be easily lowerable towards multiple accelerators and heterogeneous +systems in general. + +Operations in this dialect usually operate on tensor and scalar types defined in +the standard dialect. The extra defined types are specific to TensorFlow: `QINT` +types like !tf.qint8 (etc), `QUINT` types like !tf.quint8, all of the `REF` +types like !tf.uint8ref, as well as !tf.string, !tf.resource, and !tf.variant +which correspond to the tensorflow types of the same name. + +### Example: + +Below is an example of a function operating on the TensorFlow dialect: + +```mlir {.mlir} +/// This is a regular function, taking inputs by value and returning a new value. +/// The body is a regular CFG. +func some_function(%input : tensor<*xf32>) -> tensor<*xf32> { + // TensorFlow operations are not variadic: this `tf.add` operation always + // takes two inputs and returns a single output. This simplifies + // pattern-matching, verification and rewriting. + %added = tf.Add %input, %input : tensor<*xf32> + // Operations have sequential execution semantics in a basic block, there are + // no control dependencies. The compiler can reorder operations according to + // the as-if rule ( https://en.wikipedia.org/wiki/As-if_rule ). + %three = constant splat, 3.0> + %mul = tf.Mul %input, %three : (tensor<*xf32>, tensor) -> tensor<*xf32> + + // Only control flow v2 is supported in TF dialect. + // The tf.If operation takes three functions that accept the same + // arguments: the condition returns a bool and the two branches must return + // the same type, which is also the return of the tf.If. + %value = "tf.If”(%added, %mul) + {cond: @cond_func, true_branch: @func_foo, false_branch: @func_bar} + : (tensor<*xf32>, tensor<*xf32>) -> tensor<*xf32> + + return %value : tensor<*xf32> +} +``` + +## TensorFlow Executor Dialect + +The `tf_executor` dialect is intended to model the current TensorFlow executor +semantics and (when combined with the `tf` dialect) can represent arbitrary +TensorFlow 1.x and 2.x graphs. As such it follows the executor model, including +deadness propagation, concurrent semantics, and control dependencies. The +`tf_executor` dialect defines two dialect-specific types: + +* `!tf_executor.control` to represent control dependencies. +* `!tf_executor.token` to represent the pair of operations modeling + NextIteration operation. + +The `tf_executor` dialect is closed (operations are all known to MLIR) as there +are only 8 TensorFlow ops with specific graph executor behavior and 4 additional +operations to represent islands of predictability. + +This dialect models the TensorFlow executor semantics; as such, a large part of +the defined operations are mirroring the +[TensorFlow Control Flow Ops](https://www.tensorflow.org/api_docs/cc/group/control-flow-ops) +and +[implement Control Flow In TensorFlow](http://download.tensorflow.org/paper/white_paper_tf_control_flow_implementation_2017_11_1.pdf). +Also, almost all the operations accept a variadic number of control tokens and +return an extra control token as output. Except for `tf_executor.Merge` and +`tf_executor.ControlTrigger`, operations are propagating deadness: if any of the +input (control and non-control) is dead, all the outputs (control and +non-control) are dead as well. For `tf_executor.Merge`, the output is dead only +when either an input control token is dead or all of the regular inputs are +dead. For `tf_executor.ControlTrigger`, a live control output is always produced +even when some control inputs are dead. + +### `tf_executor.graph` Operation + +The `tf_executor.graph` operation contains a region with a single block that +lists the operations in a TensorFlow graph. The operations are topologically +sorted in-order (no cycles are allowed in the SSA values). The execution model +for operations in this block follows the TensorFlow executor semantics: + +1. Operations that don’t have any transitive dependencies through the SSA + def/use chains may be executed in parallel + (`tf_executor.NextIteration.Source` is the exception). +2. SSA values in this block can be implicitly dead. This means that every SSA + value defined in a `tf_executor.graph` can be considered implicitly wrapped + in a conceptual `dead_or` structure, and includes a runtime flag + indicating if the value is dead or present. Operations may have special case + handling of dead values. +3. Operations in this dialect return a value of type `!tf_executor.control` as + last returned value (exceptions are `tf_executor.NextIteration.sink` and + `tf_executor.fetch` which don’t return any value). + +The `tf_executor.graph` op only allows specific `tf_executor` dialect operations +in its body: the `tf_executor.graph` verifier will reject any unknown operation. +In order to execute standard `tf` dialect operations (like `tf.Add`) they must +be wrapped in the `tf_executor.island` operation. + +The `tf_executor.graph` operation does not accept any operands, inputs are +implicitly captured by the region, representing the feeds to the graph. + +The region attached to `tf_executor.graph` is terminated by a +`tf_executor.fetch` operation. The non-control operands of the terminator +correspond to the result values (or fetches) of the `tf_executor.graph` +operation. The behavior is undefined if any of the operands of the +`tf_executor.fetch` is dead. + +```mlir {.mlir} +%fetches = tf_executor.graph : tensor<*xf32> { + // Operations in the current block execute when their inputs are ready, + // possibly concurrently. + // Only operations in the tf_executor dialect are expected here. + // Ops can return multiple outputs and a control token for control + // dependencies. + // We don’t mention the control token in the return type here, it is implicit. + %0, %ctl0 = tf_executor.opA %feed#0, %feed#1 : tensor<*xf32> + %1, %ctl1 = tf_executor.opB : tensor<*xf32> + %2, %ctl2 = tf_executor.opC %1, %ctl0 : tensor<*xf32> + %3, %ctl3 = tf_executor.opD %2 : tensor<*xf32> + tf_executor.fetch %3 : tensor<*xf32> +} // end of the “tf_executor.graph" operation/region +``` + +### ‘tf_executor.island’ Operation + +The `tf_executor.graph` operation does not allow `tf` dialect operations to be +immediately nested underneath it. The `tf_executor.island` is introduced as a +wrapper for general computation (for example, all the `tf` dialect operations): +this results in a more consistent representation which makes analysis and +transformation simpler. + +The `tf_executor.island` operation has a single region with a single block +attached (only functional control flow is allowed). The block is terminated by a +`tf_executor.yield` operation. The operands of the terminator correspond to the +result values of the `tf_executor.graph` operation. An extra result of type +`!_tf_executor.control` is always produced by every `tf_executor.island`. + +Within an island, execution semantics follow standard sequential behavior +consistent with the direction of TensorFlow 2.0 and autograph, and desirable for +compiler analyses and transformations. Values in an island can’t be dead. Other +nested `tf_executor.graph` operations can be present in the region (or called +functions) to re-enable the TensorFlow executor behavior for a subsection of the +code. This is important for the following reasons: + +* Initially the functional control flow operations are calling functions + involving nested graphs, if `tf_executor.graph` weren’t allowed in an + island, these operations would need to have an equivalent in the + `tf_executor` dialect. +* Nesting also allows to form islands without involving inter-procedural + analyzes: any function call may involve a callee with a graph. + +The `tf_executor.island` region allows implicit capture. If any value captured +by a `tf_executor.island` is dead, the whole region does not execute and every +produced value is marked as dead as well. + +An arbitrary number of `tf_executor.control` operands are accepted by a +`tf_executor.island` operation. If any operand is dead, the region is not +executed and dead values are immediately returned for every result. + +```mlir {.mlir} +// The island is capturing implicitly %0 and %1. It is also taking a control +// dependency %ctl0 as input. It produces a tensor<*xf32> value matching the +// argument of the yield terminator, as well as an extra control token. +%2, %ctl2 = tf_executor.island (%ctl0) + : (tensor<*xf32>, !tf_executor<"control">) -> tensor<*xf32> { + %added = tf.Add %1, %0 : tensor<*xf32> + %mul = tf.Mul %added, %1 :tensor<*xf32> + + // The yield terminator operands are the result values of the island. + tf_executor.yield %mul : tensor<*xf32> +} +``` + +The case where a single operation is wrapped inside an island can even be +compressed by inferring the terminator to be the returned value of the +operation. The example above if it only contained the addition with implicit +capture would be displayed as: + +```mlir {.mlir} +%2, %ctl2 = tf_executor.island(%ctl0) wraps tf.Add %1, %0 : tensor<*xf32> +``` + +### `tf_executor.Switch` Operation + +[`tf_executor.Switch`](https://www.tensorflow.org/api_docs/cc/class/tensorflow/ops/switch): +takes two inputs,`predicate`and`data`and returns two regular +outputs,`true_output`,`false_output`. The`data`input is copied +to`true_output`if`predicate`evaluates to true otherwise it is copied +to`false_output`. The other output is marked as dead. If one of the inputs or a +control token is dead, then all of the outputs are marked as dead as well. + +### `tf_executor.SwitchN` Operation + +[`tf_executor.SwitchN`](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/ops/control_flow_ops.cc#L49-L53): +takes two inputs,`data`and`index`and an integer attribute`num_outs`indicating +the number of outputs. The`data`input is copied to output indicated by +the`index` input. The other outputs are marked as dead. If one of the inputs or +a control token is dead, then all of the outputs are marked as dead as well. + +### `tf_executor.Merge` Operation + +[`tf_executor.Merge`](https://www.tensorflow.org/api_docs/cc/class/tensorflow/ops/merge): +takes a variadic number of inputs, and returns a single output. The output is +defined as a non-dead input (selected in a non-defined way if multiple inputs +are non-dead). If all inputs are dead, the output is also dead. + +### NextIteration: `tf_executor.NextIteration.Source` and `tf_executor.NextIteration.Sink` Operation + +The TensorFlow +[`NextIteration`](https://www.tensorflow.org/api_docs/cc/class/tensorflow/ops/next-iteration) +op is modeled using these two paired operations. Since _NextIteration_ is +intended for modeling the loop back-edges, breaking it in two different +operations allows to keep a structural +DAG.`tf_executor.NextIteration.Source`does not take any operand and produces two +results: one regular value corresponding to the TensorFlow graph, and a second +value of type`tf_executor.loop_token`. This token is consumed by the +paired`tf_executor.NextIteration.Sink`Operation alongside the value that is +passed through the back-edge. No value is returned +by`tf_executor.NextIteration.Sink`. The type of the result of the source must +match the type of the value operand of the sink. + +`tf_executor.NextIteration.Source` is an exception in the executor model in the +sense that it executes after the paired `tf_executor.NextIteration.Sink` even +though there is no data dependency between them. + +### `tf_executor.LoopCond` Operation + +[`tf_executor.LoopCond`](https://www.tensorflow.org/api_docs/cc/class/tensorflow/ops/loop-cond): +forwards its boolean input to its output, +[it acts as`pivot` for marking the loop termination condition](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/control_flow_ops.h#L115-L118). + +### `tf_executor.Enter` Operation + +[`tf_executor.Enter`](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/control_flow_ops.h##77-L79): +takes a single input and a`name` string attribute that identifies the execution +frame. It forwards its input to its output in the new execution frame. + +### `tf_executor.Exit` Operation + +[`tf_executor.Exit`](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/control_flow_ops.h#L90-L92): +forwards its single input to its output, exiting the current execution frame. + +### `tf_executor.ControlTrigger` Operation + +[`tf_executor.ControlTrigger`](https://www.tensorflow.org/api_docs/cc/class/tensorflow/ops/control-trigger): +it is similar to +[a no-op](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/control_flow_ops.h#L23-L26) +that acts as a placeholder for control dependencies. It always produces a live +control output even when some control inputs are dead. + +### `tf_executor.Send` Operation + +[`tf_executor.Send`](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/sendrecv_ops.h#L24): +matches TensorFlow semantics. + +### `tf_executor.Recv` Operation + +[`tf_executor.Recv`](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/sendrecv_ops.h#L37): +matches TensorFlow semantics. + +## Example + +Below is an example of a loop decrementing an initial `%_count.init` integer +until it reaches 0 and returns the last value in the loop. + +```mlir {.mlir} +// Loop `%count.init` times and return the last counter (always zero) +%fetches = tf_executor.graph { + + %loop.init, %ctl0 = tf_executor.Enter %count.init : i32 + + %next_count, %tok = tf_executor.NextIteration.Source : i32 + + %loop.body.init, %ctlMerge = tf_executor.Merge %loop.init, %next_count : i32 + + %dec_count, %ctlAdd = tf_executor.island + wraps tf.Add %loop.body.init, -1 : (i32, i32) -> i32 + + %loop_cond, %ctlNE = tf_executor.island + wraps tf.NotEqual %dec_count, 0 : (i32, i32) -> i1 + + %true, %false, %ctlSwitch = tf_executor.Switch %loop_cond, %dec_count : i32 + + tf_executor.NextIteration.Sink[%tok] %false : i32 + + %exit_count, %ctlExit = tf_executor.Exit %true : i32 + + tf_executor.fetch %exit_count : i32 +} // end of the "tf_executor.graph" operation/region +``` + From c4dafa0a5544ff9a3e88a4a0b92bcaec782930f9 Mon Sep 17 00:00:00 2001 From: Brijesh Krishnaswami <8534565+brijk7@users.noreply.github.com> Date: Mon, 11 Nov 2019 12:07:22 -0800 Subject: [PATCH 095/365] update RFC template to make required sections explicit (#172) * update RFC template to make required sections explicit * update with minor edits * update with review feedback --- rfcs/yyyymmdd-rfc-template.md | 50 ++++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 9 deletions(-) diff --git a/rfcs/yyyymmdd-rfc-template.md b/rfcs/yyyymmdd-rfc-template.md index afb966ab1..631fffe2f 100644 --- a/rfcs/yyyymmdd-rfc-template.md +++ b/rfcs/yyyymmdd-rfc-template.md @@ -34,15 +34,47 @@ idea, and list pros/cons to each approach. If there are alternatives that you have eliminated, you should also list those here, and explain why you believe your chosen approach is superior. -Factors to consider include: - -* performance implications -* dependencies -* maintenance -* platforms and environments impacted (e.g. hardware, cloud, other software - ecosystems) -* [compatibility](https://www.tensorflow.org/programmers_guide/version_compat) -* how will this change impact users, and how will that be managed? +Make sure you’ve thought through and addressed the following sections. If a section is not relevant to your specific proposal, please explain why, e.g. your RFC addresses a convention or process, not an API. + + +### Alternatives Considered +* Make sure to discuss the relative merits of alternatives to your proposal. + +### Performance Implications +* Do you expect any (speed / memory)? How will you confirm? +* There should be microbenchmarks. Are there? +* There should be end-to-end tests and benchmarks. If there are not (since this is still a design), how will you track that these will be created? + +### Dependencies +* Dependencies: does this proposal add any new dependencies to TensorFlow? +* Dependent projects: are there other areas of TensorFlow or things that use TensorFlow (TFX/pipelines, TensorBoard, etc.) that this affects? How have you identified these dependencies and are you sure they are complete? If there are dependencies, how are you managing those changes? + +### Engineering Impact +* Do you expect changes to binary size / startup time / build time / test times? +* Who will maintain this code? Is this code in its own buildable unit? Can this code be tested in its own? Is visibility suitably restricted to only a small API surface for others to use? + +### Platforms and Environments +* Platforms: does this work on all platforms supported by TensorFlow? If not, why is that ok? Will it work on embedded/mobile? Does it impact automatic code generation or mobile stripping tooling? Will it work with transformation tools? +* Execution environments (Cloud services, accelerator hardware): what impact do you expect and how will you confirm? + +### Best Practices, Tutorials and Examples +* Does this proposal change best practices for some aspect of using/developing TensorFlow? How will these changes be communicated/enforced? +* If design changes existing API or creates new ones, the design owner should create end-to-end examples (ideally, a tutorial) which reflects how new feature will be used. Some things to consider related to the tutorial: + - The minimum requirements for this are to consider how this would be used in a Keras-based workflow, as well as a non-Keras (low-level) workflow. If either isn’t applicable, explain why. + - It should show the usage of the new feature in an end to end example (from data reading to serving, if applicable). Many new features have unexpected effects in parts far away from the place of change that can be found by running through an end-to-end example. + - This should be written as if it is documentation of the new feature, i.e., consumable by a user, not a TensorFlow developer. The code does not need to work (since feature is not implemented yet). + +### Compatibility +* Does the design conform to the backwards & forwards compatibility [requirements](https://www.tensorflow.org/programmers_guide/version_compat)? +* How will this proposal interact with other parts of the TensorFlow Ecosystem? + - How will it work with TFLite? + - How will it work with distribution strategies? + - How will it interact with tf.function? + - Will this work on GPU/TPU? + - How will it serialize to a SavedModel? + +### User Impact +* What are the user-facing changes? How will this feature be rolled out? ## Detailed Design From 474d9845d23352dd0a10bf04d70d171c7ae26ca6 Mon Sep 17 00:00:00 2001 From: lzr-google Date: Wed, 13 Nov 2019 12:10:37 -0800 Subject: [PATCH 096/365] Update: 2019-11-13 12:10 pm --- rfcs/20191106-tf2-tpu-savedmodel.md | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/rfcs/20191106-tf2-tpu-savedmodel.md b/rfcs/20191106-tf2-tpu-savedmodel.md index 475ca8693..62fa65d48 100644 --- a/rfcs/20191106-tf2-tpu-savedmodel.md +++ b/rfcs/20191106-tf2-tpu-savedmodel.md @@ -2,10 +2,10 @@ | Status | Proposed | | :------------ | :------------------------------------------------------ | -| **RFC #** | [171](https://github.com/tensorflow/community/pull/171) | +| **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) | : : (update when you have community PR #) : -| **Author(s)** | Zhuoran Liu (lzr@google.com), Youlong Cheng (ylc@google.com) | -| **Sponsor** | Jonathan Hseu (jhseu@google.com) | +| **Author(s)** | ylc@google.com, lzr@google.com | +| **Sponsor** | jhseu@google.com | | **Updated** | 2019-11-06 | ## Objective @@ -46,16 +46,16 @@ Some major differences between CPU and TPU Graph: VarHandleOp, and consumed by ReadVariableOp. Also for reducing the number of TPU compilation, serving platforms(For example, -[TensorFlow Serving](https://www.tensorflow.org/tfx/guide/serving)) prefers batching the inference requests with a few allowed batch +Servomatic) prefers batching the inference requests with a few allowed batch sizes. This requires wrapping TPUPartitionedCall in another function, and called by BatchFunction. Below is an intuitive example of how a TPU graph is different from a CPU one: -![Original CPU Graph](20191106-tf2-tpu-savedmodel/cpu_graph.png) +![Original CPU Graph](https://cs.corp.google.com/codesearch/f/piper///depot/google3/experimental/users/lzr/tf2-tpu-rfcs/tf2-tpu-savedmodel/cpu_graph.png)
Original CPU Graph.
-![TPU Graph](20191106-tf2-tpu-savedmodel/tpu_graph.png) +![TPU Graph](https://cs.corp.google.com/codesearch/f/piper///depot/google3/experimental/users/lzr/tf2-tpu-rfcs/tf2-tpu-savedmodel/tpu_graph.png)
TPU Graph.
### User Control of Device Placement @@ -66,7 +66,7 @@ for every use case. For example even though dense embedding ops are allowed on TPU, serving models might still want to run embedding lookups on CPU because the embeddings are too big to fit on TPU. -![Customized Embeddings](20191106-tf2-tpu-savedmodel/customized_embeddings.png) +![Customized Embeddings](https://cs.corp.google.com/codesearch/f/piper///depot/google3/experimental/users/lzr/tf2-tpu-rfcs/tf2-tpu-savedmodel/customized_embeddings.png)
Example of user control. In this graph, both ‘custom_embedding’ and ‘dense’ can run on TPU. But users want ‘custom_embedding’ to run on CPU for whatever reason, e.g. CPU computations can be parallelized, users don’t have @@ -75,7 +75,8 @@ SavedModel that only ‘dense’ is to run on TPU.
## User Benefit -Enable TPU Inference. + ## Design Proposal @@ -127,7 +128,7 @@ Users need to do the following things to export a TPU SavedModel in TF2.x: The resulting TPU inference graph looks like this: -![Resulting TPU Graph](20191106-tf2-tpu-savedmodel/tpu_result.png) +![Resulting TPU Graph](https://cs.corp.google.com/codesearch/f/piper///depot/google3/experimental/users/lzr/tf2-tpu-rfcs/tf2-tpu-savedmodel/tpu_result.png)
Resulting TPU Graph.
For Advanced Users who need customized Ops @@ -331,3 +332,7 @@ def save_model(model, tags, options) ``` + +## Questions and Discussion Topics + + From 9008400a9087fbeec55d58910696878d44d622b9 Mon Sep 17 00:00:00 2001 From: lzr-google Date: Wed, 13 Nov 2019 12:14:09 -0800 Subject: [PATCH 097/365] Update: 2019-11-13 12:15 pm --- rfcs/20191106-tf2-tpu-savedmodel.md | 267 +++++++++++++++------------- 1 file changed, 143 insertions(+), 124 deletions(-) diff --git a/rfcs/20191106-tf2-tpu-savedmodel.md b/rfcs/20191106-tf2-tpu-savedmodel.md index 62fa65d48..93f89cdba 100644 --- a/rfcs/20191106-tf2-tpu-savedmodel.md +++ b/rfcs/20191106-tf2-tpu-savedmodel.md @@ -1,12 +1,11 @@ # TPU SavedModel Export API for TF2.x -| Status | Proposed | -| :------------ | :------------------------------------------------------ | -| **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) | -: : (update when you have community PR #) : -| **Author(s)** | ylc@google.com, lzr@google.com | -| **Sponsor** | jhseu@google.com | -| **Updated** | 2019-11-06 | +Status | Proposed +:------------ | :----------------------------------------------------------- +**RFC #** | [171](https://github.com/tensorflow/community/pull/171) +**Author(s)** | Zhuoran Liu (lzr@google.com), Youlong Cheng (ylc@google.com) +**Sponsor** | Jonathan Hseu (jhseu@google.com) +**Updated** | 2019-11-06 ## Objective @@ -20,6 +19,46 @@ inference
, which: ## Motivation +### TPU Serving Requirement + +Serving a model on TPU is not as straightforward as serving on CPU and GPU, +because TPU serving has special requirements, listed as follows: + ++ Contract between TensorFlow graph and TF2XLA Bridge. The new bridge will + still respect this contract. The information of “which part of computation + should run on TPU” is conveyed from Graph to Bridge by tagging a special + Node attribute `_tpu_replicate`. Because of this, we need to provide + information during Function object instantiation in order for this attribute + to be correctly attached to Nodes during Graph building; + ++ Multi-core TPU serving. TPU has various deployment configurations, for + example 1x1 Dragonfish chip has 2 cores, 2x2 Dragonfish chip has 8 cores. + The exported saved model should be able to run on different configurations + and can leverage all the TPU cores. + + - When users write their model code, they likely don’t have information + about how many TPU they have for serving / which core they can use. + Therefore we need a Graph level abstraction to express graph + partitioning information. tf.device() cannot serve this purpose, because + it requires users to have knowledge about the physical device they have + during serving; + - To make efficient usage of multicore TPUs, we need to encapsulate TPU + computations as FunctionDef, and construct TPUPartitionedCall / + TPUOrdinalSelector to perform round-robin core selection; + ++ Tagging system of SavedModel. Users rely on a tagging system to load their + models for serving. E.g. CPU MetaGraphs have one tag ‘serve’, while TPU + MetaGraphs have two tags ‘serve’ and ‘tpu’. Only with correct tags can + SavedModels be loaded correctly. + +Below is an intuitive example of how a TPU graph is different from a CPU one: + +![Original CPU Graph](20191106-tf2-tpu-savedmodel/cpu_graph.png) +
Original CPU Graph.
+ +![TPU Graph](20191106-tf2-tpu-savedmodel/tpu_graph.png) +
TPU Graph.
+ ### Limitation of current `tf.saved_model.save()` MetaGraphDef allows saving customized tags. Current downstream components like @@ -28,36 +67,6 @@ MetaGraph. However tf.saved_model.save() does not allow users to specify the set of tags in MetaGraphDef, but hard-coded the MetaGraph to have only one ‘serve’ tag. -### Special Logic in TPU Inference Graph - -Under the status quo, TPU computations have to be represented by a drastically -different graph from CPU. Inference-specific requirements (e.g. batching / -core-selection) also adds another layer of complexity. - -Some major differences between CPU and TPU Graph: - -+ As a protocol between TensorFlow Graph and TF2XLA, TPU device placement of a - Node is done by attaching `_tpu_replicate` attribute; -+ For multicore efficiency, TPU computations have to be encapsulated as a - function and saved in FunctionLibrary, and will be called by - TPUPartitionedCall. A TPUOrdinalSelector node has to be connected to - TPUPartitionedCall to do efficient round-robin core selection; -+ Variable nodes have to be lifted from TPU functions, rewritten as - VarHandleOp, and consumed by ReadVariableOp. - -Also for reducing the number of TPU compilation, serving platforms(For example, -Servomatic) prefers batching the inference requests with a few allowed batch -sizes. This requires wrapping TPUPartitionedCall in another function, and called -by BatchFunction. - -Below is an intuitive example of how a TPU graph is different from a CPU one: - -![Original CPU Graph](https://cs.corp.google.com/codesearch/f/piper///depot/google3/experimental/users/lzr/tf2-tpu-rfcs/tf2-tpu-savedmodel/cpu_graph.png) -
Original CPU Graph.
- -![TPU Graph](https://cs.corp.google.com/codesearch/f/piper///depot/google3/experimental/users/lzr/tf2-tpu-rfcs/tf2-tpu-savedmodel/tpu_graph.png) -
TPU Graph.
- ### User Control of Device Placement There has to be a way for users to specify which part of computation should be @@ -66,33 +75,35 @@ for every use case. For example even though dense embedding ops are allowed on TPU, serving models might still want to run embedding lookups on CPU because the embeddings are too big to fit on TPU. -![Customized Embeddings](https://cs.corp.google.com/codesearch/f/piper///depot/google3/experimental/users/lzr/tf2-tpu-rfcs/tf2-tpu-savedmodel/customized_embeddings.png) +![Customized Embeddings](20191106-tf2-tpu-savedmodel/customized_embeddings.png)
Example of user control. In this graph, both ‘custom_embedding’ and ‘dense’ can run on TPU. But users want ‘custom_embedding’ to run on CPU for whatever reason, e.g. CPU computations can be parallelized, users don’t have enough TPU resources, etc. In this case, there has to be a way for them to tell SavedModel that only ‘dense’ is to run on TPU.
-## User Benefit +## Design Proposal - +### Caveat -## Design Proposal +`@tf.tpu.function` should only be used for serving. It should never appear in +training code. ### User Facing API For General TF2 Users -Users need to do the following things to export a TPU SavedModel in TF2.x: +Under the proposed design, users will need to do the following things to export +a TPU SavedModel in TF2.x: 1. Replace @tf.function with @tf.tpu.function for functions they wish to run on TPU; ```python + # `model` can be any Python Callable. E.g. A Keras Model. @tf.tpu.function - def predict_step(images): - ... + def predict_step(image_tensors): + return model(image_tensors) ``` 2. Create main serving function and call the tpu function above. The main @@ -128,7 +139,7 @@ Users need to do the following things to export a TPU SavedModel in TF2.x: The resulting TPU inference graph looks like this: -![Resulting TPU Graph](https://cs.corp.google.com/codesearch/f/piper///depot/google3/experimental/users/lzr/tf2-tpu-rfcs/tf2-tpu-savedmodel/tpu_result.png) +![Resulting TPU Graph](20191106-tf2-tpu-savedmodel/tpu_result.png)
Resulting TPU Graph.
For Advanced Users who need customized Ops @@ -144,30 +155,35 @@ In such cases, we provide the flexibility for users to tweak `@tf.tpu.function`. ... ``` -2. Users can nest TPU functions within BatchFunction: +2. Users can also nest TPU functions within BatchFunction: ```python - @batch_ops.nondifferentiable_batch_function - @tf.tpu.function + @tf.tpu.function(use_batch_function=True, + # Below arguments for BatchFunction + # are optional + max_batch_size=..., + allowed_batch_sizes=... + ...) def predict_step(images): ... ``` -3. User can also use their customized PartitionedCallOp: +3. User can also customize their TPUPartitionedCallOp: ```python - @batch_ops.nondifferentiable_batch_function - @my_partitioned_call_op_constructor - @tf.tpu.function(use_tpu_partitioned_call=False) + @tf.tpu.function(use_tpu_partitioned_call=True, + device_ordinal=0) def predict_step(images): ... ``` For Keras Users -Keras users only need to pass `export_to_tpu=True` to save to TPU SavedModel. -(Currently, we require the Keras model being saved to be completely -TPU-compatible.) +Option 1: + +Introduce argument `export_to_tpu`. For Keras users, they will only need to pass +`export_to_tpu=True` to save to TPU SavedModel. (Currently, we require the graph +defined by `model` to be completely TPU-compatible.) ```python tf.keras.models.save_model( @@ -176,31 +192,51 @@ tf.keras.models.save_model( export_to_tpu=True) ``` -### Changes to TF2.x API +Option 2: + +Keep tf.keras.models.save_model() unchanged. Users use a keras model as if they +were using a TF2 Function. + +```python +# isinstance(model, (tf.keras.Model, tf.keras.layers.Layer)) == True +@tf.tpu.function +def predict_step(image_tensors): + return model(image_tensors) +``` -1. In addition to taking the keyword argument `signatures`, - tf.saved_model.save() will take an optional argument `tags`. +### Changes to TF2.x API - Originally, concrete functions specified by `signatures` will be saved in - one MetaGraph, which has ‘serve’ tag hard-coded. +1. `tf.saved_model.save()` will take an optional argument `tags`. - `tags` is an optional argument. It is a Python iterable, representing the - list of tags for MetaGraph. This allows user to specify customized tags. + `tags` is an optional argument which represents a list of tags. This allows + users to specify customized tags. For example, Servomatic or model server + requires both ‘tpu’ and ‘serve’ tags to load TPU saved model. 2. Implement an additional `@tf.tpu.function` decorator in `tensorflow/python/tpu/tpu.py`. This decorator handles TPU rewriting under the hood. -3. An additional `use_tpu_partitioned_call` keyword argument for - `def_function.function()` and `Function.__init__()`. This argument will be - passed through to the place where PartitionedCallOp is created. Originally - all stateful functions will generate StatefulPartitionedCallOp. Now we - switch to TPUPartitionedCallOp, and this routing is done by checking the - value of `use_tpu_partitioned_call`. + `tf.tpu.function()` takes the following optional arguments: + + - `func`: A Python function. If not set, will return a wrapper that takes + a Python function. This allows @tf.tpu.function to be called w/ or w/o + arguments; + - `use_tpu_partitioned_call`: boolean. Controls whether TPUPartitionedCall + will be used; + - `device_ordinal`: Used in conjunction with `use_tpu_partitioned_call`. A + tensor or a TF Function object that returns a tensor, designating the + device ordinal. Default to tpu_ordinal_selector(); + - `use_batch_function`: boolean. Controls whether BatchFunction will be + used; + - `num_batch_threads`, `max_batch_size`, `batch_timeout_micros`, + `allowed_batch_sizes`, `max_enqueued_batches`: arguments used to + configure BatchFunction. ### Changes to Keras API -Keras users would like `tf.keras.models.save_model()` to work directly for +Option 1 + +If Keras users would like `tf.keras.models.save_model()` to work directly for exporting TPU SavedModel, without having knowledge of tf.function / tags / signatures. The only way to achieve this is to hide those logics under `tf.keras.models.save_model()`. @@ -209,9 +245,14 @@ After the change, `tf.keras.models.save_model()` will have two additional arguments: 1. `export_to_tpu`: Simply setting this to `True` will export TPU model; -2. `tags_signatures`: Optionally for advanced users, if they want to have more - control of what tags / signatures they are using, they can use this argument - as if they are using TF2.x saving API. +2. `tags`: Optionally for advanced users, if they want to have more control of + what tags they are using, they can use this argument as if they are using + TF2.x saving API. + +Option 2 + +No change. Users can save a keras model for TPU inference with +tf.saved_model.save(). ## Detailed Design @@ -220,69 +261,51 @@ arguments: Under the hood, exporter API is doing the following things: + The @tf.tpu.function wraps user-specified function; -+ `use_tpu_partitioned_call` as an attribute in Function class is controlling - whether TPUPartitionedCall is generated instead of StatefulPartitionedCall; + Tag the MetaGraph with user-defined tags. Step 1: Use a new decorator to wrap TPU version of the user-specified TPU function. It calls tpu.rewrite inside the original function to generate a TPU version of graph. By default, this will create a tpu function. If users wish to -preserve both CPU and TPU function, they can set `preserve_cpu_fn=True`. +preserve both CPU and TPU function, they can set ‘preserve_cpu_fn=True’. +Optionally, they can use `use_tpu_partitioned_call` and `use_batch_function` to +customize the Function object they get. ```python # tensorflow/python/tpu/tpu.py -FunctionCollection = namedtuple('FunctionCollection', ['tpu_fn', 'cpu_fn']) +def _tpu_partitioned_call_wrapper(tf_func, device_ordinal): + ... + +def _batch_function_wrapper(tf_func, + num_batch_threads, + max_batch_size, + batch_timeout_micros, + allowed_batch_sizes, + max_enqueued_batches): + ... def _rewrite_func_wrapper(func): - def tpu_fn(*x): - return rewrite(func, x) - return tpu_fn + ... @tf_export("tpu.function") def tpu_function(func=None, *args, **kwargs): - """Compiles a TPU function into a callable TensorFlow graph.""" - def inner_func(func): - preserve_cpu_fn = False - if 'preserve_cpu_fn' in kwargs: - preserve_cpu_fn = kwargs['preserve_cpu_fn'] - del kwargs['preserve_cpu_fn'] - - if preserve_cpu_fn: - cpu_fn = def_function.function(func, *args, **kwargs) - - kwargs.update({'use_tpu_partitioned_call': True}) + ... tpu_func = _rewrite_func_wrapper(func) - tpu_fn = def_function.function(tpu_func, *args, **kwargs) - - if preserve_cpu_fn: - func_collection = FunctionCollection(tpu_fn=tpu_fn, cpu_fn=cpu_fn) - return func_collection - else: - return tpu_fn - - if func: - return inner_func(func) - else: - return inner_func -``` - -Step 2: Pass the `use_tpu_partitioned_call` argument all the way through -to `functional_ops.py`, where TPUPartitionedCall will be created, instead of -StatefulPartitionedCall. - -```python -# tensorflow/python/ops/functional_ops.py - -if hasattr(f, "_use_tpu_partitioned_call") and f._use_tpu_partitioned_call: - outputs = tpu_functional.TPUPartitionedCall( - args=args, - device_ordinal=tpu_ops.tpu_ordinal_selector(), - Tout=tout, - f=f) + ... + if use_tpu_partitioned_call: + tpu_fn = _tpu_partitioned_call_wrapper(tpu_fn, device_ordinal) + ... + if use_batch_function: + tpu_fn = _batch_function_wrapper(tpu_fn, + num_batch_threads, + max_batch_size, + batch_timeout_micros, + allowed_batch_sizes, + max_enqueued_batches) + ... ``` -Step 3: Create MetaGraph for SavedModel. +Step 2: Create a MetaGraph with designated tags for the SavedModel. ```python # tensorflow/python/saved_model/save.py @@ -297,7 +320,7 @@ asset_info, exported_graph = _fill_meta_graph_def( ... ``` -### Support for Keras saving API +### Support for Keras saving API (Under option 1 for Keras) Adding an argument `export_to_tpu` for `tf.keras.models.save_model()`, which if set to true will rewrite the model for TPU inference. @@ -332,7 +355,3 @@ def save_model(model, tags, options) ``` - -## Questions and Discussion Topics - - From 0bfae5b20f62edf29e3c3ffa4049eaffb1fa971f Mon Sep 17 00:00:00 2001 From: Zhuoran Liu <49047362+lzr-google@users.noreply.github.com> Date: Wed, 13 Nov 2019 13:48:01 -0800 Subject: [PATCH 098/365] Update 20191106-tf2-tpu-savedmodel.md --- rfcs/20191106-tf2-tpu-savedmodel.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rfcs/20191106-tf2-tpu-savedmodel.md b/rfcs/20191106-tf2-tpu-savedmodel.md index 93f89cdba..2064b7728 100644 --- a/rfcs/20191106-tf2-tpu-savedmodel.md +++ b/rfcs/20191106-tf2-tpu-savedmodel.md @@ -231,6 +231,8 @@ def predict_step(image_tensors): - `num_batch_threads`, `max_batch_size`, `batch_timeout_micros`, `allowed_batch_sizes`, `max_enqueued_batches`: arguments used to configure BatchFunction. + - `preserve_cpu_fn`: boolean. With this set to true, users avoid having to + copy-paste the same block of code for CPU inference. ### Changes to Keras API From 4f2a1d0276235dd3e04cc3c2c19276f6ce9fa5a7 Mon Sep 17 00:00:00 2001 From: Edd Wilder-James Date: Tue, 19 Nov 2019 16:12:49 -0800 Subject: [PATCH 099/365] Create rfc-admin-guide.md (#165) Describe what community admins do as part of the RFC process --- governance/rfc-admin-guide.md | 138 ++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 governance/rfc-admin-guide.md diff --git a/governance/rfc-admin-guide.md b/governance/rfc-admin-guide.md new file mode 100644 index 000000000..6fdb6ff5e --- /dev/null +++ b/governance/rfc-admin-guide.md @@ -0,0 +1,138 @@ +# Admin guide for RFCs + +## Overview + +This document describes the process for community managers administering +TensorFlow RFCs. + +|Author |Edd Wilder-James [@ewilderj](https://github.com/ewilderj) | +:------------------------------|:-----------------------------| +|Last updated |2019-10-21 | + +## RFC Submission Process + +### 1. PR is submitted to `tensorflow/community` + +When a PR is submitted containing an RFC proposal, check for basic +formatting concerns. + +* The filename should be `rfcs/YYYYMMDD-my-rfc.md` - where YYYYMMDD is the + date, and hyphens connect any naming parts. No underscores. No uppercase + letters. + +* The header block of the RFC should be filled in properly, including the + status field set to "Proposed" + +### 2. Conform the RFC title + +* In GitHub ensure the PR title is `RFC: The RFC's Title`. Check past PRs to + see how they're all consistent. + +### 3. Edit the PR description + +The description (the first comment on the PR) of every RFC should look the + same. They should contain, in order: + + * When the public review period closes. This is at least two weeks from the +date of publication. + + * The header table from the RFC showing author, sponsor, date. + + * A summary of what the RFC is about + +Here's an example: + +
+ +*Comment period is open until 2019-08-28* + +# Kernel and Op Implementation and Registration API + +| Status | Proposed | +:-------------- |:---------------------------------------------------- | +| **Author(s)** | James Ring (sjr@google.com), Anna Revinskaya (annarev@google.com) | +| **Sponsor** | Günhan Gülsoy (gunan@google.com) | +| **Updated** | 2019-08-14 | + +## Objective + +Tensorflow (TF) currently provides a C++ API for implementing kernels and ops. The Voltron project aims to create a modular/plugin-based TF implementation with API and ABI surfaces. Plugins will be able to create and register custom kernel and op implementations. + +In order to provide a stable ABI, the Voltron team has chosen to provide C APIs to plugin authors. This document introduces the C API for op and kernel registration. For authors who wish to continue using C++ to interface with TensorFlow, an ABI-stable C++ header-only API is provided. +
+ +### 4. Apply labels + +* Apply the `RFC: Proposed` label, and any other appropriate label for the + particular area of TensorFlow concerned, e.g. `TFX`. + +### 5. Add the PR to the `RFC Management` project + +### 6. In the `RFC Management` project, move from "Needs attention" to "Under review". + +### 7. Publicize the RFC to `developers@tensorflow.org` and any other community-relevant mailing lists + +Here's a template announcement. Check out the [many examples](https://groups.google.com/a/tensorflow.org/g/developers/search?q=RFC). + +
+To: developers@tensorflow.org
+Subject: [RFC] ACME TensorFlow API
+
+Hi folks,

+ +I'm pleased to announce the publication of a new TensorFlow RFC, +[ACME TensorFlow API](https://github.com/tensorflow/community/pull/162). + +The comment period for this RFC is open through YYYY-MM-DD. Comments are +invited to the [pull request +linked](https://github.com/tensorflow/community/pull/162). You can view the +design doc there and also leave your comments inline on the +[document source](https://github.com/tensorflow/community/pull/162/files). + +**Summary** + +The TensorFlow ACME API allows usage of all vintage cartoon characters +in an agent-based simulation. Wile E Coyote and the Road Runner are +default personas, but we also propose the addition of Yosemite Sam +and Bugs Bunny. + + +Thanks in advance for your feedback! +
+ + +## RFC Acceptance Process + +When an RFC's comment period is over, a review meeting is usually held. +(There may be occasions when one is not needed, consult with the RFC author). +It is the responsibility of the author or sponsor to post the notes from +that review into a comment on the PR, but you may need to remind them to do +this. + +You can move the RFC into the "Awaiting notes" part of the `RFC Management` +project to help keep track. + +**If the RFC is accepted**, ask the proposer to submit a final update, changing +the status to Accepted, and adding the RFC number into the header, per +the template (an RFC's number is the same as the PR number GitHub assigned it.) + +Just occasionally you might have to do this yourself: you can edit the +Markdown in the PR yourself, as a code owner for the repository. + +You can then: + +* Remove the `RFC: Proposed` label and add the `RFC: Accepted` one +* Approve and merge the PR. + +This should automatically move it to `Accepted PRs` in the `RFC Management` +project. + +**Other possible end-states** + +* If revisions are required, note that in the PR comment, keep the PR open but + move it to `In Revision` in the `RFC Management` project. + +* If the RFC is abandoned, note that in the comments, close the PR, and move + it to the `Not progressed` column in the `RFC Management` project. + + From 3bc8692d187f3495a81667261500b033a229533d Mon Sep 17 00:00:00 2001 From: Edd Wilder-James Date: Fri, 22 Nov 2019 10:58:31 -0800 Subject: [PATCH 100/365] Update CODEOWNERS Add @brijk7 as RFC code owner. --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index 82ba9a548..d0cac1f9a 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -19,4 +19,4 @@ sigs/testing/ @ewilderj @dynamicwebpaige # RFCs -rfcs/ @ewilderj @martinwicke @goldiegadde @theadactyl +rfcs/ @ewilderj @martinwicke @theadactyl @brijk7 From 164026df4a188ebf04c99438beb99dbb6d4b4cb8 Mon Sep 17 00:00:00 2001 From: Even Oldridge Date: Mon, 25 Nov 2019 10:36:53 -0800 Subject: [PATCH 101/365] Update 20191016-dlpack-support.md Updated to include the tf-dlpack solution --- rfcs/20191016-dlpack-support.md | 78 ++++++++++++++------------------- 1 file changed, 34 insertions(+), 44 deletions(-) diff --git a/rfcs/20191016-dlpack-support.md b/rfcs/20191016-dlpack-support.md index 354d67a7c..650a9c11a 100644 --- a/rfcs/20191016-dlpack-support.md +++ b/rfcs/20191016-dlpack-support.md @@ -3,9 +3,9 @@ | Status | (Proposed) | :-------------- |:---------------------------------------------------- | | **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) (update when you have community PR #)| -| **Author(s)** | eoldridge@nvidia.com, @futurely, @VoVAllen | -| **Sponsor** | alexandre.tp@gmail.com | -| **Updated** | 2019-10-23 | +| **Author(s)** | eoldridge@nvidia.com, wmjlyjemaine@gmail.com, @VoVAllen | +| **Sponsor** | alexandre.tp@gmail.com, sanjoy@playingwithpointers.com | +| **Updated** | 2019-11-25 | ## Objective @@ -46,57 +46,47 @@ A blog post or release notes headline could read "Tensorflow now supports dlpack ## Design Proposal -@Santosh-Gupta @a6802739 @futurely @jermainewang This is where I need help. - -This is the meat of the document, where you explain your proposal. If you have -multiple alternatives, be sure to use sub-sections for better separation of the -idea, and list pros/cons to each approach. If there are alternatives that you -have eliminated, you should also list those here, and explain why you believe -your chosen approach is superior. - -Factors to consider include: - -* performance implications -* dependencies -* maintenance -* platforms and environments impacted (e.g. hardware, cloud, other software - ecosystems) -* [compatibility](https://www.tensorflow.org/programmers_guide/version_compat) -* how will this change impact users, and how will that be managed? - -@tobegit3hub asked: -The TensorFlow Tensor object provide API to get the array data of tensor. - -input_tensor.flat().data() -Can we get the data from the above function and use to initialize the DLTensor like this? +Notes from @alextp: - DLTensor* x; - int ndim = 1; - int dtype_code = kDLFloat; - int dtype_bits = 32; - int dtype_lanes = 1; - int device_type = kDLCPU; - int device_id = 0; +AFAICT it should be easy to take cuda pointers in and out of TF and use them to build dlpack structures from tensors or vice versa. The tricky part is that TF does not use cudamalloc to allocate memory but its own allocator whose internal state is stored on the CPU and matches the head of TF's compute stream, so we need to sync TF's stream before the memory is usable from dlpack and similarly sync other cuda streams before memory is made usable by TF tensors (and similarly we need to sync the streams when trying to free the buffers). - TVMArrayAlloc(shape, ndim, dtype_code, dtype_bits, dtype_lanes, - device_type, device_id, &x); - static_cast(x->data) = data; +A working version of dlpack integration has been released as a package by wmjlyjemaine@gmail.com and @VoVAllen here: +https://github.com/VoVAllen/tf-dlpack/issues/3 -Workflow proposed by @futurely +This proposal would leverage that solution and integrate it into TF so that the operations could be performed natively. -Tensor constructs Buffer with Allocator. Buffer calls TypedAllocator::Allocate to allocate memory through Allocator::AllocateRaw. GPUcudaMallocAllocator::AllocateRaw calls cudaMalloc. +User experience +We plan to release a python package tfdlpack, containing two APIs: -Maybe cuda.synchronize related API should be added to every class involved in the above pipeline. +to_dlpack: Given a tensorflow tensor, return a DLPack tensor contain. +from_dlpack: Given a DLPack-compatible python capsule, return a tensorflow tensor. +Example codes of converting a Tensorflow tensor to Torch tensor using DLPack: +```python +import numpy as np +import tensorflow as tf +import torch.utils.dlpack as thdlpack +import tfdlpack -Runtime uses DeviceFactory to CreateDevices. BaseGPUDeviceFactory::CreateGPUDevice allocates GPUDevice containing GPUAllocator. GPUProcessState::GetGPUAllocator composes AllocatorParts including GPUcudaMallocAllocator. +t1 = tf.constant([1, 2, 3], dtype=np.float32) +dlpack = tfdlpack.to_dlpack(t1) # tf tensor -> dlpack +t2 = thdlpack.from_dlpack(dlpack) # dlpack -> th tensor +print(t2) +dlpack = thdlpack.to_dlpack(t2) # th tensor -> dlpack +t3 = tfdlpack.from_dlpack(dlpack) # dlpack -> tf tensor +print(t3) +``` +You will find that t1, t2 and t3 all have the same values, shape, and device contexts. +Package dependency: tensorflow>=2.0 -GpuExecutor::Allocate is a simple wrapper of GpuDriver::DeviceAllocate which utilizes cuMemAlloc. +How it works? +The first design consideration is that we want to avoid any modification to the main Tensorflow library, so to get around the potential long delay of PR, code review, and release cycle of Tensorflow main package. Inspired by the solution from https://github.com/tobegit3hub/tftvm, we decide to implement the functionality as two custom tensor ops: to_dlpack and from_dlpack. -TensorFlow has added conversion between CPU Tensor and numpy array. +Besides, we want this feature to be plugged into other projects quite easily. For example, any project that relies on this feature is able to run without compiling against Tensorflow's header files. Not only that an extra dependency usually means extra effort, but also that such maintenance is repetitive and should be handled by the feature developer (i.e., us) alone. To this end, we have an idea of releasing it as a python package. However, the question is how to invoke the two custom tensor ops in python? The challenge is that Tensorflow's custom op interface has a limited support of argument and return types, while to_dlpack and from_dlpack should have an argument/return type of DLPack object. We work around this by encoding the address of an DLPack object as an integer, so it can be accepted/returned by the custom op interface. Then, we decode it in python or C depending on whether we return it (to_dlpack) or consume it (from_dlpack). -Notes from @alextp: +Finally, to achieve the maximal efficiency, we want the conversion happens without memory copy. -AFAICT it should be easy to take cuda pointers in and out of TF and use them to build dlpack structures from tensors or vice versa. The tricky part is that TF does not use cudamalloc to allocate memory but its own allocator whose internal state is stored on the CPU and matches the head of TF's compute stream, so we need to sync TF's stream before the memory is usable from dlpack and similarly sync other cuda streams before memory is made usable by TF tensors (and similarly we need to sync the streams when trying to free the buffers). +For to_dlpack, the returned DLPack tensor shares the same memory address of the input Tensorflow tensor and holds a reference to it. Upon the destruction of the DLPack tensor, it will dereference the Tensorflow tensor, so it can be collected by Tensorflow's memory management. (inspired by PyTorch's DLPack implementation). +For from_dlpack, it first creates an allocator object (subclass Tensorflow's allocator interface) that holds the reference to the DLPack tensor. The AllocateRaw function directly returns the memory it holds without creating any new buffer. Upon destruction, the DeallocateRaw function just calls the deletor of the DLPack tensor. (inspired by Tensorflow's immutable_constant_op). ## Questions and Discussion Topics From 6faac9b8e76f03acd2a87edb774b1bfc51c26f9b Mon Sep 17 00:00:00 2001 From: Gunhan Gulsoy Date: Mon, 25 Nov 2019 14:18:11 -0800 Subject: [PATCH 102/365] Relax API requirements. --- rfcs/20190305-modular-tensorflow.md | 58 +++++++++-------------------- 1 file changed, 17 insertions(+), 41 deletions(-) diff --git a/rfcs/20190305-modular-tensorflow.md b/rfcs/20190305-modular-tensorflow.md index 2291d5b02..9e3cdbdc5 100644 --- a/rfcs/20190305-modular-tensorflow.md +++ b/rfcs/20190305-modular-tensorflow.md @@ -11,7 +11,7 @@ TensorFlow is a very successful open source project. Since it has been open sourced, [1800+ contributors](https://github.com/tensorflow/tensorflow) have submitted code into TF from outside Google. However, as more and more developers contribute, it becomes more and more difficult to manage contributions in the single repository. -This project aims to split the TensorFlow codebase into **smaller, more focused**, repositories that can be released and managed separately. These modules will talk to each other using **well defined APIs** that guarantee backwards compatibility. Thanks to the module APIs, these modules are now **managed/owned/released independently.** +This project aims to split the TensorFlow codebase into **smaller, more focused**, repositories that can be released and managed separately. These modules will talk to each other using **well defined APIs**. Thanks to the module APIs, these modules are now **managed/owned/released independently.** ### Problems addressed @@ -55,20 +55,27 @@ Having a monolithic repository means we need to rebuild all of our code for all ## Overview -This project aims to split the TensorFlow codebase into **smaller, more focused**, repositories that can be released and managed separately. These modules will talk to each other using **well defined APIs** that guarantee backwards compatibility. Thanks to these APIs, these modules will be **managed/owned/released independently**. There will be different strategies to break apart pieces based on the languages, but below summarizes the approach for C++ and Python: +This project aims to split the TensorFlow codebase into **smaller, more focused**, repositories that can be released and managed separately. These modules will talk to each other using **well defined APIs** that will evolve over time. Thanks to these APIs, these modules will be **managed/owned/released independently**. There will be different strategies to break apart pieces based on the languages, but below summarizes the approach for C++ and Python: ![alt_text](20190305-modular-tensorflow/big_picture.png "Overview of modular TensorFlow") A summary of the above is: - - * Core TF functionality will be implemented in C++ * Core TF functionality can be extended using shared objects. * On top of the core C++ libraries, we will have the language bindings (Using the C API) * There can be more functionality built on top of the core TF bindings in different languages, which can be maintained and distributed separately. -* All different pieces need to use Stable public APIs with backwards compatibility guarantees. +* All different pieces need to use well defined public APIs. + +A few important points to clarify above are: + +* We will try our best to make sure the APIs will stay as close as possible to + the current APIs. +* We are aiming to avoid needing to change most existing custom op and kernel + code. +* The APIs will evolve over time. We will modify the APIs based on our and + user's needs. These modifications are expected to reduce in frequency. ### Definitions @@ -90,7 +97,7 @@ This project aims to implement similar plugin architectures for multiple compone 1. Networking module, with verbs, gdr plugins initially 1. Filesystems module, with GCP, AWS and HDFS support -1. Kernels module, +1. Kernels module, 1. Optimizers/Graph rewrite module, 1. Accelerator backends module @@ -285,26 +292,11 @@ This section will describe the key design points for modular Python packages for Contains the base Python API, and "Core TF" C++ shared objects -This package will be a subset of the current "tensorflow" pip package. It will include all of the core TF API except the high level API modules we will split up. It will define a public API for everything except for the required add on packages. This API is required to have backwards compatibility guarantees for minor version changes. With this guarantee, we expect the following: - - - _"Given that the combination of these packages work: TF-base 1.n, and addon package 1.m work together, TF-base 1.(n+k) and add on package 1.m should always work together."_ - -If we discover a violation of this guarantee, that will be treated as a P1 bug, and it will require a patch release for the base package 1.(n+k) - +This package will be a subset of the current "tensorflow" pip package. It will include all of the core TF API except the high level API modules we will split up. It will define a public API for everything except for the required add on packages. ### Required tensorflow addons -These packages are planned to contain high level TF functionality that can be safely split up from TF. Examples for these are tensorboard, estimator and keras. Together with the base TF package, these packages will contain the full Python code of TF, except for top level API wiring. - -These packages have two constraints: - - - -1. They are only allowed to use public APIs exposed by their dependencies. -1. They are required to provide backwards compatible public APIs. - -With the backwards compatible public APIs, we expect addons to be able to release independently as long as features they depend on are released in their dependencies. +These packages are planned to contain high level TF functionality that can be safely split up from TF. Examples for these are tensorboard, estimator and keras. Together with the base TF package, these packages will contain the full Python code of TF, except for top level API wiring. As like any addons, these are only allowed to use public APIs exposed by their dependencies. These packages will have full control over the versions of their dependencies. We recommend they only set a minimum version for their dependencies. When they need new features, they will bump their minimum requirement to include the new API changes. @@ -342,19 +334,7 @@ TENSORFLOW_DEPENDENCIES= [ ### TF Public APIs -As a part of the modularization, to be able to decouple development and releases for each of these packages, each package is required to expose a **public API with backwards compatibility guarantees**. What this means is, no API symbols in the public API cannot be changed in a backwards incompatible way, syntactically or semantically, between any minor versions. Below is a toy example of two packages explaining the guarantees we expect: - - -![alt_text](20190305-modular-tensorflow/simple_package_deps.png "Just two example packages.") - - - -* P1 depends on P2 -* P2 is expected to provide a public API -* All API symbols exposed by P2 version M.N is expected to work at version M.(N+K) for any non-negative integer K. -* P2 is allowed to make breaking changes to its API between major releases (M to M+1) -* If P1 version X.Y works with P2 version M.N, it should also work the same way with P2 version M.(N+K) However, there are no guarantees for it to work with P2 version (M+K).L -* When P1 is releasing a new version, it should check which API symbols it needs from P2, and fix the minimum version requirement in its pip package for P2 accordingly. +As a part of the modularization, to be able to decouple development and releases for each of these packages, each package is required to expose a **well defined, well documented public API**. ### Optional TF packages @@ -363,8 +343,6 @@ Mostly expected to contain the C++ plugins defined in the previous section. Thes These shared objects will be automatically loaded by TF core if: - - * They correctly define the compatibility strings using `TF_PLATFORM_STRINGS` * They are compatible with the system tf core is running on * They have been properly built and signed (unless running in developer mode) @@ -372,8 +350,6 @@ These shared objects will be automatically loaded by TF core if: ## Alternatives / Potential Issues - - * **Why do we not use C++ APIs instead of C**: Compilers have no guarantees for ABIs generated for C++ code. Any C++ API used will require each shared object to be compiled with the same compiler, using the same version of the compiler, with the same compiler flags ([See github issue 23561](https://github.com/tensorflow/tensorflow/issues/23561)). * **Why do not we statically link everything**: Single shared object for everything: Anywhere except google does not have access to the massively parallel build system we use here at google. This causes prohibitive build times, causing major developer pain for open source developers. There are many more issues, but the summary is while this is a great solution for google, outside google this is simply infeasible. * **TF will become a suite of multiple packages, built by multiple authorities. What if the bugs get blamed on TF team**: With the modular model, we expect testing of 3rd party code to become easier. This can also be mitigated if the error messages are better, and if they can clearly point out which module the issue stems from. Finally, we can create an apple-swift like testing model, where we run a Jenkins setup that people can donate their machines to, and we can run continuous integration tests on their plugins. @@ -439,7 +415,7 @@ To summarize the above timeline: * Different packages set their own release cadences * Each package will set version boundaries for each of their dependencies. -* Each package is responsible for ensuring that all of their public APIs are working without any changes until the next major release +* Each package is responsible for ensuring that all of their public APIs are working as promised. * Packages do not need to modify the minimum version requirements unless they start using newly introduced public API symbols. * TF metapackage releases may choose to hold back individual packages in favor of faster releases. But dependency requirements have to be respected when doing so. * Major releases still need to be coordinated. From 4e3443a512794c45e75c4a7cc8128e2019685aad Mon Sep 17 00:00:00 2001 From: Gunhan Gulsoy Date: Mon, 25 Nov 2019 15:45:56 -0800 Subject: [PATCH 103/365] Further edits. --- rfcs/20190305-modular-tensorflow.md | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/rfcs/20190305-modular-tensorflow.md b/rfcs/20190305-modular-tensorflow.md index 9e3cdbdc5..f7b0c3bab 100644 --- a/rfcs/20190305-modular-tensorflow.md +++ b/rfcs/20190305-modular-tensorflow.md @@ -75,7 +75,10 @@ A few important points to clarify above are: * We are aiming to avoid needing to change most existing custom op and kernel code. * The APIs will evolve over time. We will modify the APIs based on our and - user's needs. These modifications are expected to reduce in frequency. + user's needs. These modifications are expected to follow versioning guidelines + [described + here](https://github.com/tensorflow/community/blob/592221e839eb9629a9ff4c73d46ee44ccb832d97/rfcs/20190816-tf-project-versioning.md). + ### Definitions @@ -296,7 +299,12 @@ This package will be a subset of the current "tensorflow" pip package. It will i ### Required tensorflow addons -These packages are planned to contain high level TF functionality that can be safely split up from TF. Examples for these are tensorboard, estimator and keras. Together with the base TF package, these packages will contain the full Python code of TF, except for top level API wiring. As like any addons, these are only allowed to use public APIs exposed by their dependencies. +These packages are planned to contain high level TF functionality that can be safely split up from TF. Examples for these are tensorboard, estimator and keras. Together with the base TF package, these packages will contain the full Python code of TF, except for top level API wiring. As like any addons, these are only allowed to use public APIs exposed by their dependencies. These packages have two constraints + +1. They are only allowed to use public APIs exposed by their dependencies. +1. They are required to provide backwards compatible public APIs. + +With the backwards compatible public APIs, we expect addons to be able to release independently as long as features they depend on are released in their dependencies. These packages will have full control over the versions of their dependencies. We recommend they only set a minimum version for their dependencies. When they need new features, they will bump their minimum requirement to include the new API changes. @@ -353,7 +361,7 @@ These shared objects will be automatically loaded by TF core if: * **Why do we not use C++ APIs instead of C**: Compilers have no guarantees for ABIs generated for C++ code. Any C++ API used will require each shared object to be compiled with the same compiler, using the same version of the compiler, with the same compiler flags ([See github issue 23561](https://github.com/tensorflow/tensorflow/issues/23561)). * **Why do not we statically link everything**: Single shared object for everything: Anywhere except google does not have access to the massively parallel build system we use here at google. This causes prohibitive build times, causing major developer pain for open source developers. There are many more issues, but the summary is while this is a great solution for google, outside google this is simply infeasible. * **TF will become a suite of multiple packages, built by multiple authorities. What if the bugs get blamed on TF team**: With the modular model, we expect testing of 3rd party code to become easier. This can also be mitigated if the error messages are better, and if they can clearly point out which module the issue stems from. Finally, we can create an apple-swift like testing model, where we run a Jenkins setup that people can donate their machines to, and we can run continuous integration tests on their plugins. -* **Why not have APIs but still have a monolithic repository: **When everything is in a single repository, this enables developers to bypass the APIs, and depend on internals. Moreover, we cannot grant full control over different folders on our repository to our partners in a single repository. As long as they are in a single repository, they are still constrained by our build system and license. Finally, in a single repository we do not provide the option of closed source plugins for contributors. +* **Why not have APIs but still have a monolithic repository** When everything is in a single repository, this enables developers to bypass the APIs, and depend on internals. Moreover, we cannot grant full control over different folders on our repository to our partners in a single repository. As long as they are in a single repository, they are still constrained by our build system and license. Finally, in a single repository we do not provide the option of closed source plugins for contributors. * **Why not go with the OSS federation solutions?** OSS federation requires all dependencies to be in the federation before adding a repository. This is simply not possible for tensorflow, as eigen, llvm and many other dependencies will never be a part of the federation. * **Documentation, how/where do we document everything?** With multiple repositories, structure of the documentation will need to be rethought, based on what is a part of "TensorFlow proper" and what is an optional feature. @@ -375,7 +383,7 @@ We propose the following principles to be followed for testing in a modular worl In the current setup, we need to test all of the above packages for different Python versions, operating systems, accelerators (CPU, GPU), compilers, and more variants combined. In the modularized world, each of these packages only need to be unit tested for the following: -* tensorflow-base: Operating systems, compiler versions and python versions only with CPU +* tensorflow-base: Operating systems, compiler versions and python versions only with CPU * tf-gpu: With GPU only, for different operating systems. * tf-estimator: Only for different python versions From 1d07d97512b939e9f07830e3d86c769810a690f3 Mon Sep 17 00:00:00 2001 From: Gunhan Gulsoy Date: Mon, 25 Nov 2019 15:46:36 -0800 Subject: [PATCH 104/365] Update last updated time. --- rfcs/20190305-modular-tensorflow.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20190305-modular-tensorflow.md b/rfcs/20190305-modular-tensorflow.md index f7b0c3bab..afe645f91 100644 --- a/rfcs/20190305-modular-tensorflow.md +++ b/rfcs/20190305-modular-tensorflow.md @@ -4,7 +4,7 @@ :-------------- |:---------------------------------------------------- | | **Author(s)** | Gunhan Gulsoy (gunan@google.com) | | **Sponsor** | Martin Wicke (wicke@google.com) | -| **Updated** | 2019-03-06 | +| **Updated** | 2019-11-25 | ## Motivation From a767ccc35b4bb51effebdcd3e73d226a7537d732 Mon Sep 17 00:00:00 2001 From: Even Oldridge Date: Tue, 26 Nov 2019 13:49:11 -0800 Subject: [PATCH 105/365] Update 20191016-dlpack-support.md Updated emails and tried to better frame the RFC to reflect the package solution vs a native solution. --- rfcs/20191016-dlpack-support.md | 37 ++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/rfcs/20191016-dlpack-support.md b/rfcs/20191016-dlpack-support.md index 650a9c11a..b87ded15a 100644 --- a/rfcs/20191016-dlpack-support.md +++ b/rfcs/20191016-dlpack-support.md @@ -2,10 +2,10 @@ | Status | (Proposed) | :-------------- |:---------------------------------------------------- | -| **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) (update when you have community PR #)| -| **Author(s)** | eoldridge@nvidia.com, wmjlyjemaine@gmail.com, @VoVAllen | -| **Sponsor** | alexandre.tp@gmail.com, sanjoy@playingwithpointers.com | -| **Updated** | 2019-11-25 | +| **RFC #** | 180 (https://github.com/tensorflow/community/pull/180) (update when you have community PR #)| +| **Author(s)** | eoldridge@nvidia.com, wmjlyjemaine@gmail.com, zhoujinjing09@gmail.com | +| **Sponsor** | apassos@google.com, sanjoy@google.com | +| **Updated** | 2019-11-26 | ## Objective @@ -13,6 +13,8 @@ This document proposes the adoption of dlpack (https://github.com/dmlc/dlpack) a The interoperability of dlpack would allow for fast on-GPU communication between TensorFlow and these frameworks opening up a wide range of use cases outlined below. It would further enable \_\_cuda_array_interface\_\_ interoperability through cuPy/cuDF which support both methods providing a way to transfer data to Numba, PyArrow and other frameworks that have adopted that method, although [a similar request has been made to support that method of interoperability](https://github.com/tensorflow/tensorflow/issues/29039) and ideally both would be supported. +A solution has already been developed by @VoVAllen and @jermainewang (coauthored above) as an external python package. This RFC would see the concepts from the package integrated into Tensorflow Core, and reviewed and enhanced by the TF team so that dlpack support is native. + ## Motivation Why this is a valuable problem to solve? What background information is needed @@ -50,17 +52,19 @@ Notes from @alextp: AFAICT it should be easy to take cuda pointers in and out of TF and use them to build dlpack structures from tensors or vice versa. The tricky part is that TF does not use cudamalloc to allocate memory but its own allocator whose internal state is stored on the CPU and matches the head of TF's compute stream, so we need to sync TF's stream before the memory is usable from dlpack and similarly sync other cuda streams before memory is made usable by TF tensors (and similarly we need to sync the streams when trying to free the buffers). -A working version of dlpack integration has been released as a package by wmjlyjemaine@gmail.com and @VoVAllen here: +A working version of dlpack integration has been released as a package by coauthors @jermainewang and @VoVAllen here: https://github.com/VoVAllen/tf-dlpack/issues/3 This proposal would leverage that solution and integrate it into TF so that the operations could be performed natively. User experience We plan to release a python package tfdlpack, containing two APIs: - +``` to_dlpack: Given a tensorflow tensor, return a DLPack tensor contain. from_dlpack: Given a DLPack-compatible python capsule, return a tensorflow tensor. -Example codes of converting a Tensorflow tensor to Torch tensor using DLPack: +``` + +Example code of converting a Tensorflow tensor to Torch tensor using DLPack using the package: ```python import numpy as np import tensorflow as tf @@ -78,7 +82,24 @@ print(t3) You will find that t1, t2 and t3 all have the same values, shape, and device contexts. Package dependency: tensorflow>=2.0 -How it works? +Proposed code of converting a Tensorflow tensor to Torch tensor using DLPack natively: +```python +import numpy as np +import tensorflow as tf +import tensorflow.???.dlpack as tfdlpack +import torch.utils.dlpack as thdlpack + + +t1 = tf.constant([1, 2, 3], dtype=np.float32) +dlpack = tfdlpack.to_dlpack(t1) # tf tensor -> dlpack +t2 = thdlpack.from_dlpack(dlpack) # dlpack -> th tensor +print(t2) +dlpack = thdlpack.to_dlpack(t2) # th tensor -> dlpack +t3 = tfdlpack.from_dlpack(dlpack) # dlpack -> tf tensor +print(t3) +``` + +Package implementation details: The first design consideration is that we want to avoid any modification to the main Tensorflow library, so to get around the potential long delay of PR, code review, and release cycle of Tensorflow main package. Inspired by the solution from https://github.com/tobegit3hub/tftvm, we decide to implement the functionality as two custom tensor ops: to_dlpack and from_dlpack. Besides, we want this feature to be plugged into other projects quite easily. For example, any project that relies on this feature is able to run without compiling against Tensorflow's header files. Not only that an extra dependency usually means extra effort, but also that such maintenance is repetitive and should be handled by the feature developer (i.e., us) alone. To this end, we have an idea of releasing it as a python package. However, the question is how to invoke the two custom tensor ops in python? The challenge is that Tensorflow's custom op interface has a limited support of argument and return types, while to_dlpack and from_dlpack should have an argument/return type of DLPack object. We work around this by encoding the address of an DLPack object as an integer, so it can be accepted/returned by the custom op interface. Then, we decode it in python or C depending on whether we return it (to_dlpack) or consume it (from_dlpack). From 9d3a15265edff9760c14a153066b1541a75893d8 Mon Sep 17 00:00:00 2001 From: Anna R Date: Wed, 27 Nov 2019 14:11:54 -0800 Subject: [PATCH 106/365] Adding images to pip structure RFC --- .../circular_dependency.png | Bin 0 -> 12175 bytes .../current_structure.png | Bin 0 -> 13338 bytes .../modular_structure.png | Bin 0 -> 11134 bytes .../new_modular_structure.png | Bin 0 -> 14526 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 rfcs/20191127-pip-structure/circular_dependency.png create mode 100644 rfcs/20191127-pip-structure/current_structure.png create mode 100644 rfcs/20191127-pip-structure/modular_structure.png create mode 100644 rfcs/20191127-pip-structure/new_modular_structure.png diff --git a/rfcs/20191127-pip-structure/circular_dependency.png b/rfcs/20191127-pip-structure/circular_dependency.png new file mode 100644 index 0000000000000000000000000000000000000000..2020f651cd6a8e2b63164e76b43f3da35b7dd597 GIT binary patch literal 12175 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 KwaYZ`KmTv)h2J~? literal 0 HcmV?d00001 diff --git a/rfcs/20191127-pip-structure/current_structure.png b/rfcs/20191127-pip-structure/current_structure.png new file mode 100644 index 0000000000000000000000000000000000000000..ee67881bc00e1c2fc7d2e4e48f264f83a00e59c3 GIT binary patch literal 13338 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 literal 0 HcmV?d00001 From ab23517e97e440eaca4061e6bd14bf09dd8d762f Mon Sep 17 00:00:00 2001 From: Anna R Date: Wed, 27 Nov 2019 14:29:34 -0800 Subject: [PATCH 107/365] Initial 'pip structure RFC' draft - adding missed file --- rfcs/20191127-pip-structure.md | 212 +++++++++++++++++++++++++++++++++ 1 file changed, 212 insertions(+) create mode 100644 rfcs/20191127-pip-structure.md diff --git a/rfcs/20191127-pip-structure.md b/rfcs/20191127-pip-structure.md new file mode 100644 index 000000000..2ff38a90f --- /dev/null +++ b/rfcs/20191127-pip-structure.md @@ -0,0 +1,212 @@ +# Title of RFC + +| Status | (Proposed / Accepted / Implemented / Obsolete) | +:-------------- |:---------------------------------------------------- | +| **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) (update when you have community PR #)| +| **Author(s)** | Anna Revinskaya (annarev@google.com) | +| **Sponsor** | Alex Passos (apassos@tensorflow.org) | +| **Updated** | 2019-11-27 | + +## Objective + +We propose to simplify TensorFlow pip package structure to enable IDE features such as autocomplete, jump-to-definition and quick-documentation. + +## Motivation + +### Current package structure +TensorFlow package structure has grown quite complex over time as we started to support multiple versions (1.x and 2.x) and import external sub-packages (such as tensorflow\_estimator and tensorboard). This complexity is expected to grow (for e.g. keras will be split out as well). + +Sources of complexity: + +* Versioning: tensorflow\_core API lives under *_api/v1* or *_api/v2* directory depending on the version. +* Virtual pip package: Installing TensorFlow actually installs 2 directories: *tensorflow/* and *tensorflow\_core/* under *site-packages/*. TensorFlow code lives under *tensorflow\_core/*. TensorFlow uses lazy loading to import everything from *tensorflow\_core/* to *tensorflow/*. Two-directory structure helps work-around circular imports caused by tensorflow\_estimator. + +Outline of the current structure: +``` +tensorflow + __init__.py (contains "from tensorflow\_core import *") + +tensorflow_core + python/... + lite/... + _api/v2 + __init__.py + audio/__init__.py + autograph/__init__.py + ... +``` + +### Rationale behind current package structure +#### Multiple version support +To prepare for TensorFlow 2.0 launch, we added a way to build two versions: 1.x and 2.x. Each version has its own respective genrule that outputs file for 1.x or 2.x since API modules are different (for e.g. *tensorflow/manip/__init__.py* only exists in 1.x and not 2.x API). Now, bazel does not allow two genrules to output files to the same directory. Therefore, we have *_api/v1/* and *_api/v2/* subdirectories. + +Note that we could still place the API directly under *tensorflow/* in the pip package since a pip package contains a single version of TensorFlow. This option became out of reach when *tensorflow/contrib/lite/* was migrated to *tensorflow/lite/*. Now *tensorflow/lite/* API directory would conflict with *tensorflow/lite/* source directory if the API was under *tensorflow/* instead of *_api/vN/*. + +#### Circular dependencies +Estimator depends on TensorFlow. At the same time, TensorFlow includes estimator as a part of its API. This creates a cycle. + +![alt_text](20191127-pip-structure/circular_dependency.png "Circular dependency +between TensorFlow and Estimator.") + +#### Metapackage vs base package plans +[Modular TensorFlow +RFC](https://github.com/tensorflow/community/blob/master/rfcs/20190305-modular-tensorflow.md) proposes to keep two pip packages: +tensorflow-base would only contain core TensorFlow (for e.g. no estimator). +TensorFlow Metapackage would be a thin package defining composition of TensorFlow which includes base, estimator, keras and tensorboard. +Note that this 2-package approach is not implemented yet. However, its proposal demonstrates how keeping a virtual pip package could be beneficial in the future. + +![alt_text](20191127-pip-structure/modular_structure.png "Proposed modular TensorFlow structure.") + +Current structure looks more like this (except *tensorflow/* and *tensorflow\_core/* are directories as opposed to separate pip packages) and meant to be the first step towards structure above: + +![alt_text](20191127-pip-structure/current_structure.png "Current TensorFlow structure.") + +### Current state of IDE code features + +#### PyCharm 2019.1.1 + +* Autocomplete: + * Works in most cases after switching to use relative imports. + * Doesn’t work for tf.compat.v1.keras and tf.compat.v2.keras. + * Doesn’t work for keras if importing it using from import (i.e. from tensorflow import keras). +* Jump-to-definition doesn’t work. +* Quick documentation doesn’t work. + +#### PyCharms with 2019.3 EAP build 193.3793.14 +Latest version of PyCharms added [custom handling for tensorflow](https://github.com/JetBrains/intellij-community/blob/0a08f8212351ee84d602cdc5547f038ce0df79fd/python/src/com/jetbrains/tensorFlow/PyTensorFlow.kt) +* Autocomplete works in most cases. +* Doesn’t work for keras if importing it using from import (i.e. from tensorflow import keras). +* Jump-to-definition works. +* Quick documentation works. + +#### VS Code 1.40 (October 2019 release) +* Autocomplete: + * Works in most cases. + * Doesn’t work for tf.estimator or tf.keras. + * Doesn’t work for tf.compat.v1.keras and tf.compat.v2.keras. + * Doesn’t work for keras if importing it using from import (i.e. from tensorflow import keras). +* Jump-to-definition doesn’t work. +* Quick documentation doesn’t work. + + +## User Benefit + +TensorFlow package structure creates difficulties for those who use IDEs. +Autocomplete, quick documentation and jump-to-definition features often rely on +module structure matching directory structure. For example, TensorFlow code uses +`from tensorflow.foo` imports but lives under tensorflow\_core package. Simplifying +package structure would improve productivity for TensorFlow users. + +## Design Proposal + +The only way I can think of to fix the autocomplete issues is to make our package structure as clean as possible. In this case, autocomplete will work out of the box. + +### Short term: Remove virtual pip package + +Primary purpose of keeping the virtual pip package is to workaround circular +estimator imports. Alternatively, we can resolve this issue by lazy loading +estimator. + +Lazy loading by itself would mean that we no longer have autocomplete for estimator. As a workaround, we can import estimator in the stub *.pyi* file. + +Estimator import in root *__init__.py* file: +```python +from tensorflow.python.util.lazy_loader import LazyLoader as _LazyLoader +estimator = _LazyLoader( + "estimator", globals(), + "tensorflow_estimator.python.estimator.api._v2.estimator") +setattr(_current_module, "estimator", estimator) +``` + +Estimator import in root *__init__.pyi* file: +```python +from tensorflow_estimator.python.estimator.api._v2 import estimator as estimator +``` +In Python 3, we don't even need the *.pyi* file and instead can import estimator +without lazy loading if `typing.TYPE_CHECKING` is `True`. + +After building a pip package with this change all of the following work in PyCharms (both released and EAP) and VS Code: + +* jump-to-definition +* quick documentation +* autocomplete for `compat.v1.keras`, `compat.v2.keras` +* autocomplete for keras when using from tensorflow import keras +* ...basically any import I tested works with autocompletion + +To support the TensorFlow Metapackage plans we could add a new pip package that specifies dependencies on tensorflow, tensorflow\_estimator, tensorboard, etc.. Its sole purpose would be to get all dependencies installed. + +![alt_text](20191127-pip-structure/new_modular_structure.png "New proposed modular TensorFlow structure.") + +### Long term: Import from external package directly +Short term would fix IDE issues, but the package structure is still not as clean as it could be. We resolve cycles with lazy loading but it would be even better not to have this circular structure at all. + +Therefore, I propose that we don’t import external packages into TensorFlow 3.0. Users who want to use estimator, tensorboard summaries or keras could import them separately: + +Current code that looks like: +```python +import tensorflow as tf + +tf.estimator +tf.keras +tf.summary +``` + +Would be changed to: +```python +import tensorflow as tf +import tensorflow_estimator as estimator +import tensorflow_keras as keras +from tenosorboard import summaries +``` + +Rationale for this change: + +* One way dependencies (estimator depends on tensorflow and not vise-versa). +* Minimal overhead for users. Adding an extra import is easy. + +Note that this change cannot be done in TensorFlow 2.0 due to API guarantees. However, we can keep `tf.estimator`, `tf.keras` (once it is moved out of TensorFlow), `tf.summary` available while encouraging users to import from tensorflow\_estimator, tensorflow\_keras (once available) and tensorboard instead. This would require some work to make sure these packages contain the right API (for e.g. tensorflow\_estimator.estimator currently always contains V1 API). + + +### Alternatives Considered +Alternatively, we could solve IDE autocomplete issues by changing all imports in +TensorFlow to import from `tensorflow_core` instead of `tensorflow`. + +#### Advantages: + +* Keep supporting external libraries included as a sub-namespace, for e.g. +`tf.estimator`. + +#### Disadvantages: + +* This is a +more invasive change since it requires updating every Python file in TensorFlow. +It would also mean that external packages such as `tensorflow_estimator` need to +use imports of the form `from tensorflow_core` instead of `from tensorflow`. + +The main proposal in this document seems simpler to me (it removes complexity +instead of adding it) and therefore preferred. + +### Performance Implications +I am not expecting major performance changes since this is just a package +structure proposal. + +### Dependencies +This proposal does not add new dependencies. The rest of the proposal largely +describes how we plan to handle dependencies. + +### Engineering Impact +We don't expect changes to binary size / startup time / build time / test time. + +### Platforms and Environments +This should work on all platforms and we will test it to make sure. + +### Best Practices, Tutorials and Examples +There are no user-visible changes other than fixes to enable IDE features. + +### Compatibility +Short term proposal does not have any compatibility concerns. Long term, +however, proposes to remove `tf.estimator`, etc.. which is not a backwards +compatible change. We can only make this change at the next major release. + +### User Impact +There are no user-visible changes other than fixes to enable IDE features. From 4c2871e85afd513b8edf6303da354be5f330dcfb Mon Sep 17 00:00:00 2001 From: Anna R Date: Wed, 27 Nov 2019 14:38:26 -0800 Subject: [PATCH 108/365] Fix underscores and a few other formatting issues --- rfcs/20191127-pip-structure.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/rfcs/20191127-pip-structure.md b/rfcs/20191127-pip-structure.md index 2ff38a90f..34bee7ed0 100644 --- a/rfcs/20191127-pip-structure.md +++ b/rfcs/20191127-pip-structure.md @@ -14,7 +14,7 @@ We propose to simplify TensorFlow pip package structure to enable IDE features s ## Motivation ### Current package structure -TensorFlow package structure has grown quite complex over time as we started to support multiple versions (1.x and 2.x) and import external sub-packages (such as tensorflow\_estimator and tensorboard). This complexity is expected to grow (for e.g. keras will be split out as well). +TensorFlow package structure has grown quite complex over time as we started to support multiple versions (1.x and 2.x) and import external sub-packages (such as tensorflow\_estimator and tensorboard). This complexity is expected to grow if we split out more components into separate pip packages. Sources of complexity: @@ -24,7 +24,7 @@ Sources of complexity: Outline of the current structure: ``` tensorflow - __init__.py (contains "from tensorflow\_core import *") + __init__.py (contains "from tensorflow_core import *") tensorflow_core python/... @@ -38,7 +38,7 @@ tensorflow_core ### Rationale behind current package structure #### Multiple version support -To prepare for TensorFlow 2.0 launch, we added a way to build two versions: 1.x and 2.x. Each version has its own respective genrule that outputs file for 1.x or 2.x since API modules are different (for e.g. *tensorflow/manip/__init__.py* only exists in 1.x and not 2.x API). Now, bazel does not allow two genrules to output files to the same directory. Therefore, we have *_api/v1/* and *_api/v2/* subdirectories. +To prepare for TensorFlow 2.0 launch, we added a way to build two versions: 1.x and 2.x. Each version has its own respective genrule that outputs file for 1.x or 2.x since API modules are different (for e.g. *tensorflow/manip/\_\_init\_\_.py* only exists in 1.x and not 2.x API). Now, bazel does not allow two genrules to output files to the same directory. Therefore, we have *_api/v1/* and *_api/v2/* subdirectories. Note that we could still place the API directly under *tensorflow/* in the pip package since a pip package contains a single version of TensorFlow. This option became out of reach when *tensorflow/contrib/lite/* was migrated to *tensorflow/lite/*. Now *tensorflow/lite/* API directory would conflict with *tensorflow/lite/* source directory if the API was under *tensorflow/* instead of *_api/vN/*. @@ -68,23 +68,23 @@ Current structure looks more like this (except *tensorflow/* and *tensorflow\_co * Autocomplete: * Works in most cases after switching to use relative imports. * Doesn’t work for tf.compat.v1.keras and tf.compat.v2.keras. - * Doesn’t work for keras if importing it using from import (i.e. from tensorflow import keras). + * Doesn’t work for keras if importing it using from import (i.e. `from tensorflow import keras`). * Jump-to-definition doesn’t work. * Quick documentation doesn’t work. #### PyCharms with 2019.3 EAP build 193.3793.14 Latest version of PyCharms added [custom handling for tensorflow](https://github.com/JetBrains/intellij-community/blob/0a08f8212351ee84d602cdc5547f038ce0df79fd/python/src/com/jetbrains/tensorFlow/PyTensorFlow.kt) * Autocomplete works in most cases. -* Doesn’t work for keras if importing it using from import (i.e. from tensorflow import keras). +* Doesn’t work for keras if importing it using from import (i.e. `from tensorflow import keras`). * Jump-to-definition works. * Quick documentation works. #### VS Code 1.40 (October 2019 release) * Autocomplete: * Works in most cases. - * Doesn’t work for tf.estimator or tf.keras. - * Doesn’t work for tf.compat.v1.keras and tf.compat.v2.keras. - * Doesn’t work for keras if importing it using from import (i.e. from tensorflow import keras). + * Doesn’t work for `tf.estimator` or `tf.keras`. + * Doesn’t work for `tf.compat.v1.keras` and `tf.compat.v2.keras`. + * Doesn’t work for keras if importing it using from import (i.e. `from tensorflow import keras`). * Jump-to-definition doesn’t work. * Quick documentation doesn’t work. @@ -99,7 +99,7 @@ package structure would improve productivity for TensorFlow users. ## Design Proposal -The only way I can think of to fix the autocomplete issues is to make our package structure as clean as possible. In this case, autocomplete will work out of the box. +The best way I can think of to fix the autocomplete issues is to make our package structure as clean as possible. In this case, autocomplete will work out of the box. ### Short term: Remove virtual pip package @@ -109,7 +109,7 @@ estimator. Lazy loading by itself would mean that we no longer have autocomplete for estimator. As a workaround, we can import estimator in the stub *.pyi* file. -Estimator import in root *__init__.py* file: +Estimator import in root *\_\_init\_\_.py* file: ```python from tensorflow.python.util.lazy_loader import LazyLoader as _LazyLoader estimator = _LazyLoader( @@ -118,7 +118,7 @@ estimator = _LazyLoader( setattr(_current_module, "estimator", estimator) ``` -Estimator import in root *__init__.pyi* file: +Estimator import in root *\_\_init\_\_.pyi* file: ```python from tensorflow_estimator.python.estimator.api._v2 import estimator as estimator ``` From 889335808e7f674813f495d8cd10fc4c7f773e20 Mon Sep 17 00:00:00 2001 From: Anna R Date: Wed, 27 Nov 2019 15:10:04 -0800 Subject: [PATCH 109/365] Cropping images --- .../circular_dependency.png | Bin 12175 -> 13331 bytes .../current_structure.png | Bin 13338 -> 15914 bytes .../modular_structure.png | Bin 11134 -> 12093 bytes .../new_modular_structure.png | Bin 14526 -> 17449 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/rfcs/20191127-pip-structure/circular_dependency.png b/rfcs/20191127-pip-structure/circular_dependency.png index 2020f651cd6a8e2b63164e76b43f3da35b7dd597..fd5f571fb3ff16e307a9e9358c6ba254278a07c6 100644 GIT binary patch literal 13331 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 KwaYZ`KmTv)h2J~? diff --git a/rfcs/20191127-pip-structure/current_structure.png b/rfcs/20191127-pip-structure/current_structure.png index ee67881bc00e1c2fc7d2e4e48f264f83a00e59c3..9e3fd3cbda0869359709eb7bdb1341397350bfd0 100644 GIT binary patch literal 15914 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 MMRkSp=cd8`2Xfo)MgRZ+ literal 13338 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 literal 11134 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 Gc%REQ^SA*CHJ&u=IWL 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


jGFFu^Xke{iMWolOMyp0i2NwS>?r!H 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 U-qZEF7{JeSB@M;0r)FXQ3%qr|a{vGU literal 14526 zcmeHtcUV(d*YBZNP*4YEbN~fsl;QxwgeE0`q9PsXNL4|45r{}ai47bJpfqVo5a}fh z(jkE2SO5vqB7_i;5+H;CA&C$Y?g{F=bMJS*d%ye7eeQjpH~-{0Yp=cb+Uu;d)^Dx7 z|FE$#5!)rT3jhEy({rb70YDfD0770nw*vrRZ!X~o04MI4o<3=ReRP2&R_#V{m;DrF zbTs?4z{%4#Mp+@!2g?6275@E|#;%>BJJnw8J1N>&dU*TkdEuXg{cZxnM$bkAJ$F2?33i?EY-((XMLHKRhzt{SN&NWG4%r!*iu=4SoqnUQo7f^C5B ziI1d@FxD15-Y_n!C1OH2c;NikFfG;sO;0fJw}2_F705rmD*zA6ilr<8lcOyEv-1K>Jw~OoZ3d3IBZw)~Cx<(Z`u~Z~^nDU~Vu;M^C7$I(5-+wz z_*@@OAK#3jPo5I6!6lEeFD0y61{4Rm&PH!D0;TUnj#hgQn8dvbW7ru4tTJ-;#15?y z;-+BOgJP5Z?T3@&c<+eqyr+}x)1C{5+Pn#dhj?ACd&SV4T;Du0d;SG$B6KX`%hTBS zFM1(uvoWsd<=Tmcc-jGXalut=OE5KKg57?Fe1LpAivBF)<5!9IVPqix2<6-B`3HYmM^MLt~gXgHc)w24n?&#^tlY17uao z#u)zk_!@V`BCESZdVGq~6J<}t)Ebi^!sUo6Lw#0k0lRcDwX5kl6zluMZIg>l_w5Q~ zayOQV9g5Tz7NKUqeW{t6t#i8>|Vg38Vm%suQOEPMR3*VP>HFb zSjJk{ax{+P(jDRU?x5qAM_n-hx-!>p9~KE(i8z(0t7_BBS)qDrY$S)SWt^X;1aUsl zN8@>4gvCXGfG4Tk@Ssyqgr(~UU8>`2?+Y$JkAL~pKCZVuq|pwMG-V!}^lnZ3us5;X zbGa#VArpa*^%+NN%f$R8hfnRhWDBJA9VLb@x*Z{uT{K@b&L zd-HrfN=(cIixwG$hvsw7kgmOL8mRK`tc?=PBal|)3Ie@73ZyQ{S-h*Sjb)iOriC3P zuDFe;(of!eQfrEm<4hZb^A=pOS+ULSgsu&nrertOH!~g)_$IdQi)#(B5u{Ao+Te%! zRt2Vk`1oMpj6pOcpXk>NjPoHcu|g>eeErd5G#IaXk3*veoEw0_`<33ONF!pDmFx9=Ox-R^|eM?vpkdLDKbB%{OCp^GFee(0~qG zB2G3^uH@Y^LrkC?oyXhvVl19zi5U<>uA|$f(wJy%d^YO5> zn2KRCZ~rD)ljfle^Rp9tcu?K{i+uy+nZND6f!Ioxmf2g4V}s{fhU&}nKR&CsuyG(~ ziYA*irg`W$z2PAol!y@)D6DMn;HSz2D`sqN;H-lo&=prmyQ=A*gzlf4a1g@8A%-J{ zF9y~@4q`bn-{PmruRxh+Eu~y4We_NlJ+&%?5j8F|ersD-Z2dAt*P_Cs!7$!Z`&B9K z>P(LJ^?aa&WtANnBqlrGrnzKx!WM6rC?jVxm+&hyMnorkFUichMC#^yC)m%<{)sN{ z*=^I3lwAe^Zyksbx=CK9Li(im>S`w@R~;GX=|!s~bL``o5&S{b zkz$XQUOf#@U{Lm6q>g|Ms@!6>ZV=S7y0${YVRXVn1TKF4=xhn}PQSDq^s0E;V8l`9 zcg&Xbd^b%X8|zL@!9q+zv*MP{8<)h%ottm)S=7T_gS09K+mA+H3!tMGIT_>Un=&CL z$%VD%^^_3~eKJPChJ~h%1STtg4fdc5bUs}4#*>Dgt!%>??&t&KsUR}0Iu&II`#deY zOGLpeG$e1)%)U@vdDcu2Gg|K3f6qPD!+h@(i`HDDqAH$4Vys+`82}-OGe~6;=h&3$ zQuY&8sc{+Pm2!DDlWlJO^tR$!L+>Bz{-5X8+olW{@R#Ylu*%Vh(gb(Sqg{-tv8;h& zJ=OEEn;c`xih+EeQl8HJ87V>xM! z^)Q4Zi(nh5faCf_IkK2e`38zOV=!V+FZ>zYi5uLD(>itRI z=T2?EYivbZF-&|;lt{H^M0V6z8@8614 z=J~g@?$B&C`;zK$ikotjV)oIN!h09zU)l$va3^>`kPOrQF;>)e>6+O`8`4WBGh@&C7 z#Q<@8*+$S{`bqBH&1dk+`}z3Q%|kx=zptLR zu21W!k0F-)aEW*X)ChQsZ4ust?IMhk z2Ad#zZt-V0U+g^Q9_4H2+kM@6%h*bOC;kcyRh|4JpT4Ta=cve?NW-?*J;=P<-u@u- z0pEIFSz?3^Xi&(!vz7^B7drK>V#Aay3;c6*re&x zEvD_An%AwhGnaQ=Y{5bKEKVVfXX$~Vl8Hvz@cVp1RZoE>&AEVmEf^8Mqt%j6%2Z|0 zM2DBSKF2WwmZX_VzLPZS2SR~+6}wnrcI>p}fUnEFfbT?JGPm1XU-uW0U*}g}r^*5M zz!%t1n(8yA#IMniXPm7CY+wjU{O-u~hP@!g>mv1c;GS#u^*hz>EWTdwA&Cd%6 zAUrT|mA}(F)u)Gh53+Qez4o*es=g89B4g0~iq3N6zj*1PiXBE*W9@u%MkzG@Os%I6 z_W@@TntV=ttQ-#q30?&wiUKyGUDq$o>b26gN6l{G+1!2BKErevs-_xeri5AF;%>m*(WGGm5GPj)K&V z3m~HQAd?5lTFlMtb(`O{`R#@3?K_bfcuZ-#|NN$wW)PK@%{Sl^ErGrjskG((B}&%` zQL~-3PR~Iq0Lr-_DY;&UEoEykCyK85iGxJ13wzR*cR4!EM>eS~n3kR)4Eq`|@LWl7 z6CGWnDW8rD^mq{~G{9{}#9dlaJtG@EJ@2!baf#VL<%b$WA2KE&%x9 zZL6cOHTJc)0hIfM+U*rVeoZ%52&f_}FduzOih_r~cP`Y7MUddEe|8_X#C_-eA63`~ z{4MeYrd0i3f`D`11Rd@9T4sIETYx~yR@wqJ{JQ9OjlVAeHbO8L40-B?Q6K2&#>;P( zcDJwk*fnL!a^^VOj6mg(fS(Rk4vq7@PJ^MNP5nNQ>!n~zOVott!^2y4*#}tS`iZ_$ z7xB;FBTg}eTf5u`48fP63W*KvbBSk}NjrF*uVUlqLcR&1v2U#N$n+ag=tl2ZLVfb) zmx&=ff;UTv;!+avp_?O7+%B+skAP|!*M?VVlNl17Y+mx-2ldlr*;dY*vqUJzZmu6`H`G1OejNYYGgjtXk80Qf zEFdSRJ()uVUK2;OgQW~63k=scQYvpBCLw2aZoQbTtCVG5?JPE6mKLBxzpP}U_gasJ zeU6D8Xy*<8VcfA2F(V9LUd;5U-E?sBgl?>Pa+wT5X*!2G&WOTIBrynhD1qy-REpNx zl`yZ_OerDYadAUDEN;qUb2$Rrtk`Gv$qt>r$S6hg=DwM)vK=T%_(eoFU~lefMfB(Z z+F<^q9oyV1HB3>!l2&M!96OoZ3LF2$D^(C9tgW+&HP~n=h@fr07AoL|lg7+%<_g=0 zz-piZ_Oy{yvLSUHFWp9AZ+?mi#b8_4(hF!<&Nw|MYUjstk65aoD+_z^JRB&b^egCd zMmkgDznC1@W+al`#zpYnFI6>cPRXUZ?&iCtmsW7#{8)vsk%*pn*innDK*4F<+TWnw zwxoPp5gYNO$V4X_UdOM~|CAqs1@zkoB##0W%x#J%_n5-2Ekcr$m3b9Q!d!U&OgN{qRw2EcFpx zhUSWx^}g;1|L}}pLHoV7?`R)rf(7kkW9R$^NRGFjnBqdkXP=qa&g?Gh{Mh`4Erhx4 zvId=S+;of1Xw3*KMUX=1^55URJ78~|v{u$T2^M7{aga^xSe4E?@z%k7`|_UvpFNn> zvt{f@6W&?Z;rW0fVDeRi$afn? zpa8jzQc8C$*d2t^2Y>OpFM^y`!}7d87UsF0+xnz?EP%A=$gbNC^#N}q80BqotD%A! ztGu}#XGARfC5okIDk6b2(|q-0>-aA&8TUOEfv#sCxE*EjF(|w50tVe5DMhSDDkNIb zQ9;=9P`TN6W-g>Zau^W_w_yqny+?aRqMB3BsQLo-nMwHhizH5E`5joYH8MST?vQ;$ zEbjnW4PI3dISe&m=h0x{{@+YlUEaz5>TzUaT2`7qy_*v4@w5nmder!U>bX$u#A&PRs%*fujyu7My{V~N7 z`!r;)!oLSZh824gmvdih`Kw z+Hd*W3P{rl5eGacgYSwKRVO`+mOCxE!IC?SiZy=#ht`kTIpswrgLvS1ApuWLv0hEgv(U ze+-<8WO~^M8{JPYBt3tH$bgfZZ%;yY^clS8Lokc`BKHoEt={D54)a=ny!ER$-xx(b z;?oS`IB1B)-@rYYr{`Zv4mb-Acx4M4MRXs<&*36YOY=FYSz(uIl<6px9w&3cjU8b1 zjVZJF&j*>&)yj30h0Y|(6kP%S7szfsh78dWQ&2bBFH^jAfC@Fk0C)V^Oka6hgQDh{j_P)^M1nnzy(y* z%K0rdd~B{L0HaQz*37_#HV`={_!#&K7OsXhS9009vOb_Juj98M(gJ-qATlf%O{%p) z!jk6l`FBR8^R+-b>x|_oQuNH59Jp74L8|1-C?`q0H6KJO-#Y2CDbPo=%sUC36t+~6$)2L73pcC`@}X2#B03XYfDO9E9xW~nJs zwSlgA4-xa4K@LkZ25r*)Stz?zR>TlYdm$m7VVmaB`;UkD+}Bws=z3@t-y=JmDw^7rYak-qTSqq++mWz) z@YAlUmcrm}1zn0cXVGn{EjfMp^q@QEKqEP>G5pd?gH*Tix%OW{8#?x5DzLz88LNAPMx8~4 zx=h7oDa`h2?K|;d`*v3%fmI7LX;L%nMOg*6^&p6Y9!e6XvH|$?2`69TJUgSQ{ef}D z5n7uIY2iA;n)JyBK^dQKYGxDn>a!Z~IdF{fLBPk^-4TKCq_A;52Rm|U3-OkcJ2aAO zvGgEvvOc{4ca1m_&C6xvk3-prvn0FYx6jw9$oMyqPT+B9e>x-S8j<8vf71d~b{KQg z#ZaKHj+V(1qL#!;e9~`w#lEbWh#X=tjmt{#4d?lU+83Ws);kx_}Ug6Lu9K0 zQnl^maSo34xfJ4SD_9i>r|66=MsfA&FJg>4uGMkIp!q7|M!0ws0$+XR2ES@9{|&0& zTX~Dq+Qz+v3(c#eW0X}k-tx*NfkUC>P175vM>+Z9^}^8P^mi}bxj90B`OWdYNU&YD z|4=qXiU|e%p^ShFc^POzBwTxcwdeRIzerUR>(q>kpZn{P+9l}mZm43Q9-wPCgJu_z zQ{_6JS*7o0{3v(0E3CG1x7+1x0h@%&P`CZsSZnrIaU&2sm+ty$9E>eq4wciuY?!o6 z1;I32;=w`pm%Ljw>jHfRv}lDPH)xgkYo9L;2~J=OW_4F{2rAG*2^e)fF4{6`mx0}3 zgXjm`szN#r>Q%B!-+9?z^9Ly7{;Sna&KiL?oHa zoCpCmat{tQ`Q0%hj4 z=mvuMmA`Sd=DQPaNMG02;>#bEk$MsHgprSU9HC88A?71tj8(tuqLt08TA`?}(i z3%47=Oxd^XOh&l_`>lJHV;scpE(W3*tZ;v4d#A&Q5-7gXXKdgYE?<6Ih~QyxpG5(c z!bU`*>U>nM4N+dBG3t*uM@!DBJ{A^1z_C77sN13hl@&M5XN`fVSaHFjri_|U8W(b` z(M%OZ?D{L!M8QUgkq&kH1u;FD;q~0d`sT+K zwt$rLwShfINP~srqh|l@L@nc6i_1TNmIR7|`EI2lw=tq#5S){LR(t*KR;JRb1Qa`Q zkcKYJaXt=1rfWU~6uXmrSH^D4@H3CIi_4?g4-Ty!j<>sZ*|_)w5V!l0E1tp9zh#bF z;d3=3NFqw57Z8K;PL%9f997&aIjifxcb{ zicYB)``D(?)$e$MI8Z+@tocRRm53m!7g8ys+Q%8bhLo}CcD|-p+}nh)-aw?gB>wlv z?(M;3A)kXt6-U88F1qBTUfw&3$Z<@`3?#Qapb!U81N-gv zZZ%(Yr3cQ>^cw8wZd4$+!Kz7yhSu|sV3^q8HaY4JpKu_Jftnw4mFJ9WPkf=~=#C6Z z(BiD?+dV;_$@jjAdPC$w;s;?MV{I|?O)8DLHfAXma@|tW`mH;=8?XJ-7V?&U8@|oR zg+#5=68%`^qFNrz5wICu{u3f&mbp*i;+a#0>a;jb{gD9~VkNQr#Odgo*jQH%Lr9_u zQC7Jo+EoaqMOyuBwT4<|SPN~qH;&LiusRWmiA{pXi`3Ug8W?N#>5MK$IW_Iu4im!Q zXmQ0v>Xnv>l z%w0|GC~R+biEY!huV!`WXqdD_ZlNUg3C6W}gs0vpnf}{>L?5P1@_}!rNZ)R>W*c9_ z{fsk>Kxr$QqrDLQ`>KN_SVY$ubTTE3vwjFi(@rxt&R?yK4o{-4qKgslg=qBD1carO z$B^OXOfO>*%qT?O_}+W<>Gy>&QWr=D6QhI%>>NifJjS@4+kUfro{ymQ)LyF-i4Kkx->t3AatL^ca;{BwsG~0)V-+Mh=-%8v#)!p zB8ltyT}k0S0yZ?2v<~@;b~iD?4hXt-(xVeS0@1Tc(m>`# zw2R(zYY|V~noqgBEEPVLI7&Hp_e&T>rG8M`hwmNU9U~rfwGutKQw=cu%4&6`QmE9D>5irLUde6Ihn@I64XvY9sHre;!<=V|&WGI}$5LH=;u& z*?ZP(BzK&gle+|arj)t{>&fD;V&MQ67%HsZY<+;(+%R^HcTi@65CJ}9#IHAifs7#> zL~<$Cl6yun@uckW$)#TlcXUrn2k9|1O$@hF(xAz;CuTTHyeA|H%-w^JTy=zLK8pw3*jYLBZw6Mtb zFE>Mw4eTRJLx9nt!G}D)wZNwD6>UJbe~|W%$L8my#{Yc8mU92`X!b>YshD3&3m*3Q zNe%q}-jW8d;Z@cFei4#b!R;VO1Qom~PKNB2jVyCxZ`nOtXKXufve`C*n4^|XKGE54;883)|dCGpt z+mT3bq;e8M;~CV%_zl+#0n&=5r%^fM_{7Avx%7gy$mTbj<5*loq+7xx9Ai=MEN6Tv zTJ?~O&KG9qUL2itfR@AXIWgQOZ4i2$YwoGv%A|%!@n(b!ufBuAusK|az6xOuznn^) zk!o_RS`#8OR0@Jgly{8xKLOLap=-R(0#4RyOjASd5ylQ!a(C;g5!7T0k-U_LJ;WO$ z#(AmiFai&T=dJl&8!cxbEyaiP9Hp~sr+CWIS0xO=p~G^&^t|V^U9Tn26dO!GO;Nmf zj%9lHF~MU+vZYrxvrmrlE-s#J7$3EIfz`CUoBaSjH^uDl{a}aB{3DyX+=Pb5=V--F zt*I$67t!%VKXmJOf^_Er+){MG;0Zb+$DOFPXzLDelo{RBR6T{1^2(hc;z_h-| zAM;nElXTl{7V|@_!v@JwV%v?1vvp^`>#9LWDGf6JdBvRmWr9KE&0AaT@!ar7Lw1=3 zRNDz*gq2AsNTMgB4y<9I?G*hrs8R$B&)&$x9}3|#R#F<|?t=F`P#Pnu6XzF;S;A!k zHc8xDQJZ5W+EzH;r3B%f~&nhB=m zIf((d8!N|AuB*imOXX_Gelgf=>h{yP>P&aZt z{_d*Z2WD~f=FnAyBjLjANAQ9N$?VDFH6&z*4XeAayoYW#^Yd^zN{2LY(McQ_y4;d# z7DZRWP9KE1&H!e94hW$_f^D9tF4$+RQO~dS`2?B=36lVP8Xe`~RwoAXu*G}OW*^Th zM0f-NX+wWPqO9T{Pf3+c>BIV`O$n8pA%?ptXb7hFr8(Z8lKUOuxRm+&3dIbM^DxBA z64BIdsP!(eTmy{&o=vL5s031E+?^`j2gevA-mdV5LDOt?6YC6TYka0Mp)Cz4*{(Hb zX_x#yT0JWq&hp+2>fZNfzg3?bHs^8#NmzyX5j0J6dD`@d#Ll6VWB80%YJIattTZMU z%~4F3ISoT3+}=9PLuyLz@&4j)>dDw;_jkWR!yww$BoC#N7TOEWUHhtauZFW@=KKfU zSD@+nzFclUqv*Im`$6#jo9aa?wiI*i`Df?N+^h{9tisVU;(SV7?Yj$m;=k=e$|2#3 zoc+5ELoQ9kPrTOq-Bw6*Pj zo`(Jh0>Dot-}~nOv8Df?-wFTUor3;n_rQZkHqweWd^mD$r4HES(b~CA-Y(F;{{8#6 z1^#V;|9>s;X|rKRB0rV@H+k)>JAAzQ@87>I@NWzJzi9!a<&x7=o46~8T)uv$XRJRxP From eaa9ed6c5703eed2303482d72aa11e72a5a0e432 Mon Sep 17 00:00:00 2001 From: Anna R Date: Wed, 27 Nov 2019 15:29:31 -0800 Subject: [PATCH 110/365] Update image links to point to my github fork --- rfcs/20191127-pip-structure.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rfcs/20191127-pip-structure.md b/rfcs/20191127-pip-structure.md index 34bee7ed0..9937277e3 100644 --- a/rfcs/20191127-pip-structure.md +++ b/rfcs/20191127-pip-structure.md @@ -45,7 +45,7 @@ Note that we could still place the API directly under *tensorflow/* in the pip p #### Circular dependencies Estimator depends on TensorFlow. At the same time, TensorFlow includes estimator as a part of its API. This creates a cycle. -![alt_text](20191127-pip-structure/circular_dependency.png "Circular dependency +![alt_text](https://github.com/annarev/community/blob/pip_structure_rfc/rfcs/20191127-pip-structure/circular_dependency.png "Circular dependency between TensorFlow and Estimator.") #### Metapackage vs base package plans @@ -55,11 +55,11 @@ tensorflow-base would only contain core TensorFlow (for e.g. no estimator). TensorFlow Metapackage would be a thin package defining composition of TensorFlow which includes base, estimator, keras and tensorboard. Note that this 2-package approach is not implemented yet. However, its proposal demonstrates how keeping a virtual pip package could be beneficial in the future. -![alt_text](20191127-pip-structure/modular_structure.png "Proposed modular TensorFlow structure.") +![alt_text](https://github.com/annarev/community/blob/pip_structure_rfc/rfcs/20191127-pip-structure/modular_structure.png "Proposed modular TensorFlow structure.") Current structure looks more like this (except *tensorflow/* and *tensorflow\_core/* are directories as opposed to separate pip packages) and meant to be the first step towards structure above: -![alt_text](20191127-pip-structure/current_structure.png "Current TensorFlow structure.") +![alt_text](https://github.com/annarev/community/blob/pip_structure_rfc/rfcs/20191127-pip-structure/current_structure.png "Current TensorFlow structure.") ### Current state of IDE code features @@ -135,7 +135,7 @@ After building a pip package with this change all of the following work in PyCha To support the TensorFlow Metapackage plans we could add a new pip package that specifies dependencies on tensorflow, tensorflow\_estimator, tensorboard, etc.. Its sole purpose would be to get all dependencies installed. -![alt_text](20191127-pip-structure/new_modular_structure.png "New proposed modular TensorFlow structure.") +![alt_text](https://github.com/annarev/community/blob/pip_structure_rfc/rfcs/20191127-pip-structure/new_modular_structure.png "New proposed modular TensorFlow structure.") ### Long term: Import from external package directly Short term would fix IDE issues, but the package structure is still not as clean as it could be. We resolve cycles with lazy loading but it would be even better not to have this circular structure at all. From a05e0da52abdf3aa96ebdff51f635ede59d22ba4 Mon Sep 17 00:00:00 2001 From: Saurabh Saxena Date: Tue, 3 Dec 2019 20:00:26 -0500 Subject: [PATCH 111/365] First commit --- 20191203-single-eager-graph-path.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 20191203-single-eager-graph-path.md diff --git a/20191203-single-eager-graph-path.md b/20191203-single-eager-graph-path.md new file mode 100644 index 000000000..328b5604c --- /dev/null +++ b/20191203-single-eager-graph-path.md @@ -0,0 +1,9 @@ +# Single python code path for eager and graph + +| Status | Proposed | +:-------------- |:---------------------------------------------------- | +| **RFC #** | | +| **Author(s)** | Saurabh Saxena (srbs@google.com) | +| **Sponsor** | Alex Passos, Gaurav Jain | +| **Updated** | 2019-12-03 | + From a920a4d902bef24aa259496f6d063021a4bf3019 Mon Sep 17 00:00:00 2001 From: Saurabh Saxena Date: Wed, 4 Dec 2019 13:18:42 -0500 Subject: [PATCH 112/365] Move to rfcs/ --- .../20191203-single-eager-graph-path.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename 20191203-single-eager-graph-path.md => rfcs/20191203-single-eager-graph-path.md (100%) diff --git a/20191203-single-eager-graph-path.md b/rfcs/20191203-single-eager-graph-path.md similarity index 100% rename from 20191203-single-eager-graph-path.md rename to rfcs/20191203-single-eager-graph-path.md From 789ce192a6324f54240c8262e70014bd65d0d4a9 Mon Sep 17 00:00:00 2001 From: Saurabh Saxena Date: Wed, 4 Dec 2019 18:35:29 -0500 Subject: [PATCH 113/365] Add RFC and FuncGraph CUJs addendum doc. --- rfcs/20191203-single-eager-graph-path.md | 321 +++++++++++++++++- .../20191203-func-graph-cujs.md | 112 ++++++ 2 files changed, 431 insertions(+), 2 deletions(-) create mode 100644 rfcs/20191203-single-eager-graph-path/20191203-func-graph-cujs.md diff --git a/rfcs/20191203-single-eager-graph-path.md b/rfcs/20191203-single-eager-graph-path.md index 328b5604c..bec009b4f 100644 --- a/rfcs/20191203-single-eager-graph-path.md +++ b/rfcs/20191203-single-eager-graph-path.md @@ -3,7 +3,324 @@ | Status | Proposed | :-------------- |:---------------------------------------------------- | | **RFC #** | | -| **Author(s)** | Saurabh Saxena (srbs@google.com) | -| **Sponsor** | Alex Passos, Gaurav Jain | +| **Author** | Saurabh Saxena (srbs@google.com) | +| **Sponsors** | Alex Passos, Gaurav Jain | | **Updated** | 2019-12-03 | + +## Objective + +This proposal discusses merging the graph building and eager op-dispatch code-paths in python and moving the FuncGraph capturing logic and gradient tape bookkeeping into C++. + +## Motivation + +### Graph building performance + +Graph-building time performance has been a key bottleneck in enabling implementation of large models in TF2. + +* Capturing external tensors: In analysis of graph-building time for [BERT](https://github.com/tensorflow/models/tree/master/official/nlp/bert) we found that ~20% time of building the body graph of a tf.while_loop is spent in `FuncGraph.capture`. We also extensively perform capturing when building gradients of functional ops since the backward function requires access to intermediate tensors of the forward function. This includes 2 parts, both of which we could potentially perform in C++. + * [Creating](https://github.com/tensorflow/tensorflow/blob/6a70aa6d438259cabd23c09808db4cf51a2e5377/tensorflow/python/framework/func_graph.py#L1118) the placeholders. These can be many (154630 in BERT’s while loop). Building these in python means we incur the python op building overheads, Python->C SWIG costs and maintain the captures mapping in python. + * [Copying](https://github.com/tensorflow/tensorflow/blob/6a70aa6d438259cabd23c09808db4cf51a2e5377/tensorflow/python/framework/func_graph.py#L1120) the handle data (for resources and variants). Handle data contains information about the shape and type of the _contained_ entity of a `DT_RESOURCE`/`DT_VARIANT` type. Copying handle data requires a python-c round-trip since the handle data is contained in either `EagerTensor._handle_data` (for EagerTensors) or `InferenceContext.output_handle_shapes_and_types` (for Graph tensors). +* Automatic control deps: We add control dependencies to a `tf.function`’s nodes as a post-processing step to make sure that any side-effects occur in program order. This can easily be done in C/C++. +* Gradient Tape: The tape needs to keep track of the forward ops to build gradients (or actually compute the gradient in the case of forward-mode diff). This is currently triggered in gen_xyz_ops.py. We can move this to C++ as well. + + +### Cross-language support + +There have been various [requests](https://github.com/tensorflow/tensorflow/issues/28195) for providing APIs for building `tf.function` and v2 control flow in non-python frontends. Moving capturing logic to the C/C++ layer is the first step towards enabling this. The full details for this will be fleshed out in follow-up proposals, however, we do analyse how this proposal addresses use-cases of `FuncGraph` later in this doc. + + +### Shape Inference + +C++ shape inference in FuncGraphs fails if a shape tensor relies on the constant value of a captured placeholder because we do not have information about graph nesting available there. We currently work around this c6c1f2ff3bc979f420d8fffa2b6e02268f711bf6 by explicitly calling [maybe_set_static_shape](https://github.com/tensorflow/tensorflow/blob/15715cb2c8e877c18f8d969cc51a37ff26e8397b/tensorflow/python/ops/random_ops.py#L78) in Python because we have the graph hierarchy available there. One alternative @allenlavoie suggested was to replace the placeholders with their constant value tensors if possible, guarded by a size threshold but it was unclear what this threshold should be. Having information about the nested graphs and captures etc during shape inference could help avoid this problem. + + +### Consistent execution environments + +(Contributed by @allenlavoie) We currently rely on Python exporting SavedModels which are compatible with Session-based execution, where the Session owns variable memory and it is retrieved by executing variable nodes with fixed names. TensorFlow Serving for example still uses Sessions. This compatibility mode is quite different than the 2.x Python eager execution memory model where the language bindings associate memory with variable objects, and is likely going to be a source of confusion and bugs. This effort lays necessary groundwork for implementing FuncGraph in C/C++ and hence brings us closer to executing SavedModels the same way during serving (from C++) that we execute them during development (TF 2.x Python). + +References: + +1. TODO(saxenasaurabh): Link to FuncGraph CUJs doc. + +## Design Proposal + +Basically we want to get rid of the graph-building part in gen_*_ops.py and get rid of gradient tape bookkeeping in both graph and eager modes. For example: + + +``` +def batch_matrix_band_part(input, num_lower, num_upper, name=None): + _ctx = _context._context or _context.context() + tld = _ctx._thread_local_data + ~~if tld.is_eager:~~ + try: + _result = _pywrap_tensorflow.TFE_Py_FastPathExecute( + _ctx._context_handle, tld.device_name, "BatchMatrixBandPart", name, + tld.op_callbacks, input, num_lower, num_upper) + return _result + except _core._FallbackException: + try: + return batch_matrix_band_part_eager_fallback( + input, num_lower, num_upper, name=name, ctx=_ctx) + except _core._SymbolicException: + pass # Add nodes to the TensorFlow graph. + except _core._NotOkStatusException as e: + _ops.raise_from_not_ok_status(e, name) + ~~# Add nodes to the TensorFlow graph. + _, _, _op, _outputs = _op_def_library._apply_op_helper( + "BatchMatrixBandPart", input=input, num_lower=num_lower, + num_upper=num_upper, name=name) + _result = _outputs[:] + if _execute.must_record_gradient(): + _attrs = ("T", _op._get_attr_type("T")) + _inputs_flat = _op.inputs + _execute.record_gradient( + "BatchMatrixBandPart", _inputs_flat, _attrs, _result) + _result, = _result + return _result~~ + +def batch_matrix_band_part_eager_fallback(input, num_lower, num_upper, name, ctx): + _attr_T, (input,) = _execute.args_to_matching_eager([input], ctx) + num_lower = _ops.convert_to_tensor(num_lower, _dtypes.int64) + num_upper = _ops.convert_to_tensor(num_upper, _dtypes.int64) + _inputs_flat = [input, num_lower, num_upper] + _attrs = ("T", _attr_T) + _result = _execute.execute(b"BatchMatrixBandPart", 1, inputs=_inputs_flat, + attrs=_attrs, ctx=ctx, name=name) + ~~if _execute.must_record_gradient(): + _execute.record_gradient( + "BatchMatrixBandPart", _inputs_flat, _attrs, _result)~~ + _result, = _result + return _result +``` + + +1. Graph building will implicitly happen in `TFE_Py_Execute` which is called from `xyz_eager_fallback`. +1. `TF_EagerContext` makes the call to `Tape.RecordGradient` so we no longer need to call it from Python. +1. The Graph stack will be maintained in `TF_EagerContext` (see below) which includes the graph hierarchy and captures made from each graph. + + +## Detailed Design + + +### API +A high-level overview of the anticipated API. + +**C API** + + +``` +// TODO: control dependencies, auto control dependencies, callbacks + +// A TF_EagerContext knows whether we're in eager mode or in graph mode, keeps +// track of gradient tapes, etc. +typedef struct TF_EagerContext TF_EagerContext; + +TF_EagerContext* TF_NewEagerContext(TFE_Context* ctx); +void TF_DeleteEagerContext(TF_EagerContext* c); + +// The context is executing eagerly if there are no graphs in the stack. We +// check when popping a graph from the stack that it is indeed the one we +// expected to avoid bugs. +int TF_EagerContextIsExecutingEagerly(TF_EagerContext* c); +void TF_EagerContextEnterGraph(TF_EagerContext* c, TF_Graph* g); +void TF_EagerContextExitGraph(TF_EagerContext* c, TF_Graph* g, TF_Status* s); + +// A TF_TensorHandle is a union type of TFE_TensorHandle (eager tensor) and +// TF_Output (graph tensor). +typedef struct TF_TensorHandle TF_TensorHandle; + +// Note: takes ownership of t. +TF_TensorHandle* TF_TensorHandleFromTensor(TFE_TensorHandle* t); +void TF_TensorHandleDecRef(TF_TensorHandle* t); +void TF_TensorHandleIncRef(TF_TensorHandle* t); +TFE_TensorHandle* TF_TensorHandleToTensor(TF_TensorHandle* t, TF_Status* s); +TF_Output TF_TensorHandleToGraphTensor(TF_TensorHandle* t, TF_Status* s); +int TF_TensorHandleHasValue(TF_TensorHandle* t); +TF_DataType TF_TensorHandleDataType(TF_TensorHandle* t); + +// When in graph mode accessing a tensor from outside the graph will trigger +// capturing logic similar to what we have in FuncGraph. These methods let you +// inspect the capturing metadata before popping the graph from the graph stack. +int TF_EagerContextNumCaptures(TF_EagerContext* c, TF_Graph* g, TF_Status* s); +void TF_EagerContextCapturedValues(TF_EagerContext* c, TF_Graph* g, + TF_TensorHandle** captures, TF_Status* s); +void TF_EagerContextCapturedPlaceholders(TF_EagerContext* c, TF_Graph* g, + TF_Output* captures, + TF_Status* s); + +// Allows specifying a custom capturing function. To be use to implement +// custom capturing logic for tf.while_loop. `captured` must be in the current +// context graph. +typedef void(*CaptureCallback)(TF_EagerContext* c, + TF_Graph* source_graph, + TF_TensorHandle* source, + TF_TensorHandle** captured, + TF_Status* s); +void TF_EagerContextPushCaptureCallback(TF_EagerContext* c, + CaptureCallback* callback, + TF_Graph* graph, TF_Status* s); +void TF_EagerContextPopCaptureCallback(TF_EagerContext* c, + TF_Graph* graph, TF_Status* s); + +// Needed for updating the captured tensor in tf.function, tf.cond grad func, VariableTensor. +void TF_EagerContextUpdateCaptureForPlaceholder(TF_EagerContext* c, TF_Graph* g, + TF_TensorHandle* placeholder, + TF_TensorHandle* new_capture, + TF_Status* s); + +// TF_OutputList just lets us not specify the number of outputs of an operation +// beforehand. This forces a memory allocation in the runtime, which is bad, but +// it allows for generic code. +typedef struct TF_OutputList TF_OutputList; +TF_OutputList* TF_NewOutputList(); +void TF_DeleteOutputList(TF_OutputList* o); +int TF_OutputListNumOutputs(TF_OutputList* o); +TF_TensorHandle* TF_OutputListOutput(TF_OutputList* o, int i); + +// A TF_AbstractOp is the metadata we need to execute an operation in either +// eager or graph mode. +typedef struct TF_AbstractOp TF_AbstractOp; +TF_AbstractOp* TF_NewAbstractOp(TF_EagerContext* c, const char* const op_name, + TF_Status* s); +void TF_DeleteAbstractOp(TF_AbstractOp* op); + +// TODO: we need a way of specifying attrs + +// TF_ExecuteOperation will, if in eager mode, execute, if in graph mode, maybe +// capture some inputs and then add a node in the graph, and after +// execution/node creation it'll go and record things that happened in any tape +// which happens to be active. +void TF_ExecuteOperation(TF_AbstractOp* op, int num_inputs, + TF_TensorHandle* const * inputs, TF_Status* s, + TF_OutputList* o); + +// TF_Tape is just a specialization of tensorflow::eager::Tape on +// TF_TensorHandle values and gradients. +typedef struct TF_Tape TF_Tape; +TF_Tape* TF_NewTape(TF_EagerContext* c, int persistent); +void TF_DeleteTape(TF_Tape* t); + +void TF_ContextPushTape(TF_EagerContext* ctx, TF_Tape* tape); +void TF_ContextPopTape(TF_EagerContext* ctx, TF_Tape* tape, TF_Status* s); +void TF_TapeWatch(TF_EagerContext* ctx, TF_TensorHandle* t); +void TF_TapeGradient(TF_Tape* t, int num_sources, TF_TensorHandle** sources, + int num_targets, TF_TensorHandle** targets, + TF_OutputList* gradients, TF_Status* s); + +// A GradientFunction is what we execute at runtime when computing a gradient; +// it takes some closure-captured values from the forward pass and the output +// gradients of the op and produces the input gradients of the op. +typedef void (*GradientFunction)(int num_output_gradients, + TF_TensorHandle* const * output_gradients, + TF_TensorHandle** input_gradients, + TF_Status* s, void* closure); +typedef void (*GradientFunctionDeleter)(GradientFunction function, + void* closure); + +// A GradientFunctionRegisterer is the code that will run during the forward +// pass to find out which gradient function should be pushed into the tape. It +// has access to all inputs and outputs of an operation and gets to choose which +// ones to pack into the closure which will be available to the GradientFunction +// at runtime. +typedef void (*GradientFunctionRegisterer)( + TF_EagerContext* c, int num_inputs, TF_TensorHandle* const* inputs, + TF_OutputList* outputs, GradientFunction* gradient_function, + GradientFunctionDeleter* gradient_function_deleter, + void* registerer_closure, void** gradient_function_closure); + +void TF_TapeCustomGradient(TF_EagerContext* ctx, + int num_inputs, + TF_TensorHandle** inputs, + int num_outputs, + TF_TensorHandle** outputs, + GradientFunctionRegisterer registerer, + void* registerer_closure); + +// Registers a gradient function to run given an op name. +void TF_ContextRegisterGradientFunction(TF_EagerContext* ctx, + const char* op_name, + GradientFunctionRegisterer registerer, + void* registerer_closure); +``` + + +**Python API** + + +``` +class EagerContextManager(object): + def __init__(self, c_graph): + self._c_graph = c_graph + def __enter__(self): + c_api.TF_EagerContextEnterGraph(ctx, self._c_graph) + def __exit__(self): + c_api.TF_EagerContextExitGraph(ctx, self._c_graph) + +class _FuncGraphBase(object): + def __init__(): + self._c_graph = c_api.TF_NewGraph() + @contextmanager + def as_default(): + # Note: This means that the graph hierarchy is no longer maintained in python. + return EagerContextManager(self._c_graph) +``` + + +We will implement a new subclass for `FuncGraph` that will replace `Graph`. We will try to keep as much of the logic as possible in C++ and expose that using pybind or somesuch. Here’s a discussion of some of the features that `FuncGraph` inherits from `Graph` which we will need to support. This list may not be exhaustive and we are hoping to add support for other things as needed. + + + +1. `apply_op_helper` + `create_op_internal` contain a lot of op _preparation_ logic which will need to be moved to C++. For example: + 1. [Uniquifying op names](https://github.com/tensorflow/tensorflow/blob/41228d7f14496ff661e7c22361a987b0255cf812/tensorflow/python/framework/ops.py#L3297). + 1. [Checking](https://github.com/tensorflow/tensorflow/blob/41228d7f14496ff661e7c22361a987b0255cf812/tensorflow/python/framework/op_def_library.py#L319-L327) deprecated op versions. [Graph version](https://github.com/tensorflow/tensorflow/blob/41228d7f14496ff661e7c22361a987b0255cf812/tensorflow/python/framework/ops.py#L2946) is already maintained in C++ so this should be fine. + 1. [Type checking](https://github.com/tensorflow/tensorflow/blob/41228d7f14496ff661e7c22361a987b0255cf812/tensorflow/python/framework/op_def_library.py#L53). + 1. There is a lot of logic for building attrs in python. For this we could possibly re-use the existing implementation in the pywrap C++ eager layer ([1](https://github.com/tensorflow/tensorflow/blob/41228d7f14496ff661e7c22361a987b0255cf812/tensorflow/python/eager/pywrap_tfe_src.cc#L755), [2](https://github.com/tensorflow/tensorflow/blob/41228d7f14496ff661e7c22361a987b0255cf812/tensorflow/python/eager/pywrap_tfe_src.cc#L850)) + 1. apply_op_helper calls [convert_to_tensor](https://github.com/tensorflow/tensorflow/blob/6d7926bb87c1a91ffd110aa3407c003b2ae54009/tensorflow/python/framework/op_def_library.py#L421) to convert python scalars to Tensors. This will happen in python for now and may move to a python specific C++ layer in the future. +1. We need some form of context management to handle a variety of context managers we have in Graph e.g. [control dependencies](https://github.com/tensorflow/tensorflow/blob/6d7926bb87c1a91ffd110aa3407c003b2ae54009/tensorflow/python/framework/ops.py#L4345), control flow contexts (for XlaControlFlowContext), [colocate_with](https://github.com/tensorflow/tensorflow/blob/23275fb35cf17482d147f88ce7d8f4ce9c2376f3/tensorflow/python/framework/ops.py#L4115), [name_scope](https://github.com/tensorflow/tensorflow/blob/6d7926bb87c1a91ffd110aa3407c003b2ae54009/tensorflow/python/framework/ops.py#L3918), [_attr_scope_map](https://github.com/tensorflow/tensorflow/blob/6d7926bb87c1a91ffd110aa3407c003b2ae54009/tensorflow/python/framework/ops.py#L4587), [_kernel_label_map](https://github.com/tensorflow/tensorflow/blob/6d7926bb87c1a91ffd110aa3407c003b2ae54009/tensorflow/python/framework/ops.py#L4653) etc. We will look into whether this can be implemented using a generic op callback mechanism. The same mechanism can be used for implementing op callbacks as well. +1. We will perform a case-by-case analysis of APIs of `Graph` to decide which of those should be supported in `_FuncGraphBase`. + 1. Certain APIs related to [feeding and fetching](https://github.com/tensorflow/tensorflow/blob/6d7926bb87c1a91ffd110aa3407c003b2ae54009/tensorflow/python/framework/ops.py#L4788-L4805) probably don’t make sense for FuncGraph. + 1. APIs for fetching Operations and Tensors: These APIs rely on a [dict of Operations](https://github.com/tensorflow/tensorflow/blob/6d7926bb87c1a91ffd110aa3407c003b2ae54009/tensorflow/python/framework/ops.py#L2721) maintained in Graph. Currently this dict is built _actively_ as operations are created in the graph. We could choose to populate this cache lazily as well. + 1. In each Graph we maintain a [dict](https://github.com/tensorflow/tensorflow/blob/6d7926bb87c1a91ffd110aa3407c003b2ae54009/tensorflow/python/framework/ops.py#L2757) of EagerDefinedFunction/DefinedFunction used in the graph directly or in a sub-function. In nested functions we probably spend quadratic time in [copying](https://github.com/tensorflow/tensorflow/blob/23275fb35cf17482d147f88ce7d8f4ce9c2376f3/tensorflow/python/eager/function.py#L488-L497) the inner functions all the way to the eager context and use quadratic (in the number of functions) memory. Storing `_EagerDefinedFunction` references in the global graph has been a common source of memory leaks which @kkimdev has been valiantly fighting with. I think we should try to register functions directly in the global eager context. We can just keep weakrefs to the _EagerDefinedFunction so that we don’t interfere with memory management. @kkimdev pointed out that we still need to maintain some reference to the list of functions used inside a ConcreteFunction so that we can add those to the [SavedModel](https://github.com/tensorflow/tensorflow/blob/23275fb35cf17482d147f88ce7d8f4ce9c2376f3/tensorflow/python/saved_model/save.py#L593). + +Some implementation notes: + +1. Need to add RefCounting for eager tensor handles. + 1. If a graph captures an EagerTensor, the code creating the EagerTensor should not delete it. + 1. How do you write the gradient function of add, which just wants to forward the output gradient to the two inputs + + +### Analysing some FuncGraph CUJs + + +**tf.function** + +When building the gradient (Stateful)PartitionedCall op, a captured tensor in the forward graph needs to be resolved to a forward call op’s output. This will still be possible to do in python. + +**tf.cond/tf.switch_case** + +Similar to tf.function, during gradient computation forward graph intermediates need to be mapped to forward op’s outputs. This currently updates the FuncGraph.captures map which can be done using `TF_EagerContextUpdateCaptureForPlaceholder`. Note however that tf.function does not actually update FuncGraph.captures and simply uses the new captures for building the gradient op. We may be able to avoid calling the API to update captures here if we do the same. Not sure if there any behavior relying on this though. Higher order derivatives using tf.gradients maybe? + +**tf.while_loop** + +tf.while_loop intercepts the default capturing mechanism of FuncGraph with custom behavior. In tf.while_loop, when a forward pass tensor needs to be captured we have to add an [accumulator](https://github.com/tensorflow/tensorflow/blob/6d7926bb87c1a91ffd110aa3407c003b2ae54009/tensorflow/python/ops/while_v2.py#L1012) and then capture the output of the While op corresponding to that accumulator. + +To support this we will provide a `TF_EagerContext{Push|Pop}CaptureCallback` API which will register a callback function to perform the logic in [_WhileBodyGradFuncGraph._capture_helper](https://github.com/tensorflow/tensorflow/blob/6d7926bb87c1a91ffd110aa3407c003b2ae54009/tensorflow/python/ops/while_v2.py#L933). + +We could leverage this to unify the gradient graph captures resolving behavior of `tf.function`/`tf.cond`/`tf.while_loop` all of which have their own recipes right now. + +### Automatic Control Dependencies + +Automatic control dependencies (ACD) will move to C++ as well. However instead of being post-hoc it will now be performed _during_ graph building. The current design has certain limitations e.g. control dependencies across function boundaries are performed at the function level which is prohibitive for performance. There are ongoing discussions on ways to improve this. Other issues have come up in `tf.data` and `tf.distribute` for example because ACD only tracks direct dependencies. Ideally we should use this opportunity to address these shortcomings. However the details of this redesign are left to another doc to avoid diluting this doc. + +### Open questions + +1. Keras seems to be using [non-public APIs](https://github.com/tensorflow/tensorflow/blob/6d7926bb87c1a91ffd110aa3407c003b2ae54009/tensorflow/python/keras/engine/base_layer.py#L2511) for directly building NodeDef and adding that to the graph. This is necessary for supporting Keras's Functional API (Model.add_loss, Model.add_metric, and auto-Lambda layers). We need to figure out if/how to support that. There are ongoing efforts to use just the public API of TF in tf.keras but the timelines for that are unclear. + + +## Appendix + +**Definition: Capturing** + +Capturing is the process used to allow users to write functions which can reference tensors that are not directly passed as function inputs or are not passed as loop_vars in a call to tf.while_loop. In FuncGraph, when an external tensor is captured we create a [placeholder](https://github.com/tensorflow/tensorflow/blob/23275fb35cf17482d147f88ce7d8f4ce9c2376f3/tensorflow/python/framework/func_graph.py#L649) just like any other input and add that placeholder to the list of [FuncGraph.inputs](https://github.com/tensorflow/tensorflow/blob/23275fb35cf17482d147f88ce7d8f4ce9c2376f3/tensorflow/python/framework/func_graph.py#L672) and store the mapping from the external tensor to the placeholder in [FuncGraph._captures](https://github.com/tensorflow/tensorflow/blob/23275fb35cf17482d147f88ce7d8f4ce9c2376f3/tensorflow/python/framework/func_graph.py#L671).Capturing is triggered in `_create_op_internal` which is overridden in FuncGraph. + diff --git a/rfcs/20191203-single-eager-graph-path/20191203-func-graph-cujs.md b/rfcs/20191203-single-eager-graph-path/20191203-func-graph-cujs.md new file mode 100644 index 000000000..4586bdef9 --- /dev/null +++ b/rfcs/20191203-single-eager-graph-path/20191203-func-graph-cujs.md @@ -0,0 +1,112 @@ +# CUJs for FuncGraph + +| **Author** | Saurabh Saxena (srbs@google.com) | +:-------------- |:---------------------------------------------------- | +| **Updated** | 2019-12-03 | + + +### tf.function + + +### **Forward** + + + +1. An empty FuncGraph is created. +1. [Placeholders](https://github.com/tensorflow/tensorflow/blob/6a70aa6d438259cabd23c09808db4cf51a2e5377/tensorflow/python/framework/func_graph.py#L1205) are created in it corresponding to the input_signature. Note the signature can contain CompositeTensors which are flattened. The input structure is maintained in [structured_input_signature](https://github.com/tensorflow/tensorflow/blob/6a70aa6d438259cabd23c09808db4cf51a2e5377/tensorflow/python/framework/func_graph.py#L906). + 1. We seem to be [always](https://github.com/tensorflow/tensorflow/blob/6a70aa6d438259cabd23c09808db4cf51a2e5377/tensorflow/python/framework/func_graph.py#L1237) capturing variables even though they are unused. Can that be avoided? +1. The python_func is called with the above input placeholders as args. This can trigger creation of new placeholders by capturing. The captured tensors can be symbolic tensors from outer graphs or eager tensors. +1. FuncGraph.structured_outputs is populated with the structured tensors(containing CompositeTensors, IndexedSlices etc.). FuncGraph.outputs is built by flattening the structure and CompositeTensors in structured_outputs and by removing any Nones. + 1. We call [capture](https://github.com/tensorflow/tensorflow/blob/6a70aa6d438259cabd23c09808db4cf51a2e5377/tensorflow/python/framework/func_graph.py#L1015) on the tensors in the list of outputs to handle the case when the function is simply returning an external tensor. Solutions: + 1. We could replace this with creating an Identity node in the forward graph which would implicitly capture the external tensor. However, these Identity nodes are not necessary and might cause performance problems later. + 1. Can we avoid doing the capturing in func_graph_from_py_func? Idea: We keep Nones in the list of structured_outputs and not in the list of outputs. We could do the same for external outputs. These can get repackaged just like we [repackage](https://github.com/tensorflow/tensorflow/blob/6a70aa6d438259cabd23c09808db4cf51a2e5377/tensorflow/python/eager/function.py#L1911-L1913) Nones. + +**Backward** + + + +1. An empty FuncGraph is created. +1. input_signature is [constructed](https://github.com/tensorflow/tensorflow/blob/6a70aa6d438259cabd23c09808db4cf51a2e5377/tensorflow/python/eager/function.py#L644) from the incoming grads and [placeholders](https://github.com/tensorflow/tensorflow/blob/6a70aa6d438259cabd23c09808db4cf51a2e5377/tensorflow/python/framework/func_graph.py#L1205) are created in it corresponding to the input_signature. +1. The gradient [function](https://github.com/tensorflow/tensorflow/blob/6a70aa6d438259cabd23c09808db4cf51a2e5377/tensorflow/python/eager/function.py#L649) is called in this FuncGraph. This triggers capturing of intermediate tensors in the forward FuncGraph or one of its outer graphs in case custom_gradients are involved. Note that we already created placeholders for incoming grads so those are not captured. When building the gradient PartitionedCall op, this external capture will be replaced with a Placeholder in the current graph if the capture is not already in the current graph. The external capture is now a capture in the current graph (graph containing the gradient PartitionedCall). There are a few cases in the resolution: + 1. The external tensor is in one of the outer graphs of the current graph. In this case nothing needs to be done. + 1. The external tensor is not in the current hierarchy. + 1. If it is in the forward graph it gets [added](https://github.com/tensorflow/tensorflow/blob/6a70aa6d438259cabd23c09808db4cf51a2e5377/tensorflow/python/eager/function.py#L688) to the list of outputs and the forward op is [updated](https://github.com/tensorflow/tensorflow/blob/6a70aa6d438259cabd23c09808db4cf51a2e5377/tensorflow/python/eager/function.py#L715) with new outputs and this tensor is [resolved](https://github.com/tensorflow/tensorflow/blob/6a70aa6d438259cabd23c09808db4cf51a2e5377/tensorflow/python/eager/function.py#L723-L728) to an op output. + 1. If it is in an outer graph of the forward graph, nothing needs to be done (yet). + 1. If it is in an inner graph of the forward graph, an error is raised (this should never happen). +1. FuncGraph.structured_outputs is populated with the structured tensors(containing CompositeTensors, IndexedSlices etc.). FuncGraph.outputs is built by flattening the structure and CompositeTensors in structured_outputs and by removing any Nones. + + +### tf.cond/tf.switch_case + +**Forward** + + + +1. Build graphs for branch functions. +1. Find the superset of input tensors needed by all branch functions and update signatures of all branch functions so that they [match](https://github.com/tensorflow/tensorflow/blob/f540109342f8b7cb9b96163dae455013249c3128/tensorflow/python/ops/cond_v2.py#L494) by creating dummy placeholders. This requires resetting FuncGraph.inputs and FuncGraph.captures. + 1. Supporting this would require either ResetInputs, ResetCaptures APIs or adding new If/Case ops that don’t need this signature matching (b/143286622). + 1. Another option is to not support resetting inputs and captures at all and let the consumers take care of this when generating the FunctionDef. However this would mean that the FunctionDef would not match the FuncGraph which may cause problems in [gradient computation](https://github.com/tensorflow/tensorflow/blob/f540109342f8b7cb9b96163dae455013249c3128/tensorflow/python/ops/cond_v2.py#L109) which use the forward cached FuncGraph and expects the forward op’s FunctionDef to be generated 1-1 from the forward FuncGraph. + +**Backward** + + + +1. Build the grad func for each branch using tf.gradients. +1. Similar to forward pass, add dummy inputs to make input signatures match. +1. Any needed intermediates in the forward graph are wrapped in Optionals and are added to the list of forward graph [outputs](https://github.com/tensorflow/tensorflow/blob/f540109342f8b7cb9b96163dae455013249c3128/tensorflow/python/ops/cond_v2.py#L151-L152). +1. Similar to tf.function, we resolve any external captures to the forward op’s outputs. + + +### tf.while_loop + +**Forward** + + + +1. Build the [cond](https://github.com/tensorflow/tensorflow/blob/c29529aa7d55bc66b040917a36acdb5722231043/tensorflow/python/ops/while_v2.py#L141) FuncGraph using a signature built from the input loop vars. Cond function can capture external tensors which show up in cond_graph.external_captures. +1. Build the [body](https://github.com/tensorflow/tensorflow/blob/c29529aa7d55bc66b040917a36acdb5722231043/tensorflow/python/ops/while_v2.py#L186) FuncGraph using the same signature as the cond. However in the body function [capture](https://github.com/tensorflow/tensorflow/blob/c29529aa7d55bc66b040917a36acdb5722231043/tensorflow/python/ops/while_v2.py#L162-L165) the external captures of cond first. At this point the full signature, i.e. original input signature with loop vars + captures, matches in cond and body. + 1. The explicit capture is needed here to make the signatures of cond and body to match. This can be avoided if we allow signatures of cond and body to diverge. +1. Now body_graph has some extra external captures. These are captured in the [cond_graph](https://github.com/tensorflow/tensorflow/blob/c29529aa7d55bc66b040917a36acdb5722231043/tensorflow/python/ops/while_v2.py#L206-L213). So in effect the external captures of body cond_graph and body_graph are effectively cond-graph-captures + body-graph-captures. + +**Backward** + + + +1. Build the gradient graph for the forward graph just like for other functional ops. +1. Since a while loop can run for multiple iterations, if the backwards pass needs to capture a forward tensor there are two cases: + 1. If the tensor’s value potentially varies across iterations, in the forward graph the tensor is [accumulated](https://github.com/tensorflow/tensorflow/blob/c29529aa7d55bc66b040917a36acdb5722231043/tensorflow/python/ops/while_v2.py#L1012) in a TensorList (think: stack). Note: now the forward op has an extra input, the empty stack, and an extra output which contains the list of values of the tensor in multiple iterations. The forward graph stack is captured in the backward graph and a value is popped from it to use as the intermediate value for that tensor. + 1. If the tensor’s value is invariant across loop iterations, we directly [capture](https://github.com/tensorflow/tensorflow/blob/c29529aa7d55bc66b040917a36acdb5722231043/tensorflow/python/ops/while_v2.py#L978) the forward tensor in the backward graph. + + +### Autograph + +FuncGraph is used as a temporary graph to evaluate the type of a while loop’s conditional expression. See [while_stmt](https://github.com/tensorflow/tensorflow/blob/6a70aa6d438259cabd23c09808db4cf51a2e5377/tensorflow/python/autograph/operators/control_flow.py#L739). Created ops, if any, are discarded immediately - we only need to test whether the expression evaluates to a Tensor or not, and if a tf.while_loop is created, they will be created again by the while_loop itself. + +This might not require a FuncGraph - any regular graph is suitable for this purpose. + + +### Serialization/SavedModel + +Serialization + + + +1. The Trackable object graph is crawled to find all functions. An error is raised if trying to save an unsaveable FuncGraph. + 1. FuncGraph has a `_saveable` property which is used to denote whether a FuncGraph can be saved to a SavedModel. This seems to have only [one usage](https://github.com/tensorflow/tensorflow/blob/99f0e90b384cfb255103a8965bec0d11a7995e49/tensorflow/python/keras/backend.py#L311) right now in Keras to mark functions that capture the symbolic learning phase to be unsaveable. +1. For every ConcreteFunction + 1. Its captured non-resource non-variant tensors are [converted](https://github.com/tensorflow/tensorflow/blob/23275fb35cf17482d147f88ce7d8f4ce9c2376f3/tensorflow/python/saved_model/save.py#L280-L298) into graph constants. + 1. The graph is converted to a [FunctionDef](https://github.com/tensorflow/tensorflow/blob/23275fb35cf17482d147f88ce7d8f4ce9c2376f3/tensorflow/python/saved_model/save.py#L593) and is written to the MetaGraphDef graph’s function library. + 1. An [entry](https://github.com/tensorflow/tensorflow/blob/99f0e90b384cfb255103a8965bec0d11a7995e49/tensorflow/core/protobuf/saved_object_graph.proto#L32) is added to the object graph proto which stores the node ids of the captured inputs in the object graph and the input/output structures. +1. To enable loading the SavedModel with Sessions, placeholders are [created](https://github.com/tensorflow/tensorflow/blob/23275fb35cf17482d147f88ce7d8f4ce9c2376f3/tensorflow/python/saved_model/save.py#L341) in the graph for non-captured inputs. Then a (Stateful)PartitionedCall op is created in the graph, by feeding the placeholders + constants as inputs to the call op. A SignatureDef is then created for the call op and added to the MetaGraphDef. + 1. This requires access to FuncGraph.inputs, captures and external_captures and assumes that placeholders for captures are at the rear of FuncGraph.inputs. + +Deserialization + + + +1. Concrete functions are [created](https://github.com/tensorflow/tensorflow/blob/99f0e90b384cfb255103a8965bec0d11a7995e49/tensorflow/python/saved_model/load.py#L113-L115) for all graph library functions. + 1. This probably instantiates ConcreteFunctions for non-top-level functions as well. Is that necessary? +1. The captures map is initialized by using the [bound_inputs](https://github.com/tensorflow/tensorflow/blob/99f0e90b384cfb255103a8965bec0d11a7995e49/tensorflow/core/protobuf/saved_object_graph.proto#L107) field of the SavedConcreteFunction proto. + 1. This makes a call to [replace_capture](https://github.com/tensorflow/tensorflow/blob/99f0e90b384cfb255103a8965bec0d11a7995e49/tensorflow/python/saved_model/load.py#L184) and then a separate call to [capture](https://github.com/tensorflow/tensorflow/blob/99f0e90b384cfb255103a8965bec0d11a7995e49/tensorflow/python/saved_model/load.py#L200). This is done because we already have the internal placeholders created and we just need to update the captures map. The call to FuncGraph.capture records the capture on the tape. +1. Input/output structures are [initialized](https://github.com/tensorflow/tensorflow/blob/99f0e90b384cfb255103a8965bec0d11a7995e49/tensorflow/python/saved_model/load.py#L155-L157). + 1. Seems like structured_outputs only contains the structure but not really the tensors e.g. in the original FuncGraph.structured_outputs. From 60cf538c4f8138b0f9685b3d1d9584478a7d7b6d Mon Sep 17 00:00:00 2001 From: Saurabh Saxena Date: Wed, 4 Dec 2019 18:44:27 -0500 Subject: [PATCH 114/365] Correctly format diffed code. --- rfcs/20191203-single-eager-graph-path.md | 34 ++++++++++++------------ 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/rfcs/20191203-single-eager-graph-path.md b/rfcs/20191203-single-eager-graph-path.md index bec009b4f..1cbe451f1 100644 --- a/rfcs/20191203-single-eager-graph-path.md +++ b/rfcs/20191203-single-eager-graph-path.md @@ -48,11 +48,11 @@ References: Basically we want to get rid of the graph-building part in gen_*_ops.py and get rid of gradient tape bookkeeping in both graph and eager modes. For example: -``` +```diff def batch_matrix_band_part(input, num_lower, num_upper, name=None): _ctx = _context._context or _context.context() tld = _ctx._thread_local_data - ~~if tld.is_eager:~~ +- if tld.is_eager: try: _result = _pywrap_tensorflow.TFE_Py_FastPathExecute( _ctx._context_handle, tld.device_name, "BatchMatrixBandPart", name, @@ -66,18 +66,18 @@ def batch_matrix_band_part(input, num_lower, num_upper, name=None): pass # Add nodes to the TensorFlow graph. except _core._NotOkStatusException as e: _ops.raise_from_not_ok_status(e, name) - ~~# Add nodes to the TensorFlow graph. - _, _, _op, _outputs = _op_def_library._apply_op_helper( - "BatchMatrixBandPart", input=input, num_lower=num_lower, - num_upper=num_upper, name=name) - _result = _outputs[:] - if _execute.must_record_gradient(): - _attrs = ("T", _op._get_attr_type("T")) - _inputs_flat = _op.inputs - _execute.record_gradient( - "BatchMatrixBandPart", _inputs_flat, _attrs, _result) - _result, = _result - return _result~~ +- # Add nodes to the TensorFlow graph. +- _, _, _op, _outputs = _op_def_library._apply_op_helper( +- "BatchMatrixBandPart", input=input, num_lower=num_lower, +- num_upper=num_upper, name=name) +- _result = _outputs[:] +- if _execute.must_record_gradient(): +- _attrs = ("T", _op._get_attr_type("T")) +- _inputs_flat = _op.inputs +- _execute.record_gradient( +- "BatchMatrixBandPart", _inputs_flat, _attrs, _result) +- _result, = _result +- return _result~~ def batch_matrix_band_part_eager_fallback(input, num_lower, num_upper, name, ctx): _attr_T, (input,) = _execute.args_to_matching_eager([input], ctx) @@ -87,9 +87,9 @@ def batch_matrix_band_part_eager_fallback(input, num_lower, num_upper, name, ctx _attrs = ("T", _attr_T) _result = _execute.execute(b"BatchMatrixBandPart", 1, inputs=_inputs_flat, attrs=_attrs, ctx=ctx, name=name) - ~~if _execute.must_record_gradient(): - _execute.record_gradient( - "BatchMatrixBandPart", _inputs_flat, _attrs, _result)~~ +- if _execute.must_record_gradient(): +- _execute.record_gradient( +- "BatchMatrixBandPart", _inputs_flat, _attrs, _result) _result, = _result return _result ``` From 78d2a13462f719e67508cbde9c4d43d5ba506d0e Mon Sep 17 00:00:00 2001 From: Saurabh Saxena Date: Wed, 4 Dec 2019 18:46:36 -0500 Subject: [PATCH 115/365] Remove haning tildas. --- rfcs/20191203-single-eager-graph-path.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20191203-single-eager-graph-path.md b/rfcs/20191203-single-eager-graph-path.md index 1cbe451f1..b397208f2 100644 --- a/rfcs/20191203-single-eager-graph-path.md +++ b/rfcs/20191203-single-eager-graph-path.md @@ -77,7 +77,7 @@ def batch_matrix_band_part(input, num_lower, num_upper, name=None): - _execute.record_gradient( - "BatchMatrixBandPart", _inputs_flat, _attrs, _result) - _result, = _result -- return _result~~ +- return _result def batch_matrix_band_part_eager_fallback(input, num_lower, num_upper, name, ctx): _attr_T, (input,) = _execute.args_to_matching_eager([input], ctx) From 586f10285686d5b1f7e3fcad3cbbfb9712b2fcbd Mon Sep 17 00:00:00 2001 From: Anna R Date: Thu, 5 Dec 2019 13:21:52 -0800 Subject: [PATCH 116/365] Fixed some nits in the pip package structure doc --- rfcs/20191127-pip-structure.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/rfcs/20191127-pip-structure.md b/rfcs/20191127-pip-structure.md index 9937277e3..f577e7578 100644 --- a/rfcs/20191127-pip-structure.md +++ b/rfcs/20191127-pip-structure.md @@ -1,8 +1,8 @@ -# Title of RFC +# Improved pip package structure | Status | (Proposed / Accepted / Implemented / Obsolete) | :-------------- |:---------------------------------------------------- | -| **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) (update when you have community PR #)| +| **RFC #** | [182](https://github.com/tensorflow/community/pull/182)| | **Author(s)** | Anna Revinskaya (annarev@google.com) | | **Sponsor** | Alex Passos (apassos@tensorflow.org) | | **Updated** | 2019-11-27 | @@ -164,7 +164,7 @@ Rationale for this change: * One way dependencies (estimator depends on tensorflow and not vise-versa). * Minimal overhead for users. Adding an extra import is easy. -Note that this change cannot be done in TensorFlow 2.0 due to API guarantees. However, we can keep `tf.estimator`, `tf.keras` (once it is moved out of TensorFlow), `tf.summary` available while encouraging users to import from tensorflow\_estimator, tensorflow\_keras (once available) and tensorboard instead. This would require some work to make sure these packages contain the right API (for e.g. tensorflow\_estimator.estimator currently always contains V1 API). +Note that this change cannot be done in TensorFlow 2.x due to API guarantees. However, we can keep `tf.estimator`, `tf.keras` (once it is moved out of TensorFlow), `tf.summary` available while encouraging users to import from tensorflow\_estimator, tensorflow\_keras (once available) and tensorboard instead. This would require some work to make sure these packages contain the right API (for e.g. tensorflow\_estimator.estimator currently always contains V1 API). ### Alternatives Considered @@ -178,8 +178,7 @@ TensorFlow to import from `tensorflow_core` instead of `tensorflow`. #### Disadvantages: -* This is a -more invasive change since it requires updating every Python file in TensorFlow. +* This is a more invasive change since it requires updating every Python file in TensorFlow. It would also mean that external packages such as `tensorflow_estimator` need to use imports of the form `from tensorflow_core` instead of `from tensorflow`. From 250b29ec84d3c86b6a1f40c9cff189824b4217b6 Mon Sep 17 00:00:00 2001 From: Mahdi Milani Fard Date: Fri, 6 Dec 2019 14:32:17 -0800 Subject: [PATCH 117/365] RFC: TensorFlow Lattice 2.0 --- rfcs/20191206-tensorflow-lattice-v2.md | 443 ++++++++++++++++++ rfcs/20191206-tensorflow-lattice-v2/calib.png | Bin 0 -> 83017 bytes rfcs/20191206-tensorflow-lattice-v2/cat.png | Bin 0 -> 36262 bytes rfcs/20191206-tensorflow-lattice-v2/graph.png | Bin 0 -> 111964 bytes .../lattice.png | Bin 0 -> 82450 bytes rfcs/20191206-tensorflow-lattice-v2/pwl.png | Bin 0 -> 40259 bytes 6 files changed, 443 insertions(+) create mode 100644 rfcs/20191206-tensorflow-lattice-v2.md create mode 100644 rfcs/20191206-tensorflow-lattice-v2/calib.png create mode 100644 rfcs/20191206-tensorflow-lattice-v2/cat.png create mode 100644 rfcs/20191206-tensorflow-lattice-v2/graph.png create mode 100644 rfcs/20191206-tensorflow-lattice-v2/lattice.png create mode 100644 rfcs/20191206-tensorflow-lattice-v2/pwl.png diff --git a/rfcs/20191206-tensorflow-lattice-v2.md b/rfcs/20191206-tensorflow-lattice-v2.md new file mode 100644 index 000000000..210c79285 --- /dev/null +++ b/rfcs/20191206-tensorflow-lattice-v2.md @@ -0,0 +1,443 @@ +# Tensorflow Lattice 2.0 + +| Status | Proposed | +| :------------ | :------------------------------------------------------ | +| **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) | +: : (update when you have community PR #) : +| **Author(s)** | Mahdi Milani Fard (mmilanifard@google.com), Oleksandr | +: : Mangylov (amangy@google.com) : +| **Sponsor** | Zhenyu Tan (tanzheny@google.com), Karmel Allison | +: : (karmel@google.com) : +| **Updated** | 2019-12-04 | + +## Objective + +TensorFlow Lattice (TFL) is an implementation of +[Deep Lattice Networks](https://arxiv.org/abs/1709.06680) in TensorFlow. Using +TFL, one can create models with guaranteed shape constraints such as +monotonicity with respect to a set of features. TFL was open sourced in 2017 +(https://github.com/tensorflow/lattice) and was based on TF 1.x. This RFC covers +the goals and design details of TFL 2.0. + +The main objectives of TFL 2.0 include: + +* TF library with support for both TF 2.x eager mode and TF 1.x compatibility + and graph mode +* Keras Layer API for lattice and calibration functions +* Easy to construct canned estimators for typical model architectures +* No degradation in functionality, accuracy, training speed or evaluation + speed compared to TFL 1.x +* Support for new + [shape constraints](http://proceedings.mlr.press/v97/cotter19a.html) + including convexity, concavity, unimodality and pair-wise trust +* Easy plotting and inspection +* Clear and useful API docs and examples + +Stretch goals and future work: + +* Faster training and evaluation compared to TFL 1.x +* More accurate models using better projection algorithms +* Support for GPU/TPU and tf.distribute.Strategy +* Premade Keras models with multi-phase training +* Exposing visualization tools in TensorBoard + +## Motivation + +TensorFlow Lattice is a library that implements fast-to-evaluate and +interpretable (optionally monotonic) lattice based models. The library includes +layers and canned estimators that can enforce shape constraints such as +monotonicity on the model function. Such constraints can encode policy +considerations as well as common-sense and domain specific knowledge about the +underlying problem. + +The currently open sourced TF implementation of these layers is based on TF 1.x +and lacks eager support. It also does not provide a Keras layers API and can be +difficult to use when building custom models. The reliance on custom ops makes +the library difficult to maintain as it requires compiling the native code for +several platforms. Users outside supported platforms (e.g. Windows users) have +to compile the library on their own, which in effect limits the library's user +base. + +As part of the transition to TF 2.x, we plan to move TFL under +[TF libraries & extensions](https://www.tensorflow.org/resources/libraries-extensions) +for better visibility and integration with the rest of the TF ecosystem. + +## User Benefit + +There have been several requests from the open source community to add eager and +Keras support to TFL. We aim to address these requests and help avoid issues +commonly encountered with TFL 1.x. In particular: + +* Switching away from custom ops (which require compiling the library for + several platforms) makes it possible to ship the OSS releases more + frequently. It also helps with many of the compatibility issues with + non-supported platforms. +* Using Keras native constraint handling avoids the need to manually apply + projections. This has been the source of a lot of headache and reported + issues for TFL users. +* Implementation as Keras layers opens up the opportunity to mix and match + with other Keras layers and use TFL within Keras models. +* Reworked canned estimators provide easier setup and better control over the + model structure. +* Additional shape constraint types offer more power and control to users. + +## Design Proposal + +We construct TFL 2.0 using three levels of abstraction: + +* A low-level TF-only library that implements the basics of interpolation and + projection logic. +* Keras layers that wrap the low-level library. +* Canned estimators and premade Keras models that use TFL Keras layers. + +### Low-level TF library + +The low-level TF library implements: + +* Lattice interpolation, constraint projections and regularizers. +* Piecewise-linear interpolation and constraint projections. +* Partial monotonicity projection for categorical calibration. +* Projections for monotonic linear functions. + +The interpolation code for lattices and calibrators will be implemented in core +TF. It uses basic XLA compatible TF ops. In contrast TFL 1.x uses custom TF ops +with C++ implementation for interpolation. Open source binary release of the +library with custom ops requires compiling on various platforms with frequent +hard-to-fix breakage caused by slight changes in infrastructure used for the +release (TF core, Bazel, release infrastructure, etc). The ops are also +difficult to extend and optimize for newer hardware (e.g. TPUs). We thus want to +avoid using custom ops in TFL 2.0 while maintaining similar or better +performance. + +The low-level TF library is 1.x and 2.x compatible, works both in graph and +eager mode and can be wrapped by higher-level APIs such as Keras. + +### Keras Layer API + +The Keras Layer API for TFL 2.0 mimics that of other Keras Layers, with the +addition of the shape constraints and layer-specific regularization. In +particular we want to: + +* In the layer constructor, use the same parameter names as standard Keras + layers. +* Use standard Keras initializer objects, with short-hand string valued + alternatives. +* Use standard Keras regularizer objects, with short-hand string-value pair + alternatives. +* Use standard Keras constraint handling for both strict and partial + projections. + * Strict projections are handled by Keras standard constraints. + * Partial projections are handled by Keras standard constraints, followed + by a final projection through explicit calls in Keras model callbacks or + with estimator training hooks. + +#### Linear Layer + +This layer applies a linear transformation to the input tensor with an optional +bias term. It supports monotonicity and fixed-norm constraints. + +```python +calibrator = tfl.linear_layer.Linear( + num_input_dims=8, + # Monotonicity constraints can be defined per dimension or for all dims. + monotonicities=1, + use_bias=True, + # You can force the L1 norm to be 1. Since this is a monotonic layer, + # the coefficients will sum to 1, making this a “weighted average”. + normalization_order=1, +) +``` + +#### Piecewise-Linear Calibration Layer + +This layer applies a piecewise-linear (PWL) function to the input tensor. PWL +keypoint inputs are fixed and passed to the layer constructor. They are +typically set to the quantiles of the input, or are uniformly spaced in the +input range. + +![PWL Calibration](20191206-tensorflow-lattice-v2/pwl.png){style="width:50%;display:block;margin:auto"} + +This layer supports monotonicity, convexity, concavity and bound constraints. + +```python +calibrator = tfl.pwl_calibration_layer.PWLCalibration( + # Key-points of piecewise-linear function. + input_keypoints=np.linspace(1., 4., num=4), + # Output can be bounded, e.g. when this layer feeds into a lattice. + output_min=0.0, + output_max=2.0, + # You can specify monotonicity and other shape constraints for the layer. + monotonicity=1, + # You can specify TFL regularizers as tuple ('regularizer name', l1, l2). + # You can also pass any keras Regularizer object. + kernel_regularizer=('hessian', 0.0, 1e-4), +) +``` + +#### Categorical Calibration Layer + +This layer maps integer-valued input categories to float output. + +![Categorical Calibration](20191206-tensorflow-lattice-v2/cat.png){style="width:50%;display:block;margin:auto"} + +This layer supports partial ordering and bound constraints. + +```python +tfl.categorical_calibration_layer.CategoricalCalibration( + # Number of categories, including oov buckets and default values. + num_buckets=3, + # Output can be bounded, e.g. when this layer feeds into a lattice. + output_min=0.0, + output_max=2.0, + # Categorical monotonicity can be a partial order. + # output(0) <= output(1) and output(0) <= output(2). + monotonicities=[(0, 1), (0, 2)], +) +``` + +#### Lattice Layer + +A lattice is an interpolated look-up table that can approximate arbitrary +input-output relationships in the data. It overlaps a regular grid onto the +input space and learns values for the output in the vertices of the grid. For a +test point *x*, *f(x)* is linearly interpolated from the lattice values +surrounding *x*. + +![Lattice](20191206-tensorflow-lattice-v2/lattice.png){style="width:50%;display:block;margin:auto"} + +This layer support monotonicity, unimodality, +[trust](http://proceedings.mlr.press/v97/cotter19a.html) and bound constraints. + +```python +lattice = tensorflow_lattice.lattice_layer.Lattice( + # Number of vertices along each dimension. + lattice_sizes=[2, 2, 3, 4, 2, 2, 3], + # You can specify monotonicity constraints. + monotonicities=[1, 0, 1, 1, 1, 1, 1], + # You can specify trust constraints between pairs of features. Here we + # constrain the function to be more responsive to a main feature (index 4) + # as a secondary conditional feature (index 3) increases (direction 1). + edgeworth_trusts=(4, 3, 1), + # Output can be bounded. + output_min=0.0, + output_max=1.0 +) +``` + +#### MultiCalibration Layer + +This layer concatenates multiple calibrators to act on a single +multi-dimensional input. This helps with construction of sequential models. + +```python +model = keras.models.Sequential() + +all_calibrators = tfl.lattice_layer.MultiCalibration() +all_calibrators.append(tfl.pwl_calibration_layer.PWLCalibration(...)) +all_calibrators.append(tfl.pwl_calibration_layer.PWLCalibration(...)) +all_calibrators.append(tfl.pwl_calibration_layer.CategoricalCalibration(...)) + +lattice = tfl.lattice_layer.Lattice(...) + +model.add(all_calibrators) +model.add(lattice) +model.compile(...) +model.fit(...) +``` + +#### Projection Handling + +By default, TFL applies a full projection into constraints after every gradient +update. This makes sure that all the specified constraints are satisfied after +every update to the model parameters. Alternatively you can apply faster partial +projections for each batch and a final strict projection at the end of training. + +```python +lattice = LatticeLayer( + ..., + monotonic_at_every_step=False, +) +... (train) ... +lattice.finalize_constraints() +``` + +The final projection can be automatically handled by high level APIs (e.g. +callbacks in model.fit or training hooks in estimators) or manually in a custom +training setup. + +### High Level Canned Estimator API + +TFL 2.0 provides v2 canned estimators with several model structures. These +include: + +* Calibrated linear (generalized additive) +* Calibrated lattice +* Ensemble of calibrated lattices + +To allow the user to define various shape constraints, regularizers and model +structures, the library provides a **configs** API. To construct a canned model, +the user first creates a model config that specifies the model structure and +various constraints about the model shape for each input feature. + +```python +# Configuration for a lattice ensemble with output calibration. +model_config = configs.CalibratedLatticeEnsembleConfig( + num_lattices=6, # number of lattices + lattice_rank=5, # number of features in each lattice + output_calibration=True, + + # Optional per feature configuration. + feature_configs=[ + # Numeric feature with PWL calibration. + # Feature type is inferred from the corresponding feature column. + configs.FeatureConfig( + name='age', + lattice_size=3, + # Model output must be monotonically increasing w.r.t. this feature. + monotonicity=1, + # Per feature regularization. + regularizer_configs=[ + configs.RegularizerConfig(name='calib_hessian', l2=1e-4), + ], + ), + # Categorical feature. + # Feature type and vocab list is inferred from the input feature column. + configs.FeatureConfig( + name='thal', + # Partial monotonicity: + # output(normal) <= output(fixed) + # output(normal) <= output(reversible) + monotonicity=[('normal', 'fixed'), ('normal', 'reversible')], + ), + ], + + # Global regularizers + regularizer_configs=[ + # Regularizer applied to all calibrators. + configs.RegularizerConfig(name='calib_wrinkle', l2=1e-4), + # Regularizer applied to the lattice. + configs.RegularizerConfig(name='torsion', l2=1e-4), + # Regularizer for the output calibrator. + configs.RegularizerConfig(name='output_calib_hessian', l2=1e-4), + ], +) +``` + +PWL calibration requires a list of input keypoint values. If explicit keypoints +are not provided, keypoints are set to be the quantiles of the features and are +calculated using an auxiliary input_fn (with 1 epoch or a subsample of the data) +passed to the estimator constructor. Feature types and categorical vocabulary +list can be inferred from the feature columns passed to the estimator. + +```python +estimator = estimators.CannedClassifier( + feature_columns=feature_columns, # same as any other estimator + model_config=model_config, # defines model and feature configs + feature_analysis_input_fn=make_input_fn(num_epochs=1, ...)) +estimator.train(input_fn=make_input_fn(num_epochs=100, ...)) +``` + +Premade Keras models will also be provided with the library, either in the +initial release or in future updates. + +### Visualization + +To help better analyze and debug TFL canned models, we implement model specific +visualization tools not already supported by +[TFMA](https://www.tensorflow.org/tfx/model_analysis/get_started) or other +standard TF analysis tools. These include calibrator plots and model graphs for +our specific canned estimators. + +#### Calibrator plots + +TFL 2.0 supports extracting calibrator parameters from saved models and plotting +them either individually or altogether. + +![Calibration Plots](20191206-tensorflow-lattice-v2/calib.png){style="display:block;margin:auto"} + +#### Plotting model structure + +The model structure and all layer parameters can be extracted from a saved model +and plotted in a schematic graph. This is similar to Keras model plotting. + +![Model Graph](20191206-tensorflow-lattice-v2/graph.png){style="display:block;margin:auto"} + +We plan to expose these in a TFL TensorBoard extension in future launches. + +### Alternatives Considered + +* **Custom interpolation kernels in C++:** although they might provide better + performance on specific backends, we decided that the potential gains are + not enough to counter the maintenance difficulties of binary packages. They + also make XLA compilation difficult. +* **Supporting v1 Estimators:** As suggested by the TF/Keras teams, we only + support estimator v2 versions as v1 support is not adding much value either + for new users or those migrating from TFL 1.x. +* **Using hparams instead of a custom configs library:** hparams is going away + in TF 2.x and each library is expected to implement its own version. hparams + by design has a flat structure, hence making it cumbersome to represent + hierarchies required for model configuration. + +### Performance Implications + +There are several end-to-end benchmarking examples that help us measure and +optimize the performance both in training and evaluation. Our current estimate +suggests that compared to TFL 1.x there is no significant regression in the +training or evaluation speed on the standard TF runtime. A separate tf/compile +benchmark shows significant improvement in evaluation time compared to the TFL +1.x. Full XLA compilation is not possible with TFL 1.x as it uses custom ops. + +### Dependencies + +The core library depends on TF and a handful of commonly used open source python +libraries (numpy, six, etc). The estimator has a minor dependency on the +feature_column module, and the rest of the library is based on the public TF +API. + +### Engineering Impact + +Since the new library is using core TF ops, the library size should be smaller +than TFL 1.x. However, since the model ends up having a lot more ops in the +graph mode, the startup time can be longer and can take more memory. We are +investigating various options to improve the performance over time. + +### Platforms and Environments + +The new library works on all platforms supported by TensorFlow. + +**Evaluation:** We use basic and simple TF ops in the evaluation path, making +the serving saved model fully XLA compatible. We also have a tf/compile test +bench for AOT compilation. + +**Training:** The training is mostly XLA compatible. Training on TPU is +possible, but can be slow to converge. Further updates and optimization to the +library for better TPU support is planned for future launches. + +### Best Practices, Tutorials and Examples + +Several examples and tutorials on public datasets will be available with the +library. Colabs will also be provided for a quick overview of the library. + +### Compatibility + +TFL 2.0: + +* Not backwards compatible with TFL 1.x, but a migration should be + straightforward. +* XLA compatible and can run on TPU/GPU/CPU. +* Has some convergence issues when training with TPU distribution strategies + due to heavy use of constraints. We plan to improve this in future launches. +* Can be used with tf/compile AOT. +* Supports Estimator v2 and SavedModel format. +* Layers are eager compatible. + +### User Impact + +We will release migration guides to help current TFL users switch to the new +library. + +## Questions and Discussion Topics + +* What other functionalities or shape constraints would be good additions to + new library? +* Which computational platforms should the library be optimized for? diff --git a/rfcs/20191206-tensorflow-lattice-v2/calib.png b/rfcs/20191206-tensorflow-lattice-v2/calib.png new file mode 100644 index 0000000000000000000000000000000000000000..c11c0f27cc921e6dddb72719fab211bd40ca377f GIT binary patch literal 83017 zcmeFZbySt@`Zc;pmx!8*FlCUK@Dt`YB6{%0b01AzH+2(FY9|**OB;I&YBz5u3u+558%qSj>!()K_~oE` z_%i2Q&+hz6wWPR)!{_9uQAFJHz@;{B;7dU2CDz-LxK-9^8@krEJNlWk;;69Ke@g_s zs#WRJc#zREW0>xugVpEvwih2*qmvyQoyWXMy>sL9AC;xQ){xwpP@O*W?H^ncw*sZLhbd$-oaJS zON90x*A;~CFMiBHOZ|_xxY>!&>ME&HOF6n&P;;|$v)^Nr@v`yYq!q=Z7IrbW6jYa% z{nsVnZz8nTZf;J392}mWp6s4n?2ay09QOqT1UT+-a&U68!8_Poy&c?4yx1IE?_6Bs zpVyGKa5ZzWadNY9bfCVtrirPeyPF6tExbzy0Eu1yyalEbMiqZJt;-xWX-n(DL!~{o`W)epT;(dzFX({y$#5 zxRRj!6B8>79UF5u>wo{+zh98Eu(7g+C;7kpii(Sk1+2lv(~8jEr{%a%SlJAFc6!m+QaF^&hRkfAr@6M%RCr>pxn7|LD#CjjsQHEf?Ou!JUNz zAUaQgZaDf%Ujg=Exk}1wB9X}PS(OZ!}9iAPwLB= ziP%U3!N=k6>;+J#pBU)TJ<`K|wX=`Fse z1$)&4E5h!p#PW%`Sih>!ERVKs zGA%Xr2{-u@-ba3ZC%5^|eH*5(kh13w*`_T?NlBfao^JjY6g$~!>C1j_ems57TUity z9i7f?qh9B+ZqGa39?O`goGR$^#~Q8r`0+#-5o1hDOi6O{*w`3(Bm*sN@aXkS0qRZ{ z35lnzrV_~e_ygq@owvfy`uqEXgE3>kZ1*Ec3=xs(PXcfZKU z$k5Z%vvz*_`t@eyw@)d}yTSp+dI|78V`F23iN2%VB_8s~k+tIE$Px?qEeQ#Uh#PFS zz1#)w-z&<=d2P3n!h5~Fy(J`?UXpS7?EkK{=uDsrJaHcX_+&)nAqu^_)RWx3_~FAn zQzRO9fmeTxKkA{9QmTNfrOQ9QHm4e@9j61bLp;}i4i!JDuB@!g%F6nYDs;ZpLI@9N z))wVIAIax%a4qos^x(FThq;Btp%7T@3UGrDR@0So1$C16JKhJZ9fs z3b-!DB_>KCVLKc(!(U|8c<(L_q-9&u&z!ZiMLMNvBEI|SdJ<#S+`P?)G)R*~c7t5S zx19ce|L7R`yMKLgjmrPewKiv#_*DiiRSDFT&sy=HKW?zbmc*_sckd?iIT|V|c4bOE z@3P!&es-npC0Xp-w{PFP@tWK*%-!MDn~ldM z?rX!Z{|LTro4RlGD>n9$0ljmnwuqFAxC}EwMS&K&aWc_+c6PqS=a9nt zM1O6#_!9n2r}d^9(F|3lKR&0cLq&QCT17)F@hrT&+L@{o!~PKw5znvQ+Fvay_1K&` z{iw{!%zSk4`TTUFZc}uB)GQz%!2LkYvI2G`JS$(jXw6GOQc@B!MOqrWWzdx|a&B%; z>N&yK`u>+MUnoU<(4nD=zka0%xXLChz#`iWaIBm{6j!DVMzK2^T)#K}%n_@1% z z?;Uef(>cg$$hL)TFMQk<$PT~QU{zu*Ev+iwgAIb)g3_|G<*aK?{0SUJhT7W0jsC|N zSh!xoX;9<6g(<_cP?8#X%CPLq9G_2U!%e-s4iC5IA((0{yUAnQD=oW|wzjq)e$RF~ zIohIb6Up3XV!DWG!&1+d(5vi;4>MKyDWV{4(`B=-(YS5RG^vQ4#+kfurf-@%0D_g$Ll;D_4M9q7u^=|sZ39& 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 literal 0 HcmV?d00001 diff --git a/rfcs/20191206-tensorflow-lattice-v2/graph.png b/rfcs/20191206-tensorflow-lattice-v2/graph.png new file mode 100644 index 0000000000000000000000000000000000000000..757ba636b7c4e653ed2cadd9c1c0066b8fc8dc36 GIT binary patch literal 111964 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

5sr@LyGP_4+LI+%+iUGRCe~x)C42y5RS}e*Z?G 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 z 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%0D)#m`d!td176=R($*z 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 C4p(9T literal 0 HcmV?d00001 diff --git a/rfcs/20191206-tensorflow-lattice-v2/lattice.png b/rfcs/20191206-tensorflow-lattice-v2/lattice.png new file mode 100644 index 0000000000000000000000000000000000000000..7978d32dfc1fcd88d68ecd61f2338660ff026a65 GIT binary patch literal 82450 zcmeFZ1yfvG(>6Ra4DN2hHAs-4!6A4O+&#Eka2wo$OMnnG1P>O1!{DyLJwby@aCIK>jeNnYXk5%LUUsAv^@HZV9MC|Mn(>xKukEx zPsKt1_NF2%EJ%lFk@mmW9~j95ETT&Z4EdK01$KsqV5oYP=)cwnLVYC+EP~M=4d;KY z{I4H}@PO5)BG&!)`s9p%Juc!{4F>wRH&cPt*Ra(~|BC_fm4HP=W<#L=<`OlJtN(u{ z{1^NFKNJ4HQ~2Ll^8cq(h{Bi!j|Z9QFlrgNr7XHH*jFz&H2q$QZ;c9P_#cO_Ks{>h z+x?mA^oW0zs9ox^=-(uUO%egt+9vXHBnm&aN4aTt-DMwzv4a@()AH>y~xTmpoQlwKg4=Jy!f& z&gU!#J=$&z8h(b6n|XWdQXavO`|fWJIXFDq(br9|eP$Q2?KbD!W(=74m)`xbSWfpt zrNqPb9t*ZG;;cR!G`d$Ed9lmZaC9 za~WET6I43%XD2Uif?EA9!?k|HwZ>?jhhhwVl;=(N5y{5y~>uWm7Z*kv= zg&iE{V*6P+@0Qm&xMX%4UQXAw@@`$GVj$Knx$9K{b}hYqw0+b^heqo+TJ6|K1V?i& zgY41h&+3gwZaRG@Y-*!|v0fDQriKNXOl(%k|8?4Bq>VE#q`$@$X1XXGUYy-uv;_pN z%(h)dw=oA%Z?_yA#AN;X%tRRP)i8Vltey@7TA1zceMs3~Me;otzIDUh8x{wgBnrro z3MYs--lJvLz-3&TxIg=DF1!EXCg8!bM)u_hRu92gA_C0a-&EnR%n1K`d z%3b=XuS^hi{D+o3a~HsXeIMFx&D(cJ{m*N7|KvV&K3oJmFpUP>pB5}RT(mWB^Th@` zA=qO2`SvRs=6wx|r+9WRbl7~F=|Ii1UXy)S)=1+pTPe|rvuYs_6;{=F)PXL0tZ|F= zHz^|_4Rl^6&P`gmS-x1`&W}s&6}vw^38uOgKd4{BYWOpucy^E8c6R8qazh`LM;S+T zw=H{eH5$-*;aiMZdLg|{>>~4Mo0B405rsFRS7vkd&TFbm6tg$2D<3e+@`Z6wlS2Sz zV*8};(05D7Wzo6!w~FCK<4nJ%o_*~cokLYOQOiugc}@1&cj9>~9y0WnDIbd7tD|r+ zwwt}0IDM~;l#>DuKl$a`P5x4sTfiDdu5`xPS6-O@w`){`ZFdW8XR$SzG4|i*ECidp zYOxa)ep!Gq1!)0aZ5tj4&&2Je^eJogxLEQSj5fM`>p5@dz9P{QAx!l6Jm$dJA)lo2 zdh*Y92>rDkr+pGf6CYaD;{#TIMRTMwiCy)(y5Ri0NAn64y=WL6HgUWDT{!C1I*A_* zY{3uS8GSkvl9HcL!H>`CSAz-~UsPWB0q(8M>6Y0fk`qRaW2R?Usk=Aw=6vjjD8G*T?0CkV8Flk>Wbru1ni?T4EBXS*@oJqV-qK=WRK7^Xh#l=^G8({9Al{ ztl~rg`<4F?=0qiVq`72BI8oa%{L4kMo;zyUjgj2T0ao=b4PozZZ0+k;J8S|b ziC|O+AxwYxJqa;N~r>HY>4?nh9;z5Lm_379L-8=d-_Qx%f*0~`T+Z$AiUMBc6*+gT>qV%(b9j$O zr@AqdaJvIIz1-^jWU%F8dBMlD z3XDH&$M!!`5FPOQ4@k(t^&a;XLPCP3Y~k6^RsndMU)+|9g4~7sW=|CArMJ=dU$I9B z^qdj^zt-L`UJKg7gNuV@-+t_#cl1B~xV#YTbbQ@Ob)VyW###jvyZwoM*bf`EZ`ep} z*)pGhj0~If??ZBp1?}(s<@^QukSg#(#Gm+I{v6~x!Z^9{V*AHsi2|Khh;xm!DYCP_ zc~;%i8pYf8J@4jw0%=|TfLT~4%z~O64xGSJl0o6ojY&17eLuX&lT_8&8&-~| zKlfVlih#RaUY$_|(KZ02&)j7R!wMEpyoJaY#I>aZ7Jztqll`n-q^%mkMF^wBBxS8A zKUQ@!O-R#}9JxEVm*y|iF=Kg$8^fdY| z+}}Wq`id{GAEQrqEiK??VI}omIjEo+)mVOih02_ucif@=XV~(L=z(+GuKfpl(|c?@ zJke)`_AO`AuI^30qF6VDjRx_}v}7jw4+9=#y8 zkuaP&7B^IvaIA*^otYWGhn6i7(~$Bc6182l98R&w4)&Y!$TV-Z&DY&{zlR#R|!J> ziA{Aq7Or{ie4zAqdT5AW`OYW=C(<-dL{s##9h*gMG0FIN6F~NR?NXeWU&~gRNqvPk z)y^)f9!W4>Aek+5>U!3=oo9$AB^oEwXr2gR&U`~RTRglOp3C1KepDnYzHsuDO4i059&W_(24k@N=PcaeK znmNcdvadwwm685>OoHR!*_95?z4FP6wuA3Kcv1k)J1p`^t)}kcS3G~l@E3tPI9;s3 zTlvnO_-@kcpNFkC2ZAeA`f(6n6fwiQh9}c+nJ<4U1(cK$9nq&5shGsVd?o+hHW}1Q zf1`H*4YlPqStS3qus^ISx|QkrXL&ma{h2nm;F$$BoS2wlb z)WmM1dLWki2#FUrpA4`P8+;N2VlLqq&uka$YKAjMX&pmY4I=rkPqBvPoJp1Pn00#$KOVTO_+40QL?K`a zh%cX{*4Z^882#r|QU~JU9No2|To_zRozdL#8M)7yy8zM47Sic|%jucJGCnR#we)Zz z_g&W6ktZ>h?TA5i@dG>(<4E$Kbg-l64way=ZH=5L|k+o6>;s-vG<28TEV9d z!o_Y)tOu1xz}-y$iBtIU@Bu$uBFt5j%Ws7uuOE!NdPPX_h@0FW84&sMQ5Y{fXT53p zx--Fr3~Per*v++*5#P4xu_rwzDpdQ-7%?9s^b{brJARPTZbjbunuf5ha8~DFk8Hht z)6%KLnU({$pb&4lpi%xP_hzK)?AuuCAjp)tCi_^_U=_9h`* zc%5eO3gzPOJp{Wx9_KTJ$0P(X7wL|n)Uo+k=4#(DV4;n?4q4oI@xmNo8-gtX!IuZ5 z7D5amfAQ;uHOh{E*s{H|vm>{V^$llh<&2E)^g87riX53PR+?!tfZ{e4D~qhPf+c~?gl z%RY`*y#cqqf*f?8lkF>^Jzhq9vsp)0^qe|S67R~O}69NkYEI%ALs-xizp#>L2ma<0OF^Z0Hq>&lO=rREPSK)x z=Owq9;W>)ah?u{%L0@{~jaDlzcNA2=Z7C`iAf2mlt4m2f(A%r`bxef|91dC(JW6zM z1wdJ=guLyW-MHgUjlw2@UL75#6C?LfzU zuTh`nOlVwi{2|A~2?uXi2gUAqod37U-LvH#_@V!W(8Y9KoZRi~3YPE@{JwB-z6Y~c zK^SD*<%EQ$uI;&sKqau{69g;VenR~>!mMI~(J!P21JAYs?zcpwz$`Cg8Xv)U(r@RX z)p_~D*UI@b ztiG%wu=K7-n1Xuj&!2ZnT!yKz!P(+A0$TUpm_eHGC$w@b5!2ZTUR9m#XDhtS`+e`5 zCy+*QZ`tc8eD!Tr&+!l@vu=9 z?rQJ@ET8#s4$ofkJspMwcNsmL84W&CS#uwh%y$#=jg4X~bl?}UW&!zDqnh;Sae?Kfbh(TgJYDQq+YPCwcFhA}3sRnoi7#EO@ zL#a*d!*W69M|?9m@mYT7b0uYT=`<(!7&SDuqQa;)wHeJPDHX|750|~s{uFFm5s|W3 zh$LKqBvK}QQFm=Y66SK!&ol@`q!NQiX`!|#ca_!XN@4W!^cQiPb|;8$#^XJEGp4bx zxJK|}CRn`|E9Bsy)%s7hp@3<1!4Fp$1-B=BK>FjUz#dh+@Mt$XhA(jX=0Be(KeU=J zg?+FKn6Uhi?A35*aNsvyc`%sD%5(v+e{ICTAbV*jV5pKj%~HZCo7#Hd@|(Wrn;#vY zeP3`8`rN|t=Ed*Nf`{y9>mBGElcPUtF7@6tZDsjH^$Krtxr%Oywq^EGxX#|-f1mwYttykwu;GJnVvjlV z56j2!OCS+8bXwVHKF+#mF7y!QwD>zY0V_g%8#y`-FM!7>Z7Z!;^0^u`GSm;aJNwu@ zXU7+vANxY#!Vj=^!<-+H&-jkt_^qe`aD$c`oW+?vK$SW5(D`$va2So`XY{?u$u|iq zXZ#u}qgLTah=gGz20`adoH8+|lt(j=>hZ0A=wykW+Rcv>op0eymaQLnBwIx4g4*`M z$Pl(>a|fgQlMfp@qu#0RxLF`4u06-1SAkPFA&$ZTpGyTYtA}Lv@3VOUAC~#b_JF|U zaVW?KNylI(`dWZ?|)xN zT|WjSyQbcjaVrAgU_R8YTM{hJFZK2xY1?W)rAGO~ z|4Y4Qn@q$8vt4~K@^468^BFRwqZFRzz;zyXqQI`;ZN)P;#1*V_XamWI{N7tk^cJAF$ z_DTOIp2>-KeYl}rcYFbmM<`+L>J_q5J0PfO2ApOeg)qql==4s->X8CT*uusAXgLu2 za4yX6s+~RpZdM6R8*;)F#uh#jZ>Rc*3F))C9kLWvd(dR%8hAtNMSnm0e~U^MsFyBA z(0ury;d!-Adp$1?#I}Khtjlk1>_ra(5Wi7e37qi$r8oyfc7W`TN&TEbO5DGkj3@ZN zaTvICj|A*OdM#(<5D*X3%mAqMd~yAZ3WoiQCT#Db?V$xbPZ{Z-LSY~(J^UsQ^~pQ; zbf~7pDnKhgkUP|y5N5B-ZsHrq23@@r_VNc(`2I)EGG`J_0X;Ud!uEtCtdB`yQVv z7s|S1Xu_n)024RF61zPToY40>n+g(}IR_j+mmCdX2QMTL!|uNi^DPV|V7gTPPX!ZR ziE`9xrETV=kH^dbR_Bv4=Vtp>UH%C)NcZ&&3?qx3+}zv5d% zh6W_3=Ycu0?enB3D1S$T|Ia7s=t0;)qrRKZcLFgHzzfEY1wrjBVY2_KGQ#6g^#R~H z0R#r8z7_6N*P8eKyB;$S+<=Fe6sf6 zPms@mBb~51TI;qu-SAoz3kDc(?#cGmz<~uvRpy0{Kz4v#&@S0B?YzYAlHg zh#LX%7Bx=+8l}aQ3~G7}v88ibPmmn|RL$peUR$4L+^O@kv(nQOe*gZR^+zYQ*bc|wRfnUErT$qp6rP1XFRfOtQ64d$jv!O7$@0kycD4GDNm$%?YWt^fD5|XrNhf9~*rtH? z^0ZZhMYS`tmbx@z(R;VN+Idapuu4@N?T9eh$1sYn!!Itu!Vgf9_?5)gc`J^a2o7 zhs7xGs3ou%mHs|t7Q^SG-Oxq1U9Q0l63=r>fSRnfl)b>-NkeuEUHvQy zs!)GuAMI`Mg_dqh3#aee+aNDvWs7*zHsrKaGf9TTJ7E6>px3SgtUK#aE#)KuRtJ5o z)La2c2ECTPb7&oRtZL;Wgt`2RWEudR;z-4xz0DRCa=((mHV$rm4WZ}sg;bt=ac1#K zMgQ*S5YM6HYQ159tgqgk#*}U*&$zF-U|B|?bE>~3&gz(+j+|E0T4PTf+GWi$%#)(I z@ZdEz#NALgmrOs{oQvdBK2YG!v!%b+JE{BDlLG%0qy6K zlrSh`Feth6TY5*8k+0ER*jtoNq-M`5w1b*muinZ8`PzBslyLOM(bq9#UV1w*jgz!( zTGk8u-|2^6a(eh(u)(T;LJCjW^v#|Q$Q0?G)5CiDlwfWrFlwq6w_#K zr#5FP^*6mr>yC~w^ON?iT_W@UAcD3aAkJ!zyw9c%jAVdKHP~pT*sKP;=hjTrh}L0J zRg>;nF=3sjh{KeNP=;n3Y|z*)AC!$uv$`F2;u!M`M7@g9Ghx_UuQ+YvWfiu3YC;KYBCI?b-QFcY*~C^BAN@^^pwSc-E?J3Jx|691SC(B2{Jl3-bco zagKa`+i?1=s{khkNje9|EooHs!64Rz9%e#k{iQK)&xa)FIgz&0ZtuIG%%f+p#a8~l zv?2PpCd)5O+j|a5st@f>570b+HQBaBSVhRD_P+;zkLMlcK6|G8y;TW1Ap6(3SAGEi zZ?c2j91R}HGq8cmo7=b>O|(!s*4?ftJvnXAcb!amAxDp9nlPbcThSLT5?0JXf%V?R zv2STck&<7Q!RQPrO3$^;&l`#@B@$5xbVGbD7vbD8%R%%i*a+GEl6;;L@XEj^L_{ZA zm%``C|A|}1=8qC6DaQfeWn%`fHA4qGY^oVJP%4L45fkJ}r!YSqdG<*BmVAc7nuT~2 zq&x~i$ih*^OQbda4QBFxdwB%e5Pkx5K4kiX@Btp|D5rHf~&lRs>COg6>`mZ6E?Y| z$u50ZmH0-?-3P6u(WWfKR@RlYLKG?Z06&2f36`&6`3z^sS4*(j`5eBa2)a|&MguiH zV&>f6(b9PKF|N*r0Cg8RMuavw9hfX0}K|{&sZFXS3cXuPm!Wm>oQq? z9_`1ZsUUls@#+1Y$1@3&&3+ z)nr1MhHdwEOyaZxd>JEy8OSj4Wk6{B$?VLLL>a&tN#vJ`>>Uc&z*#$dkJwkS+Qc1w zgm4yO^@Wk;HH=CBh8H!P#x!tHXZ7X`>}!CCj4qEbr5$g+W1lBT6V#S==AGRdOY!jP)^}jV4>Rh(c5H zEF6Q;pn6h82l1<(E;Vz$Shw!wi!0DorX_elq~m$V1yTXIJOT|zvUB!Fvc?mAKAw*v zUUy7;&sF}m=PJOWR^^TofSXQ1-!Y8DD~i2{azbT|qFJ}!Vt?I(LKhy2v=$bL1BHiF zfy|#;;^CX1;LPO#*JrvmG|3U7unqn9RZgB)O_u&I^Orhf!9IYVcBfcLE|P%qT@v_<~7!dNi>LbTS>3v2xl#9+o5dCQ_S|s2=JYKj$G$#4VZ7J;0BL z^wp6Ex`E>7!0Aad3K6JaMLSG!>=SAWdAsU-rIg*9RsF~e;q;HqY>BejeoTQhIPljc zJr9-*AsP=_0)aW7>KLrQh$x{L*%meZ+_?xrVJAgLOSo=q^mG*GwqkQ~xYJe%vy@nE zIKdP=)>2e^+MyhSD4Ok2|Ft$svXjw?k}t2%b`;`C0OP>p?l_cd;a?41e@5&3Pj#N* zQF(?^KgRY-7f54XsK#NG9LXFfk=02H&j*`w#@dXBx*v!Gs$bI8gEJ;OGA^ENrQydD zyLLobf}2efX>oO!c2IxT&_>q~ur4cO(Jh{QU#|57lY4boDO1-wJI01wGIV`641`n2Ngg*6-V+PwFXp^AThVa~PP^f>(IM`- zQ=PIjH)cW2*8HYo>tVD9KCV3w&ak~SCQ*JZNnCl-c9LbLe=wqw0I0FBNk<$4SxZ@l zxMhmyZkYpFpBBt4u-IEtoxUWT@z+C&^P3rAUQ07};H>I^@?RBb zj?;f?t>}|Xa6{dn)?y(GTRqJ1*gDBu#*wDs^^_!$A3#BTlF5437?M>n*_k}9==+qG zklx&kxuYat;Zou;xTirMdn7|tEU4sxs!)#S?!cF=QU@%RrX}YD$6DP3hC`~KhzYt+ zrDl1FKFgQnqHvB}E?2(ADBw(&pX~d2gU0PC*~2qh+nkL!3hBe>(LR>RlS1F3viQoF z_)5*(-oy}yxK44H%(-b>%RW+<{`NV(j}WQ+$g!ADx2qlLSHWQBAe}^c%&Lc0%jUzA zjvePHjcXg}jdRdi9<8`Uf0BNsf>Aq53wR`+^b``OvIMgPCw9_gGRjY(LtN)PMj@4< zRUrH5ua@n3`2E5Bxt>z#-D}t0OE;h2iz9{ld|`E^!)O`R%VD5uqQTcADSGj<{oCii z@)ynopx(xr&^huZ32udIrCOiteTp$?C!!$s@+8V3lk_Y3>ik10JtX*r)%Y1(gjz9@1}fwsK!%GW$5Tr1y$x@B z3IDGjehzosbZTM>qM9OKpMk!|H!Ruoze+4>j$g1G@ow4H9Dqp>XyA6}zE)(uK44!v zT`c&^DV2!;%KbArl;;Mh6}%C5RH)H!LF*_nhYV5R@BD~!qo9K;$Q5N-%NTXY-J#W6mkxu_(z^IJy!^%B{f}dsDc}i zE2DxV5pX5B%=?(>45TpL%l~s4#HGMnAXE~@Rf00z?SN(;&fS;*tw_u==BlEQu~)p5 zBAgu!_&W&-eg@KILzrb&L9XL0cAicI6Q~8aD%i1=4yGx~=B;&~yDXF&lV0LLKQH4@ z`ViIc>X$O}Jk9?)8E#T|64L7;l>a^qVakS^Pv4H;RB8`=$uh>;cF4c#N=h_YNHjit*dW!S5fVLNPek^%`IJqodqGlCfHQQc(YyKUGmH0# zUeEep(VV%t73**g5YX;xHt}Z%_c_+ti_GAJjj?}13FWkTxy;n2zV=otvirLlieIa{ zK>E)K?2)4|6y^C*({8;A^8N3cBu-kJAcs53L5%O5J=C&L3<^2MNM$G=APfA&DVnw+ zE8)q^zww*&rvuZ+?6|cdW-0#$x?{%zE$b8|b8s}uI{LzzzUP1C`fZ=E(^xY7#iQcp zwutobW92P57ty#%^EhWzNZ9;cP2WNMnj>% zMdO-iUY$FqZa&?S*|Q_8!0hne^fe1=aQGpneuAxuX=2eL=M!z?eIc#Kq+*O_)zw8e zcKrYLWe?%OBoPt26(R*;)8yl`v8n}02$WCc8Fk*u28JG^9300lL``5$du7>@O7aqs za1Fs6Gd?GF0f!Hrn1EREFj*UYAV=>wE7tUR4J0gwZQ0Ue855 zgqL}h7AUZNPv{!CAf&2Oz?LQ|rHpa-;@@}Z+F48119^%T83fm#>qSbWoX}o9CCIm< zUljrC*UjBB0p0lzy%Bhc@M=_eK6O^4{RXQzn_Y&xrZMJ{@1~BT*7j7v$^f<@&4A$Y zEDyfyp(K;C8>B&?jG1{v+ql05L`>H8pob;}8%o0;zSp=mH{$B8%O^u`G<>36P=^<_ zil;yu0RC&&%Ti$}D<@Ou6>Qo0vJyHniFee24vS)vILaT116nIk8YOJE?E9l)`Cl@e zi2V>**Tlx6U%($fN!Dx@Sj7ya+RgyDQl)zXT1jn5qz%do*+xP1O8f2_P^qwe*M!H? zl}Z%OT(Lot}++eK~R?oM!|l9Cm9* z3%$g30FGgY19yx#JKo zO&j5~LkeXWmYtrly$P0@3=rJKP%j<2&XVRmKj-Bd3ol-k({rjrTod7#XCIM#oaj+r zWkfzT1t%wbOP3Q)Lcu`NB-4zc@rXskl1bL;i_An!qswT5N62j88T0Y;@z#YBE-UL= zCcb=r#w7RF(l~4TiG)s@faY9z@)?322^wEl6`582yv2rsf*{cGqNxCns@qk#(dfA& z^;YgtG0&C*MfU4gi%7{sgitSB`h#9|cv~?xn6Nr3Hl-8`1=QNmy@N2JVkmHqP-93K zT(gP_rFkgrN_v~1q?{2xj}+pn)7wv_m(HU=&4a(R!XcO@>8aFI{9d97IM4+;+n#Ju z1ZZwo?wxjVkz(7SOQ$xd6KOq+#?GK+8TF>p$?zKM!wJB8J*D7LRg2`trUW6Bh^8T< z6^wxA5dn0l#|YTv+fC>w^=4 z3>hn?Z*KF*=VG%43Ty)AWx0|1+__0v*3*|U&%K^q@P4!rsHCk+xq9`u7d?vb5sC>< z!K^7=LJrtC_i=L1M6}xtu!DtsSUn}DC;so zorXnGxkA`Oj_bOxnYe;eywar~)+NtQG`Tf*S^W3~^HVsX`ih(!tAv3zSSa%1Vt)zc zIT%o54D%WZKmsIRd-+rz$kbL376R}->h71HI zFka=W9NqE^?sz>55tKP=W)i40WiZs25ypZd&(zt%@WGRrL7Pja$5YWoXoFYUMN0AD zHX?V_rT?uS>rxui>U+W1hPUPg3;mzqMP@_VAOtWA?Y2T)LJAEDQjV3B1-;cbRYI99 z`KEFtvJijmlc=LB%Y?_|<$XAamGXV~jZIrhSkP4B+Ljy~2h6Ob+*r=6a%V-ukLQyP ztl(+?zPHP|wMEGZbTb-VD=<8;z-#$fJW?o^s!z|@teE`k5ht+D+I1aJH#q}AVbV*3 zo8v_Vsa8aFSJ-W8n%+;vM+1f_!J@W~NU=}I1q_2f_nRibdZ9VuXTKUmQe9iEIB|@p zcn7)l4s1f@(3D~)HNPSRg$X*|!4zCc$sDcqCA_f>E&B5l3j zJ^F#wn4=KI;|IXw?cTnKof=CZKi*6Wc)jHcg#3O6<;tk&;&w}~muj8TCi2E-P;WG2 z-V`eqZZ&Tl5%>NToCP9iU_>B`|C@u)={q^0D$FS*nC&K+{U-GBl7o!XLGwFI%gkar zL*7J_HoV0zzbj~z%wQ1J&&XS5#U(DWw4o2!E|!N?wi?cyL=xGU37LWk9RJXuK~PIH z@EKT5sIAP?W3}lpYX8tJd1(m-UU31Bm4FAY{VYA!8ZYbHzZwQ+F+p|@hy!z%hFnN89x8vaiCJEq95lX?xf zlY+~`bueWp;1}@}%Q)n}v@v<7zecBiWlBx~BnBs_XF1uEL6s+wl!*B`LxjX7J5V#Gl0O9DLUL|Ep+Pa9|%LWoUPHq!ZtioI-V(zZVc8xsS{>2Ak{mL5f` zW{4{{CZGntko`;vRek=8uxh)1kRNae1$j`GQvG!G91RfPgiNL7<&8O^jSL$+u?zDG zT-5<|?v&0CJ^pqlWomp?_GMk^Waz)tCoJ-i;@V$zj6Xr_3G#e#u)fJjFpAlUhry$Z zn`;j2lgw227~StIMjDD?<%%mkClTiYl!P|;#BkXlA@~qtTV3I`>iIaZ_8dw=Yi?2G z9W<}|W-oFW6R=Ayp16xty7{guX%Lij^G$J=t^GF)HEUHuVO+Cf(x zt%_Z=JCs)MVI#09`2OAUdc!NyM8DxrTVNozy}}XCddg+?jUVjRCpn?aX$BV-M!i%3 z4d4^t+M@A$(l&`SqviNf`*uWCfvQVc#TG+i8cu{pA%Tjw>Pwlq2$VcWqu&W6#~s;F z^2A>;bnR&p0a6=%xF#Orj^Mma@kGo=UE71(jLfQ~RE1iW80zhi01~b**VlUT4UhS| zvFc-?shDomKS^B6x|_wrV26UCYYdZtz@dz2W@avt0*zmoHok_sEF6zl@;M=M=HAf` zN+GS93|U|7;uB8pc5UNsIMfvU{_W-9Zo_2Zjzu#%wNIjXkbw6(n-%pv)iNT|*XJ2E z)UgFR<>zMDr5gBKHt1JGjn$oF-~-L(7nhx{fRxq{a{1c0Mj8NJy)|iTdE-?mkfwKQ zC}NW-ItVafw5I_&ZFm)kwfm^2W|ErU|L7+kRfybo%l4{fsd^?M{a=_V^C5qpNzh@u zN;UIvI96_bOx@+St<5?v24hu2&NvBJoxjIZ2%a5KB zI<8zvtG}2I9gqj1p$Maw@RGAy+~uz(Gm*TAUs_gGJFxz$fIq9JZSCgEyCR8Cda$dC zZeNBsnj%7&j%V;m)*Ood8q>5~eU-xGwfm8DwfNAnjLJ5P2=^a7>-eSeFzKZo2obP? zob)e2ndqD@aAWuY3Xx1K_Zu{@z8+)l&-pfOqlAU9VKG4ayyRz0j)3+^Qb*#)T=m)% zFlLfQ6O`VlGB0L0=IU}W`3NV;#cxb#uW(v!Z6|k@hw_~yu70m@z)NPy40GKuCxc1$hwX-;H^N;HTf<+(9g=He@et0e+Q!k2ZjHT98Q@w*!F7`r34=GeYj9t3bdJS z_17p3$=iDNa)*mShw-t%iAd!}lj7p35}V3nhafg;W!6Ckd&%`E!BGgw2OMt%M=VxB z^hHi_capw&X}wb-ZSI4goAv4D^MuTc5!rPUnR}jHXd-5HpPhsbgYpayNzh9)o|{l> zZlY|^2d3b_Yt8V;FiN{=!-C|08rzrcU*74^DSFAnslmfqIE5uJZG5U~I-O6^5_OCL zi?7uE|8(lw7BtX5kMwpExUggObMktYWpdTP!oD>k=l*3fasN{@c(8?DTgowK3U`jWh zaMig4ishV%@FuseJ4={a?uQAj1m0u-8C~FcUU$0hFZoIvHL7l<(o@NK7oJNxTiC zoPENt@ERgT2m5HiOqnrTX~No0nIrx?xSGGVJGn6l8*>r|Yw>tnJV-pDa=AEAG^B!b zo@S~hr!u_;Bm=2GkyW8Lq2o#6fFLpU8Or6JXdwt~l^Z&q=*PdqUdUj^VITf8@gl@=sa6G$`NMH zjK{C+CQ3Wax55?My2%xo7ml96Sz2m2aXj&AO3_QOTqSqv{t8RC^yN-m~Z%RZIS>m(r|-5RP;POA}oMP!^4I8m5| z>n2n+dY~>b5~R+eTJcg99rB!Y!QsHn`im>&DP?JCD%mC$2A@~FB97as!L0V8=8#jM z2NGl1$P7mJNNED0Oss=6xX-aTByX?@bV_NHt(UYi;iaG>Z;Xecj$zQoWFo9NAq!Mq zC8KW=;q-XSFSRyIm|-0z-6_+Ugbwq$M>M`2`Y53h-mcV8=zt9l89G?PrJpCsMj5wQ z{Z+$p(-ndgKKHJ4OkXm&*t%9I?;CX!%-v7WnA8!Y`jWSy+bXHUj{iloE$?Q)3&<<@hou7ydCfhnjws100h+%FT;M zZLyqK4K8sCkVS!1&(R$$X5JcTd8S9bBD2Mj38as~EkV^@TX~Ha;T6(=U({hHYoJ<@ ztXZ;*NVElPt%@WrCLtn@kfXKRGJ|! z5;QiyBP@*0*HgtZ7f*#&R{$*_i;AZwyZ@;mK0ol{mp|g;*8p&0LCQQiv37#5-Y`CY zf+0&83S|reC2N$LBXfzz8zt?MDq?LjY5~b5cM=*UJKxq^pdfT(LDyA~j*U?Ox=R_* z^*}C+T**>^6zq^FrT84Bn)VQafwYYv$x`+SAy%y8X;}*Fn|pa~Gd-Y+0=0p&jsvR+ zWn+&$Wa*bIcXdh8#2f`t3Mr=Xma(}1AX zN18xhCIg;M6Ve^e{n!L23t%o)RzEHr_+Euo-;DUf02{UbT+e1T&W1pDXDDqiRX|M> zj~N}TDO@R%h#^ub;-8!am3adyO;kQwZFS@_3jB)3uU4#S$7tCF1Lph6mm_$R->xSa z#~95HxX6DbOnAzbZj6VDrGoj{uvn2KY!j##jQ?z=#gS1d*LdAMETv=rrC7W_j8#~( zjBSG*{u{rrm=R6isKWLDv7Du*=hP;ds+Z(1ts1ThEi?G|VQ2Jni&9*WJh}7v2Pl#_ zNC8Q6^R+kOJ66=3k!B5IPfsFh3(=|i06o@3hwC$8bc}EsV{=Lwgy<~^N33pZrYF6t zJDk-goi!lV#c9n=XG(!Xln~mSMo>@4Kh0ylk4)M~Cdefo#syKXJ|@*}y#~?#r z)rm*`6ooR)qFR3nGL#%wrx*CZZoVFV`?W+|1Y=4YhqROhCJJ8-L^72XL76np;W!d| zygBD9@zZpY)PM=;!d&ACOVEuH#FlzYhUnfRuV8voTe+&1_Psv3gEXP}p-o^p*%rx* z`j*1sSF5#le3lX!isLq=b0w-qDg_C~a=4jGx6?eaQ%b_F%Eo*lfS+DIq)| z68|}k7nLg#jBM8Xnpc?K_)m^UJDGpxr3wK1Rrp03r5W$s_kxsR8u*oUx8HWYo&*E1 z(@DL$SYg6bIiIr*G<=qp5RvQmCamJ*Qfm(46nk{NTP!Xz;n5^NMG1Re+Q7kyl;J@m zbJeOJgET#Y?6#q#Hmqk{#R3`Gut@Fq8~(y5{LNcb?<0Tm2Y{;|LA8&Kk6y|8z4Rt{ zpCQl|2UU;*qPp8!h2|@ZpS{BkyMQ%~?bF7P>G|#I&?9$phn?XAz7wd(D#ZS#CMapo zzlfkWG6?vD#fA-+5R7QUrml*a@fOQ;2lQaB4H^VN^x;-0vhab-0#WTIe^o@@Uy5N#}mzaDLnM2oZ0;%!XS$I(mL{R5V+7vE4W10 zwfw1!IK~F^h-tCX)YRF$ZolYE__ss_+}uAo!zU>=o)dVPp)b|kl4Qt-3M`hBIkBgH zd?A{T`Y_Xw>~W1#E3|<>tl=j9blhR6O)ov%Lt;uhg{Uuf084-)Gd!eLl;jdMKLR)* z2-GlJwQ2U77qCutPZSbV!;{1heUDwu+oHUqd-DTa!HKkKVSHZ6O3mJJT#O- z2RYjGpEd1q3j%`)=GlJd3H0)lrJ%4VZhmiqWUqH~{CFgEU}pTwTo~f?uPEWMT>U&n zClY8NqwN#A2@OA9&2K-@5_vQkP;3})VB`_+7{^`w#*>FL5lNbPey<;ilLUp)lIV^1 z2&`s`qsrOQ5l42rE-;`@ijtHw!$j@go3^`I8`M=JJbz!YgV&Fp0I-xH`hM-U0Bxh# z-EoC$q_uqoa?Oj!FL>DL#d+&=)Q)_CRrPRxGx*p~3Jm?ZV0Q;J3V(%#B%7QRa?(|71j&BEAjSHaj%&zxrymn*2)o2XQ z94Je4SDTxVn>S=Ug^nPVY1fEUtZ34SlUom?J_+iJGk3W{8#bgrNkX`BA|rBbQdox) zQucyUqGM3M^40eEBWl*wVlMDV~ISVr3&n`oLJJGAhi4Ciwl|LFdq8hF5^pO1CVVdtn!c z+ubz(p}9U%nTHUQxn|yxQ9u(=-`4j_kkZf(nJ4H&9Mm zluyTiw?i2weZ7R~rgFb=kYqxtbn&G#LQv)zWgeJ_47e6;vUvBpwoK-iBvM%$#a0(} zcDOIZBo(h{Fi?smaNxhsb1gTB`uf*!#hpMMPLS7x6-QThS1_&j5Dut*(Xe&pGrKPf zoim)1T>yva&id^nW~%v9pPdRs7KwJ@;qaV3)CEqouV6Y9+RFUZ`L}ofe!kn<7YGSR zx6IS}$KmPz9d}26Jpns+QALlRjCh;eWDcMjN5%lV2>CkqP+9PwpPv6ws#OnOy8hED zTP`m`XAF+(riK;*dbwmH=?e8fT-$R7Kx=rF3?+vMYeE+T1)@oqkO4$VJvTp6L!G3u z2BR+TQrnMZq&_R880BZO?d^eqMKx7MT^Mf*J+UZO%D7NetZ#G_@#Y{Gb5&9p&;uEw zg&cc?{OBH903YAqA!;KnI($U#B(8a9kZE=EJooX9=9JVg?M27jCxH!oZAC@sIUUhn z%+!>KJG%qX3H`-Ma)`wQ-?v6VI$1!SzVH`nsPqS*)>-e|BGA$UGOH&^29Hf#5T@3) zCl3FsaE2t}DEO+VKOfYOy2VL$^qG`xUU-~+@7^>^aYd*bwpZoZW=Y$jWZX1br|L%t zs~=i>6b(ch+2!OuJQfU%iHv47JSbBNZ^EMOE^>e1J3(s9L**k8nZgu6)7phIKnCij za>o1j>ivD7i$oNGRiCNVRtKEP{e^Drt3fRuu3WCazmX?@ebSzvh3EmmPnzYAz3o8p z!QU}`Eionk*IkSpGa3quybOTAg8!4(|EMVBzk_wQGaG`ouaz>sclJI$`tQWE7A9cc zFw1fPl|eM4=F5k}9c}xVs=tUm)JUIn7nYu6(eZlY7)~A!+@hDxu8|5|V{~;FC9iAA z;z)=&g;n67Y63K)v@pB5e1cWwfKzx15V&}X4~JZ z0KoBXUH;eFpX(ik27%t=D1qho>Y)fssGu)-TSLf?d3qc&94!-t}maRsS?W9%TtSXFR|=G8Tq2!S?Xn0{tXlp6L@ z;Z+*zlvB_IU;C~Wu+<$+hmZ`4D-zCF!%Qmy3MBZ7`YF>L9R)pby!E9coFrwDL4w2y zcH`~x{K(O?eP%{w{BMuULZ8OzHB)TzoJ!I+vl-ciIVfcW2EMO)|FJ2cAyZUi-a6C^ zJmDa<(brIO>Qa4pZQKi;0Y0sTbCl6w%!kMFK)-IAv(a!U0!8)(fb!4ufcn6t;@No* z&L-UrAmcZDyaJFu-+Q|+D{cZTsB18=5$_|c%4ogMs!Av`wX7Rf>}i5C;2_FED)t1R!A(zq=1ABH3<)x| zpjVr{qrHDDxC1UT*1T`lZUKK96OY61@{)hnBX-{PF7AwKH7;1a`0;|q%74T0cmFGe ztJ&l;xh;fg?cP8*zThbyF|I0JylooNi~!j=T<9=FX;(sUj-H{N?!_7!;VREE2`Ph( zebm-M45Zi@6%8&wErNWWrbvjOD^7Sper|i)9RTGmD@KjyZEqyFWp zF?dJH%K?Pdoqf(e!=^aV${n||Jt;E%>1C4i9>Pb%;SBabt229xMsaCIj%P1yunp9=d10j@Uf!TWnP4WBik{^72WyQ+0%L-SHy3B?tYnV&-mQkl&XeWFRJlPyl& zVfwUJDsexP`DdYL*VR{T!#E|r%Ul2U+nb=Z=o7q`sl~f+FV~Wr6DBsMv$7R_ww%4Q zp}jZGR>{WI_16eFh+WuxAG0U6tMx+JDwmLXTfpl5RVI(?*k4Cni+B?V#o$O*`vCr_ zV{DwWr{j6Vrxx2y|IMk`!RuF~Dz{HOU*ulznY>H8vz+>UBKLdwVUoQYNn?dq$^ zP1QZlkb!1<+hA?iC24Xp-WAV{GJgHNH6AGvMe|Pi_(IT~7g-PVrJj`;Qn^Red^t4O zdTR4&VP3^em)`Pf-ls3S(!>xR=x}mkj&9*ja5HbFIbQ}dgr*m9rK@iD zhJ9Y%)QS(+2@XvOB^hsXzF9B-P{<{takwEEX`mv>13T|3#&?Riuo6B zs^2%)t9e0t?6cZpY8rr8vOu3&iR>&-fKZ1dma4ofmivpb$yRDN79*3o1|DgId6}&= zue*;=as!|#AS%GBzqjdH8NSZVLZpf3PXqWYkj}nC-TOG_?Tly?H3#Mx)XXy;?Q9x3 zd-`ae1n9oghJ#V)w|MKePfrhV8&wUE2)WNb0+<%$=D60n*~~c1AXSScN;z?~wF#>L zSMo8itIG2h3J89~_~J@IkDWRND%nC)z=$spHRNMn>6abLxE&`)q-u>{XrS+20-E?* z3W%GS#;@f-2}B4J(80K}_DToyQaHB>_cJY*0sldN3s$^Rna2yNn%5mV@B5n2kBG5< zaTDPH!qDzjo+$Ot=V>$ciP3g9`6DqRL8iuyHfN!nBt1lc^_1;(MUqB=TTcj2{3lZ^ zm9MUktvD=dL(R#k zsb}XId>GkMB9U%zHWWbpK9*-%|LM#juhQdY$LdV5-qPID2-}>Y>;jQ|?ZH?~4};3ocvvzp zzH0&0*0SR%Eoh2|R_eV561jDZb{h$j^B%P!u&5l9fo}mg>?E6@O+anuwYH!KE_v=5 zcq@@Eg@;o^C{FnkV8N8It67<|OeXs2@|<^}nu`Bv^Z}{xmY59>4e;p4#R~R`2@u$b zvdT!{K+m$vn$0dY+TAN&HB=LKtLt_lC=+$z$X5I4nH`z0~kIzpYdsYQ=}j5~A$~(G+-Lq60Iv&%+83*U5K0 z#uWsu%=@VGZf012V(+PrB&ei+O8wK1Qf!hQ+SnXRbfl-s$5RSVStWdH$XvkA5$_l&F8b2S6K!I~2np83miDxj8Rrxapz9j#&`Z^a={`dY@9 zx({s|e&zS5SkUk&Jm&=58aQ{?CB5U`)+W5ORP#)al@2A-X-Q}WNgseVS=Ry0V!@jS z5J82CcfRFBXWlq3Qvmp z1G4R=3;atc?_+%C7a|j)vn**~^9M_=mw6TYKx@a16N{AV>$@yBC%xhOGbQMRl5zP| zFnPr9|GpcqEr+lkEM`m+_*7$))$b@w@+ zrzk4Ezl;(4xI>cQ))Ao;^iGS&`5@@W*sHlLjq(6^N(4)+`-^R62JA8HSy)o2eaw9P zicf`v?lRCFeuDt%*KvqY%x{kE@&e6ip{f0CF!0(xMJ*~Dk+|?+;*4tE4ct`SK^M$wgN}tiQ-u1+q`4V2z~` z@-5qRPo>xCy7A4f-gItp$`7_w=4sqGk`lDtb>qvjLxuE?J2*oMWE!TH_EA_AF1Ij8 z!=ZleLk$2xI~{u5M8QI0XZkrv`!C&K4%sml zn;(;b6f{B!5XTGaB!wiSFY)*eJkL0qH22Z{M1K_qVca=*R!<_eBh!W3qoYS+3~92 zR~x6TO=9h*&4>~ftxaIPwBWjW7+b1Q9#Uy;(_7`ut=nekM9=eXc$y_aBmS1Hs_W#@ zQF5Rb^M=c^hN8>MzRqRbkKW5wDb~G88HHeVbSrqhDgK!2?I{^r4Rtx3A;%hqOVIk2 zFK)B^)6b|#o0Vtb;?Ky(i7DMg-&;Pi(oklyW)3|qzp08T*Wz>yF@G|a8cOcF`Lk&F z(rqW<7GH^^hkgAt=`>Eg)JcqgHSvLPx;o?5z3IFeze>n3UdSA^H#-Yo@`D;gY5tCZ z7SQ8I$B_V-2O~u0eWL~qyiJ72iPpOar zO2aQ}5w42JL5~r*q2-T*Xd~wkqVCQTg*xL$<{u0j70uOf!_0NG-K38*oXZV9JgqXU zkk%j}cB+bL`jAOS^woxo$it<5nVCqcemue`0z2rP^(BvmIcyeIo5w6IGn3td-Cyjvz$ zMP+=@)GNb^@KC?0;}AjJZH;;>K9qGg16wr8C^vymYL2V>5O;o0At+*?r z-xRA13lArf$yxmQU`-Evq*yGsv59gRWWTHi4}X?`3+MbjN#%gPll4>Q{kihZEJojMzDlff}mRqA}LM+G$nxF6C2sL!5ien~zV z(ExNE_R?9hM1kJ7##H)eYP~*Pc=z}gTx315ufRC!%kg5h15x))8SgJ=bbCbx!u?KZ zn4e=4<7wR9*(w{*^n+{O|G&ZL2z6^}u<%bcpemLY4^KsTmwu6!X%(&+cg z3_Zh$u#;u-L)kglE3Uu4bcvIY8eWHi|uttB*<5{D`)-ejNF5~iOHg`_k_Rh zpna7Ut?l#DS%r!rUn zzZL+I;o4@q^n}R=0PoMaXNb-d)hXQf#vINR;P~rBI5 zC00cq*yo4D?jx6WeNsx;Y4=Q%@PwszjXV@GJ!8SpD z!$bJBCi+GxJP#Kk1{p&0ehAPqeZ1nk8P=qcQ&oSw#~nlvO~~`fOvI@DM%bU)x^{+? zSS7SVSHnVQ9u2R!cXXeawn^^Nnpgc1U$!neYFY3p{L5i#x8@zOiqQg1zWTP^NTi7f zq$G-GOI8B0v!v`)fl-yf3VcD;!4hUm9D!|2GNG3>U3Wa7#hQZTW;cy`&eJ270k1U~ zpXG!DLQV=-U<+fD5-sQ;+o2rbo=L$nnyw(9d?%{I?zz2ZhSfmubH{MiL#v=1Gzchg zBHMB}q-boj%KoDPB9sxjWlkwbrQH0!-3L8*)At5Q}|sT=3sj1I;pEnFklZj+AN2e2pbXI4<*cpZ1PB ztjW|$dmmmllk^-VRcw)(KwN-pD)e5n^4z#}-7(Maid>VchuwM<^>mQBT1MS6e8#T| zB{8B$LasqF8;<@=E3(O-yPY4BKSPL^M>GNc$~v#jRCdEAEJNSh9rIVRJP$j$+?nE& z2l|EyF-S_VYXZY``>#i8D9mmCDFSgKqizi%Xf@Af8%w}A>*W~74)@;=u;MaCb>rYX zAn@15zznjelpI_~i3^CakDPO{`JPRIU1hl^j_#IV5p5kJktG_n$bJQ%g&ax?VLWtDn5AeO?D|obAUos9@<2KwoBe?k(%)*5}NqcRs z*|hT6r-l)%?I)S?ScfqZJpO>$aVTPrR9KEsQ{nwSGXYUFP~O9|3Y^N!eZz$#?A^_b z>w{56sH*m-b$js_Y7`QRHg2!q+kx0AbK|B48HQ8R&Y-Jcb@i$pleiwJD1)Q)A)BgB z*D7;F=Va13LL(805!T=IWYhrrRd0Z-9>Oo#!BR@!tQTf9HoL2LYgm*eo|;oU0hB zS?TA^TzdS!yH-a6mS&xYvpBw=EaT{dJH4(He?~mGhdsq%)My5nEu&z8JUg1WN>iZP zzRlpc~$0Q6S769!Dd>DXV7`61fIg(*Bm&L zkM^2L0d>Q@tfI$)S*#zM$?=&0oOXM#voq{$2*)| zh#1h`P0%`cD870(C^VH8yNzxK7;jY0&vU_>;#(w z$~Lly2TJ|QL?SX8ph1?I6YkyGZ^kv-da@`@EzT*nmYMmpR|LZpQ3ESNA@PWt-4;;cfGJ?#%Ho8F+s3oo^wMxPsFs&;FEd{a*5&ZCiW8*d_wNqM9;(|L*@ z^4eJvWZ|2Le>rFx`t`DBDECU(;?b9w6LQSa$ys#v31L&b=g1ALnv{61hWW?p>sm#I zVEb60;DxhVFy??c!jLsl@Xu2^c4c!29RsO^{NebK6<3IUKs5{6^O!euN7>F&DV$lb z0n_1AH($pvLkQA&8moQwIa6ezomaOkbBA1KUW^uPtm5TK7YvwL_>l3qo%;%&g3Ct7 z(5jtmRFU_=HZue*NZc@Ce_eQiCuKgkht*mz-szQU1Qlsdj`AQybT%S-BukAWERJPe z7HTbu@yn*8eA7YerV=T9PW%#OAhp9`SuW&*$5^Y!%-F~KA<<0uo|bgFYx#}AdEKJ` zun##4frCqBY-nlj@z$)@E8~DG<18Ut1)w>T^}xECj4#CL&?N^r(6vdKqByZbAQ<(O zavhXpNF8++E62jDZ#?Jn!MdtNmLT|SdYc#V5FSo1!S|f27E^X4k9 zl^1$dS&o@>cF|OS0`(V+{1cA^#t3DJm~*sBET284`BW|K=Wych{VV-0Kwz5#mcd5* zv{TJRu(zbhT96@tlKhPl*5bBNRixH$aGUHA$M`GdaJ0oRNXP4oa-P3_UmmV^wZ|I5 z3_k*8X0hbGSEf;}v9NvxkRF2YjIyGqNWO_Oymr5YM;cegtXp#&r;u&$7w;a(B&$B3PFm7N-S|`;3UvZVp+|v3T7XNO8)a5Zs?5G1i6y zqh`I&f{|>xhE@FYqz){5!z2sN@8e#N9niPX*L*tBu2sdU9e!Qr0vcg^{ftAu{laf- zfETU(v%|$B+Sp|v$Lqi=dZf9)$3bf33n}mybqLtZ`hL6$D$BULS8X>oKip*V0wO_1 z&7AVt0R!lA?FSE%A7(VYlt{n@DmvLL&7wmNNdUCm(zrYoLdL1CjZ@!GqQKS^%MgYW zqf0YgP~ewJ#Y$%lAAytRg1P=(?Jx2jbDyp%D?A5b+r)#Bn8yHGBKQnM@0g?Xk0dyZ z3HZaub_@uWI0(b@W$!y@Wdb5Rz~J?tL2*G{El)r}wNqG4Y-96-zrF4CcmplWJQYpo z3O&21E@f%X1Y?anO@O?pvA2uqV_8!crqC*|FBYqs5cX3U;Q<#>*PE+l6QxYWmaz~V z?}jaCnGH`JX-Sm<6eydU=Qfr90ofNAk=E=c;- zDbG7Pxj0FgBa*4r{Fob&+})0|V-d4a{g|T+_r|9Hw@cAd+z!<}b4++n=&hMeZ@8KK zCg%7V>g7-2r2O315H-Z3SfXK)Xplb*a}UA1v^CQDKf9YkNUi6mm*g?cMA;a72XlI1 zZN}iI1kB}s0n_+-1%JvrGg87$U=q>W1ISpii0Q>g?~HK`*yA2eId6WK(6IIWl~mki z$i3aHQ`}>100c(3&%@BA7&{POZHxibwXFIg#R;OIE>>jm3GsjxnedukrZRh}ojft0 zPRTk?X**PQrqe7do_d#_T&nt{$#Pf9q?|1?P-x>$sa;MG$zr7T5vN0OLu!c!JiMY| zEg!~H-=QcE4DcuJG8i}ugPIutk4QPCevyI`qU@ZUv^&SfQ^0r8lnKzXtX;++&V3>o zfsu};BV2V`gnEn568k-K)(6v2s^!+qY6EI<>EUo;Bjp+YTfd?*TuYV6X8XdCFKyj+ zG@tZOSP(i!;5;|D%$YthUj0*Kn*pJnvD5xi3tmJcN1J(_opXK0)lPW+f4?UAaV)Yk z>$faOOMhHv9T-39m0)}d|5``^BR2coCvQ{lWOlA>Z`OVRZ&TdWDh}f@R>15lE4DwA z8l3rTlEbB>kB#&mXPGa52;Ye57f6;BR8FPye*5M50aF?_>+Hs}TDw@I zKf+>XYFgIfGB*+Z723o%s9Vr$`&Rc&lkz6p$Li>PaQSA(zNP)YD~RA3niNk$!@3hp zBE8GpzorS;w;yoaP3Law&RQJ4+)V*y8`4|Q7Qw9!Q)Z!;JJoXPDx$$%+BT3;;X;mV zdozCh`+M&%OeXBKM)q3kJK8Bwb1CNVN*S5qW?teOx9>VGwQlOPc7Hb((;c!&Xr4xA zuuCYJeP;qZIUG3kNR?bTTo${>ZqETv-Tywz9iEEbG@Ajg=&Y#FJY4oU!|{6Ul8_Z} z(&z|mzQkat*Y3iujk>1YdDpJam~Wn8e*T9ecUuoTiqiEkT(eDihnYxzMUecS0^-xZ z!rr4$pOUW63fv-d^$S$=UPY48)`Gnwe`a&5guth}uu~Ah)^;IG6GYGh21QasV9dv% zDc0nefKUxA3c;aIGeYxt3D7Sc2Z1Iz+&3X>w28(`nSO2EbFR;JEbfcubo%TR9Ia;O z`vA7~`lIWEczlDWl8>LVmDmba-mLL;hBGrmU~Qu8W0SNzxXE73%+cXq2`%be5HKM& z97=RwrK^D5(j;ZQ5t%(a&SCt|kQ=Cn@in2std-@J7*p$VjFip8Vy+@K4R#_tuZ0J1 zMVo@SxjwoRdGme$9Qr)=$Pyi|pLQg7{6LaqXw&;5G|nZSR@pGnI-WN?lohg@c7jYz zt+gN$qBKm({6q-`hjFv6zW}UXS0mirkl^MuA8EOy0G{e-VHJ@(-| z3u7tSZ(~_gEh?kTeJG#Jxbi56$+&H~AVZdQ9k_T(K|TdRZ?~y3j_i(Qp8A5TZ@S>E>wSVZOrL^B}?f{B?pE5Cb=v&&TvpB zl$f_-vxbB{$6o%DYMY`&M)`DJ4H4%wGk!vicq>eN1ml2zu!jx{4s!`boR{u~cnSvB z{|xx^$3@UvpxUwHr-I_sa^Occ#KFcdh%``)3WXCYiY>F&GQ(tn4k?lY42Kr$w^^Kp ziNAZlvwUWB&Wlwdzueoz{UJVHv*s#(tKuvr^Yp{SBHLx6 z+n2FIk+U&_WP%TjyvfJBMKE6Y(*$b~ieiJ7$G71c$>6YK<`i<)!DAvnT>~M?NRLq! zYZS97#M)@-EwTUe^m@)rQEDvjT37A^Gixb#-cdH$2C;Jnc9h zqDW#d_mFWmiB%UtJ)PP2@BwFlG!mzNKYzdGy`*Aa4@$Yeu>xyFe2xmmObK~!CzSRn zwg|q*$}*&<2adUh0nas%84FOt1at-%iBV(3zUTxH#=l!KA+2=_&_N))J|?d}7A~g# z8bl%q4?;Wdjq(1FVjVHJmHzT%$MW2JgO@CQt3SR%&yQTzbFx(<+dcZ(+%FeaBjNZh zV%B;m!O+)X28(=ne}_|k5`b9LuxLp?zkMFb5Oo|U5FLJ;*s0D70h5R6+Myz!$raT) zVZZs#!t>?KXd-(30WZ%^0farBiZUugdlcfZ1R7&8KyY)HxJlVF=YhE>&*4KbkD@P< z(&an2g9W%vh!=5{Z1)u&>b!FQ>R7B~bfosL^Zr_RD6^gnIISy3)}T#EJ27iW4?Qdy zPZ=Ic4)Grj7Zq@*23l3LHoTbX?$uJB*XA$^vI1PyaqA%{Em?*rwY3o)7v-it`$L2+ zLyJc=Z*5Pv_uPghy2gPQ(>rRP^mgJm%lGPX7tOjJrQzD#4{OQCj*58H^9DKGC-{1i zFfb?~RFmr&4w27#7e{nBhB)q-It(HKDriC;2!azDpDbpS)v8HHyJHgy{rD>aKb%f| z7D<3*!>f0q67diLv~jT~Dy?NDGh99b^Y2btLsslbozL3C&|I4&V#|jHslzuAsSUAI zcU=R~k!f@qP1L{rR8JHVR>=>_)_&VXtm#G^1}tql+c%}@;m8gc1kj)g542#Cadu=c z;vJxv+9(vbX`T7sM~YR~a@Q8x_|{Z0AK~f>d)xYOyZg{$CHr732_*(I&Eh>GhtIzv zQR)P;wn%WS(Qi{jzWa>!N+^H5Pf5b~QAa2D@o;?0Thv)0hV)^r+qCa%R_a@6+`;el zVEZSjs|27T74%0_w4_s*L;9vF9Zqr2Bt;=_@CwTM`3Iv#A3jp6F3)dGRW#RJ zhryIk>(R>6Y!JgFqc99q6x55zTx#cE1AFPY0tV*e)A0pl{7VOu=-$?V>g^|Vz5Ti zI=g%sZR7RTnWnVehO63@+J;sk^&!k!3ENt4(G&*Um=JG9kEYmSVs}htOfh!ZZ%wh4 zKI2<1WQtMyn~}NCr3>CxW(r|VGh8?;nraM}CL9J5mWP*S?k{GDFQ)8Nzzz9iK*^j1 z3Zq*#QnFd@ldnd$8ft;PH1@fZ!JFQ6{f)2#VLp)U*9t^G{O(>+mC|S7C{_)#xZ;8sGGTue zA8jTYw_o0qU`(NY32blKt`pf~%{+p}e_))%okqNU6C&#KhFKJ5WW0l{U!T2UBi+iZ zrV>ajR#A-^`#~vGz)d}hEAcX@@v3aEC(1(5v^g(cA;vJTf;F94?+G|O?*vOVoZ^9O zs>izh&&l6Xg&4a+}z$VqjJ{(W&>~{RY`2J8#$F(1Z0*v zoOxcL4+V1Fj}OG>G;9&hrL$>$gdhjlai;S~Q>GCwi?kvi#ta6`;*2kj^^Iuz{Rd33 zXcI{yel6CxQuf0YRS|Q{_3q%)YT@J@#^+9G^$K3`1m*fWWv{K4c2F;XWW(L+n)+|Q?xd@M+nFZLhs&LjH-JAp*3my8^hSfnxOUg)YvQwT zV2g2SEo}%#CPVDU-WJ80*6RH>Z7U)T%maj-mG1DcG+bPYn!r&yboCr=C)&_<{vQ8y zHTP@^Ma_(00_IhC=0tQK>BRF@ab95=?Sb~{X#NDwbZJH7NOlZXDf&05{Q&&C91(Bw za?|zh1R1cy=@Ey$y;vfry`T|@q@B!@N`Igh+aLV*VB}h8JtbS(m)jC>3lAdV`8Scp zSMx{M|IiX}3AgwM1QwJ4-pVnbK7D%sPA!RHY-HUMt09WBz`yvLAAM6X@I|~ol}?AL zVUbe)D-wQ_AC=0S@4@*sx(V6FUa!mcl3eYhHrKuAP%2qt{-Ri9oUy+)3#YL&+0&xa z@iMz^`*K)3y8fs10FT92o08Z?o8x7pS;6qXWWU)HENazx=u~kw?`?r)WPqN6XNqO2 z%s+$CEZ}7zq6}lv(P-WeqaY?}Wh$Er0UWx=M0Gg$WWUAU?=q4)#^799G8|DpkUKYQ z-`w^Kx;_~Z4Y>`H4+2P{XEj;c9NB-dHt^5=7mhv`(H+8s2kF9jbYf`20D1`RF`yI| z?SvhBY%8QA<>$d<+EdzHKcPxynp~pqtI_@?k$%Y}QnI4kHR0!_5UxUmgFZ*@#w4j` z#Z4rB)TTkP6spP8aP03V6G88WVc*0NN;7`Lymxw~O{a(N@6AzkJug(ffBVUJQzlo- z%#E3CoQ3LA{1Y6JstBuO1S#d_R^ESN*wD}Y7F>^&aqszZ6Ppc-KW@2BuBy-X$s)j1 zJ-w5NyHl13hG6E)lk~P7dx*@4P2N+HB{XERNp0YVgg&7v45R``hOEa93qjUDUr<+0 znPHic1!MT9vP#b4Wwz`GB%@Y72ONGkcDV=qJD<=Rk86po2z*@mKE=A?v>)`Uu#eM4 zqVcDqNL|mq>Yr`K4ewT-TB4YpAz&%0bs#}($m=ej(81ri%C0l2nY z@LJoUK9_dTbIMgYUMUl?4Sy1MAMY}Y=lqt}0_U0KrlzQ3eG+49o_7|hs;|-uMLu(u z=2x*Liyzu7;8ejp^f-Ushl-1CVonm$*^A7G=Ps8%5RiXb0IU>I5)kTk;wR6)!5C5j zXl2M`!=tyh{n&+QugNz;XMi$!cKh{X-N(U~4t;oYeBtY`MQX$IptC3{rLg44ASj5C z70V9Ardaw@XFP@_a@aIQD;t6XJIzySGHhyW!s6PscwIRL?X-5_8TI75VStqCJ+pij z$53Q3?CVRV1rK3Z`0fQw5c=Lwttm=`G>sd0Sb)6%l^>@>A%) zL`4W_j-TJOG4!M0?RSZH8${62R?eEwXBC%i50E%>(yGRl3ls_Rr z6sRb0&{_p9b;QhD#Jet^q!d6wVkkfdnU%@9Fr;L((qSM#)XzNskn<`XEVMR>Jao)R z$_C0bF5G@g%=;ulrw}Btlp}w3)p>QPPueKla3TJ(6=VM2`1{1~0@-L*B|7CYd7gny2-ALn!mDQ2nG@s<4zC2Tx|auHC3BJvHrt z%dPQC#)wHW7vzQmx@%Ue?1h0n8F(NT)A;>6^3?&)zb8+gIQ;#=^ax-B|NDFr$UC}7 z)ML4$KIZcG*^iHx^hFQ`R!g5X4k)7POJ z{e)$+0JtDyTWrMN2fBxM1QOUEI5jTfd-SBlWGa1NUl5YbY$%?D(SiMaBB7mcwJ_QL*8+?r@qKyJ^MfAd z{RY_&&wsh-o+ipyNHC84E8zPx^7o)}3f_$Pcfs>o{nCjU!H^#?r zwI{&BX|7a*igYZJfTH7Yr!d6oBCkyA^{J3O5^Joe`fi84XO^l3+r`HAqVA|);>qay zQ{WUE}82Q^1NZB0cS41I&C^Hy>7lFEt23z+1 zaWPW{r~x#np86!W=aexcc)pq`g{FBxg;#x34;nxgh|$EiMc+G@q61uq0#JUjPojQE zn966(AFJQ95!5qY<=qaTs}=orIZvX7S&m|XT;twa7|SJ8Qco+mJOtkV>KLRNlQ6E~ zQFUg!Xz=wP*{XFwMh`Xb4fMUWx0m_@v{pa71N7S_Q&uSoZ@vOinDo0q9pXzOJyMPo9Zqw z=L{eY)31B#&-a}J-J zIX=7v3e4}lly}_d5Y?uZOBS1@7WP@c*5@em8?lV}bPSyW{|J z>ntyqfD}bsOCay~6HPGa-_}?<=f}c-*G}OTpak58p40e{Sk)v34FIBH0V1w!E?-uA z#1i+ulQ54wdsToOERS}7_LN~3-Mu`YDX#Ihr8XQO`kL#*8=(k*^q>y>vk|j6 zh<3{lye4_=ge_ze=0dlxkM459{!ZaUz?_aythJ~D>}PvoPon81wumC0Iy@qAXg2d~ zlPl8arQ2?*A89H5zM%XT>*K{7A&0MLkkM~OA-?!8WOE|YE?woV5-J~dk}Z(HO6OKZ zOJzGll(4}$lHRO0z``y|R=9nWQV)wZ-v61XU=2KWxo<)agPjiqPdhL% zH!9*aMb5Wi*^vQ*T4QvP?4a1=?eH1seTS68y&|ubXdwu&#e7V56LJhTUd$aJt=sSd zTTajtQIfnHElY~TCR!E#gF)7v!fURB$QOa8Areg{!pQ;+FC-{3huh5-Q6CuBgtU36 z5#hF}nl5?zgOQGRk>1;h;5g;*L_B6`TDd^c5oG_0%f|kdZWce1s;l>8n|7Q{zE<`pUAG8+fV^LKz*R>?<`{#W ze8PRxL?g4Ny@cJ)k_aHN&d2>kTQM|zVrvskss-(pcHy5~5nAK!=enzFhAb+E}N zFprCkLdQb{%{-{SrkB%EU<*--e(%s|z$e4ras8 zPV`$GKiJ;yC*aIO0;%cr^yJrpiO0lt*y{hRHIjxz9WseRc!M?}vfQG4Ro9v_TNjq? zx#l_k4s#=lL!Jnew+=grLARQ`1A>Np$Gn0MIizy50u@Utzb)g!)h1ow#I0;S&`-~& zNAfO2a*p$osy;j@+Uw4=y=%EZF2J)HAcpz2KNYf$`B!Gi>%}p~J0|Sf0nVq`7 zou0zGJ2O)C&`)AEX^a>*wK*m>Um3=~O?~ylBp|Pav9lzzd2|3C(cXWqC}eog$$t{V zZ2t`2$qV1;cx`m=0dQhL$U(=-ZU?&%gV&`3zKTd9TwjnC|5r%}uVq(;%-6X&MIf8} zLBl;JF;_|_ab!+bx~_Db5=EdK7m~`K>a+Nm=)j%>@_JwRiLeZjaq)%&R+RZRXcaWk z7=Pq27Rh+f}CTZ7SlJgM9M@4nx1 zj+SxT-hfbM0O{3HxaPxb!z;F&1g9VqikK&ap1}iCYmDa{5 zwzh~$);Dt*IgouIQ}o$pqQqR6@5^b<7Z_}Om@JvKXvdH8TslH#tNa$7WJ?)xn`Q;0 zxLHDcJQf;67l|E8I{=5k*kYrA5hvR&OR^kj6%T8+6tW{fBExAOW`U;*zxorj2vhS+ zjwZnHJ_jinaTGWR*%RvJHG~x|Mt}GrB(&Psgmf^_3JIQQXP&8qU|Iy6+1e;Q)m}v!g_w-{4sIBz_5gH6k6d0cd}Qg>;FK%k z@#GC7CF2B6(w&F?tkJyroGgv?o*Ap-zkA z6t|bZjX2V6BC!8JnH7j2)if~a@NSGKFURdexg@5|Y;Q}?yqA5^30DkM?nF2tsPWyc zZM~4dn&7|jLE*>`Wa{(54c`u216W z30@hzU4E+71=MjafC=VZ>bbJ{fVDy3@Y57Bu7V5YPL88aDmguSjL_3j`0bAX)`}k9DGczjJmGy?|0>~ z#j_Dq7iE`J!ulSfN0^Z>*VlCK;G9Wj*7#A@v^t3P_U7vE8K#!gC+?57V$Ut$q>98YZZ*Jwj9swi{;ll||UZz-@wW1sJMSD~=tfxP9wDj1(hGE=odf;Hp?i_efp zxBCa*kQWClXD8v)zedKNAmhMJ*cnc8RkNQ~+DkT*C^%;i;qIm0?Z3 zVc!e}j2=C@rD24GbeDu8-JyblfOOaB7Nn#RP(WHb1_;tAQUU{{k?wqN{?GBe@B7Ka zZyWdS>pIV09?49ty;6wUg3q!<68Z~{2H%*Ktt6`IKJZNJU^mUO$&YI_a*BB_-#;=I zaQc&g<$)A@qo6c(&CrSRJ6wtI-)S`S@UtJ*nG(YNl_O`a;-tj6>rmb1f zi4nn|Sa_06ngD?It;FwIZ$ZZM)PH7%Db2k<=~tL*yv}+O8gO&Fx)oJoQ81ezwN&B^ zhS64S<1dCkeWU^05)=f8;4gNvWj7dDI$kiOScC_0Y^*hH4_OfsC<^e72=4tkF>K@oKjoC`uF>dJNM0WZ}(MoO-xi8Zp}O$MC@6vPWc06Nqe1S_x%rW%x+tJ z?aWNDOXBNfLpIKMSJkG^-ro9NMo+mdXr51OKXw#;c{IHlaqrH}J zDbZW0Ulz-67@<`?CC$N9&9w_t4i5R_tQo-!Dg>phck0j+tHT|)&o0HAeKfh{4*3mo zKAmIT76xe}J!qR(M>=XX{F_{>7=A=j<^(=@EXr=*+12BA>VE#WjnuCxU$s-yAO3gm zYo!#O$z*eUMaP=7@pMkXaJxuwyXSx?C&kWEu3w)$l?aXc(cUGKq2sHjNs5g0o#Kx~ z{g(2PIY_4in?xGh;>Mq|p&XRa1v@~t%TY+{*zi;w%EI7zr8*^7js;RVBjtISoZtO>-gy(H`?s$)nxBe|I=-K^virJ zw^90_r%*$)=?~O{agBS%1B*5#zG98mYt&b_j)8^8ch{_QZ(^d{jv9!pK6Kx0UsSAy zu_&$ztn;Dam`{^^ka8=rB61N!7kiSZuaofXX^fDHTB2^aKAyu891#muWr}*;vfWBB z)ulB@45lUsUhWQ0Jk&ey@Q!;Fanj%eIdSsN_nA&heR#!)!L8+JhE`5Q3%D&ib17P$ ziH;`uxSc`hnCG^&h4tLKs=^IwrVuWkpdt4eE zXCPL5QTyM&B3HHJ=(3$}jmGxeV~5uR>cbg~4(4FK0W7s{zbzc=%&t;wI z&sJNUqK9smZR?XK; zS3JH;nJ3p?)B=7SL>s$-l0W}|vu#WQ2J2nU5fF> z!}^oKQ{9O~+sYO9V&cHq^CYLX?3on>Dg&7CZ!i`8oL1?zOD1T;pJ8$o;Q(&}1d2Xx zmpws+3BlM>7XaQ6j$Va;hZBn&+Gk5!gNn@L z^0Xj^^|q2%3-+Z62cP#dQijfZ^(gA1lN3Hvj}w1ODfwyt7D!6DJ~xFY&<21 zh(f^Q{aQaI3Nk=tRO=a zPRw97!`1eKNwzw>L&`tb#kL_@ccTiWy=ADl7ER>=JQXyGsgny13~xpcR}VypGs4*G z7g%0r3ju(690{^)O#TC*jOY{(lQ*;2-w4Jr8E_ui&2jGiXCQ_m7pQ-S8@GD7wC5AE zD33ji;(*pqunouMQhMep;ND29*>MY^Tc{@j=CH2k zbmIQnKL3V^zI^|7j!)tr49dccU)5nQbXCT$`im`h*WNdl+kDrki{MBeQ`4{`i(z3= zPN~w41|AXwT}}y**yvZhBY1QE*#g*#C2_aGt)}_}VAJU$Al9n3PgO^&W^1x!5~%1_ z0D|^>l77lHU2*+ua0IB3c$w2ln2G-b)21WWF{+u1H*gstma*+6rLDa z_b5~+1`o4Z^N~*-$3hOF-m6GP!mtyy2M|iZQdQRx|LCKc*&9r901W}V+kUnn2u3~( z^+5XEYU{-HeuvC05RX!_+#QkjPeKxxXRu(WqNT!tj-1HyB^^+)Fizb3D+;1;@LZ)B z5G;s{V8L^&!l({+;M6DV0a8h0WdSC%-WQ8x2|thi1vL4Q`(Mr0-0Z(`WW>j)!47Ld zWuH?}MAcvO&5vDF+eDw~?O;nr%Q{196sp$dQ%N)NLFwm=l6A5t>4JR%j_A1{c+&q6 zE@RLGN$Jqv+*{gh#ED~}J_$jl9r?s)YF4_sq{9Fq{jf5nt^u-A4(`dBYMZZ3O&Rq5 zC(oLJdhv@tH6O_(QN*`QWK0@|UIlM#-^8JPbm9SFMJbZ@SRXp~=k~w9d4i7_Rh%Uu z&2fP@aCg0@EV19H*Gcarl(GAcL-r8@FTlsRp*c+A-A%Xui|8!-nJS98*Ol3LWfPyA z0%!Qy-tByQG;S5~qMeH&&imbk1&@Uq(RvMc?7TBRo&OJMrCZMP)o-3M#jh>A3jZvd zp9j{VTnQ_KL_xUWD5Sqfp~Qan!cG&$SIZ0$8e9_1Cq3WAlxzgr&t&HuQe25ctQ)bG z_M@282$hzFZOzsL3;S4Z0Z18i3UxL$kjhsq0I>ik1xSH|06`TDa3o`~R6<9}A&XTg za*>}JpU(T)bH`FRb$uk1npP{`Cfi%<@n*)%^XpT5ByE&sjO}pZ89xR0SX28JlD&B5 zle{)s^z0Yulb$-mq?^^=_6aeaP?WB(HL5d`Yb~Z1job! zmR8?w@_Q;hy9V6{SCQV-Cdrd#u|2uK>tYE+MyNEiLlE@A@hQYU_~4*DNJ>D=wz>A% z!x)MK7Flr9rGDaO7sXQK*#;yk()t7ymKjv?nQ?-BrCy3FDJ~B92pgBzeZ>z}agIFk z=Cd~rkum$IU$i#bv&Rxg+qam0z*|z+akq|LSMP2ndYB+}6~r8h&Q)&uy?z=WGu+BFR-3&q1@60LJs{3Vlg_1j_CV8^XHOG6KP|PPbCUnJL3|-WA6NZc zAHKqMs+&pW2dKp07wLoKnpMyT3fTe!KKnW(F9I4vozs^j>X^KPFITtuNl+U z5{=?&PQyY8dfm?cg#teb&4wlIcwMu!u^x@oYqNpC{l*1~P+;cfPj{)cZSv5%6SHrx zp(Vj)IiQ@WP>LsKqMKzBjw{GwVq!(RAeC!>z<&22NYaXwr1m|!WWrx`ASR*mYp5zV zHB~T>@tF9)pE$LSyAB;tTKIL&5}W&<>QQ)hA#k$zs*_$;DlY-9&sa!bxK8@>8fr&T zd78wf8vI8-KSWvyx?Ug+&^}0T6NL3!tx@f5edm$bgEyHRYou0eQp(6RghxVp(Vbb4 zJsod@ne66%X*q#t8+bp}$_H(_ob)Z%U4D+csH@cfR%Eh& zHmDg%LWnGWs9V7^fS4w61GGdB3_+hMrte-8`)vL27Lh@@q1*$pRFdNpy*`rtiAX%C z{DC6r7yGN+W5syeJMcu18L5Nvra%k^;Pk-0k{-tCfV~V6{k1`BqP*=+k_LX|6(O4y zBHU&3A5pS~dTW2i4Xbm#mu%dQq9WW|9uq#X`kSoN`JJE&OIfI2Ye|2IpbY;3*yiy*{`xxFGg8cPWcPsO4MgGHF zwAXPTKyiICsm;$RZS7*k`jEM%K~J=!<@8ue!xBBBfHtnnP=`iI;0tWNUg^%-XGWD! z;E_&hqVo7LkDBw1&-XaYbOTaRx+O>4a`U$O`S##FubX~K`}2kRqDrTBmuI>=anxEW zbWKFVH}k7X*B#y$(!yJBNxha>?)~DWZ#HW)Eralo(DAuBtxXN9jK)JTpG%@eUHU!Rv)7DN!SH_ zSZqQgA+j7oBqWx)I8dPyr4!XH~~^MN$sLk?n` zBaM!QwO(PVn=$(sKKALvFC1})!TlN+IG|C`J`(rxoiDx(`rnLA&I8gPALW%vG!iU= zNby1Kizop-QtkL>V}Mx2ZB8BEiL)$J<_rj{aK~P4i18j9 z7bhZ7<1c#k9S*~%!g3>6>PCh~$ffLK4~2O#o7(GPBl5EV#Wr0q*RB6fWxDf>acy&) z?#x+3TxpiUYuZxg(2zL9&OhBw5Lwc843a?fk1W7lt!O#4{HquCzj9lo7jb|svlInF zE?O~lGKm}Zi-_?1-!m(u0ty~f(8n#s0!}w0CPvTS!-Abw_phFv*M`^QZ?z{!suw-u zF{);eczu5?KIb_7&3=-v?9{~Z^6{Kgt{H$yt4vBETlRhQ17H+xb+DYoqVnEO zPTPIWa0z-4i-}cPzN#c1i}{{~8?j-9;*7ESk#8)>^4RLD_56YmSxV`2u7AbO#J2_+ zL&372YCjp&CyBBKhTG5Y*iU9i`BPfK>!1}Cxr>NhNc_JPhswYGFFlM?&5ruM@U>#H zaZlN^Pbe~LVAZgq5ls(Qfr_*iz7D>W;vkZo4$bRpam0m81GLWpCKyOw(1o-DvdfdBBiRm#_86Zlt?2`C2^zGG1 z_>&nsXgyizUP;P{5c*u%y82)Bz6rJSoy<2J~^u=#AON3yRm z!;eb}MsU#5(KGT*$5X0=!7~u&l_-}5kT*R_B6#^O|OZ34_3s_{p!C14NOmM2RW^z&->syz3MTOhpVxdoh zXA5c67el(_LY~`wCQuh)=Z-hv-*~2@WzW~TDBBLS8JB> zvB(Z6?HD`$3fE#dm}*f1gL@G%{HX@ef7%%Qu;K?Vv%ij@4F;@TaeF|#p(L)h%&l91 ziAZT28syGFP!ooi$w4vM%xOB+ZVjCetwy@k?7oU6i)Qq}H+cn##cM6k=b+&X6+(v- zj^7cR``BiDXZV*u={F(?o+O$p+_dIZ$lUxzN>sArlxbAgG0mXL7U>M`ULp73{d(y4 zMNy7tqk>_JJ-qGgdpNlt5yp>gg=fD>p7gvoLYGfwVoLi!dgN=)P9>6O-`vY7(v46c zD9IG&g>Xb5=YG%G-aaGzl8DQikIh8qMcncP;&=RMsa#88LR|@Rz*TCaJF|M44-t#+ z5rZj5D+qF->r|^7s)b#PKi}-ML}U9}Vm(`gb0f_Ad(vJ{O62}FjBS42aoW)?ExR~H z^7p(J$L&)<;32rov^o|;8DPrYre!&mUYRdyg!P_w5tE(}t7v}GHl%|Qp%{4QZ$+aY z-)(8>M}a{_DsBM$SVCfCbp_>i=5#y%<(-s2tOUBi74sP*MAn88?tNrC2Z*xmwxs!J%mkmnlxX7F4AgQ?*--VxoUoTzL%sN zKx&Q*c3EhK*8uzD@zBoUhx7cGsUl=QRzr_VoB?X#YJ_twE@nx5P1WZh@0%jYbCqEWiiNt^>=IT7&tHYZ7zs#5xCl(#N=Z@VFZj9-03ZWn>sW>BbWCEg6bg! zYJW~|M?BkgpS48t%lu7L;40<*IKYDTUdBT0w>yG4Mc;3rA+MKsX%Jlnc!*H>%UpGZ}LCQPst{$|h(QKwwmY~AL%);n%FCJMlSboUr*)8IPc$# zd^PXuTw$}AU`deHaB4ke8umRL{*ZRHXD`H&Q9hzhL?$<1MTO1LcM;e0VeIt7w0Uju zx4(DFOZ}3B^$HM~&MY(vNq+gWM$`skXMrJ0f4oCQzHe=8)7AKjACSj`2D#|sMaMkW z{M-REP4E*N&JV&6bkRS~7`!I+uHA9j;wPoJ*ne~iIwBwngT3U~iA3SyEM3x8SU zdR*Y8B!yHkJgtypl8^T;|FRmIi0IKsOKT~gt>3ln(<}8k1W7M=T=VSVRh*Y} zNUHCsBNSrIoxpUSyK;IvBsR;9N;#M;;SFwY15YzWo{Q^II3r7&bvQ0&!i8^ozemU!7V{J!~Z2`c`ACRlnKstft z^CMunE=~gT31z(ROhpanc!)d)0z5qDldZ_vQMRyT)ilC<2Mc-zuAC`d%%!@(hrx>-Fda;VFQe zX|;*fA4TY}q6@ab+qOKqh ze2tq}f@PcZ1EYBJR?mAXC~tO;`J4BiUx~`_zvp~x1$W+sCCl`#jE_kv1S|bM#Am1a zc^b>EmMx@=Ok`F9&V*m`mcJsc>Tb%W-rxX6W4d5xz6L!yWqTdyCJnl3LZfw0bbIzM z1;^IE-h3Na+z~n?-KIfd_Qf38dyvQdOzUXt;f|kn?Sm7+UgpBaoG;J0zE_Giq3jO_ zxEG{?dJ`-<8g#GyBq?Ghh(^RxNt$~%76Yc2`h}Nobxq;Yo_}tkMU$@%LCkZOp{JXh zg=hQqfq4?hz_C9myT6BS&M7_SDO2ejII3s~N6`+M0wRtCGLPXwR>SHUDets}axvDw zk^#HA4t6lpu;w;|<-;$0&>_bcs=5hhL+FfcvgT%ru2%j7+-epU5`u0X0%$rT11<+G z-Y+mIgukF;E-yAIj}g|*a(x-$$=0WxZI?Nowd3D+^o4SWuk~;D&W~<{>NF`qvOF=a zr{vZI3yQy|HVCW82eYJS7x%6tWBY7 zIw`;NKK>evD+pv-X-8V`*;kLPfM^dIVrq<{?FF>tXa?*5kBNNj`0hE&08XwZ@BdT5jA(~0e=EaOeAi-*9(=VxlUKNUYi#^2sa$Xy{*Ts67Uc0 znm1QI^?76!*xcSO)4*{@15cNZ#l!M!n##$xak9z(c0IA0ebuEfx!!~_Bo29B&Mu5g z7YM?ll@x1opi(WOh?$k-NA5E|{A#HwK_%*e+Q2_s-fR%nO*u9WH9EOGd~|?qFX~Tj z`AL!XRSOW!5iv9a1K)ri)j`0LA)2Ub#Hv&Gtvt4YZ+S5bS?6^(?42Y^&vKq(6=0Gp zVT4}4rz(Q;6*OqTS8q9FwO@}0)SET< z&fkwP&+om%55h(s-ix=HeSlG?e~IlSf?Vz@4iM5@5oBj^ zK%oBs3PISa3lW`<+(wDaJ19IzD~p~Ro>poe#$r+!>2sw;^ZpsAR@ntKi>(f5-{sm} zjKjvky{ul8;EV>#+F=ns94>iGkw4CE{Wfj?{4UoT?0cfEN!Yz$>71X3gbb;6wf&y# z?eFJ^g!+wyj#BUzZsY_OHthXP;J0Xx&Iwpwx?BpQ!KOPP$ZWp$2y3}&TbL?Dbtgy{ zvSEH@xg~eE1j>Y4RwBfd7k*;=!36Awv!H`mf|vbN1VK>`Z>il=FpBQ`8%+}%4|5-> zFObN5OP%G^7##E;oFvuHPZxdnr^pB&Zo5faBYl)X{99aQIS)wpCS$j1Sk7N)FX@ni zmoXXM%sxC+hZr?2@q^){(7Db?5+5Rrkyun!HBvRh_LIo!F9ONg2X}vnY!ER_+|TYEF()!R zr2-Qjw9End0as=33X)Y(!CnAbDTJLCB`F%3n(8#%A6Fkp;k62T<2pOi)Es_MmUICWx&?wp0bwZ-b{5(&7*aGJkzIvCz>WTPEL&zY{le`IieltnO2f$vf| z*mnSpm99i-adYd}2GG(O1ekuKjYj-@H24?&fx4@UzGyWR!!Fw={l0wA9gGMe)`ShdhdgK=@ivEV00yz&wic!%rhzCq5!1?Yllto5g@q3SY6ut{+fH8rOOuXA z39yCT=gHh|B^AsM7{nhEtij5*;?{io0FUPlUOLi*nU8TWRS10yv_qVPb3v6c$V$KdekGh#~3?Ika$F2HwEYw@D z%glo$Vei`iIkD*q=*PZH`7+mZ> zu_6b+KADCZL8(vIYChUhhx#ro+JeQ)|DW3UOE45B;lbnBaeGGa%ciodog}^AHVg$9 z^$D<3ezf|WdEC_Cc}Lz;4i4#qMl=x)6hCsH?hRm^UM%w6zs05tykP>r?@HE|&U)8& zdiTMaS)YMlSO;s_2&otW@@$)SkJGw1J86}yrT2+eqd1npYFxHiQKWq@^e$%Za+w7ET9>ki&PDy#tjB6Qz<~fMrQPN zD^MCT4h&{LdqbkNORbbRdUL9gC^3I;Z_F7(rG|{Z&?Py2w6|i9qceM3Wv>*6$ZeH@ zD3Ujgvb|*$&7Y(%P`c)r_lF7E1*xeyy6IhOi`BG`Bev;

4YngJwPD7*-iGzyT>hp2Ui9w=-(N3lzQdEd{sIO{HQyUt4!~?%q3Smu- zDy?Ua`}#13{Gzu=;tPW8wjPh1Trb_{%*}-?U#-#LJry$3#bgdr7*|L`xh$_6j92p( zO|~H6D6_Fn*jEIe7Y;CPf3oWg8MW_15NrnCZD0d_^qOM+58upBHnGos1T91R0Vv(w zF5T@CD8}lyrF|5jh^wS$ws$RrZ6($z8SK*E-Lnec)HacmC@Eyoq%?D5@xR)7PAJoO z(6ygbe5$q4jhpwc==ooAoB2Upol0N(-hZv=S{&3D)pT8(a|8OrAtY-JVQJMTe%Xyx`LN@jA#YT8?Xz z#dKiVhlr%c@F_hJjA0b$q;N>C5Ou){QdM*)Pv`H;0o|c%Y8**n-N8oGs(ohXhD3;T|u2h8BT;0z8i$8YrPykEnlX*3Nt5PiImU(~@< zAXdTh??V#-_r!?}3wJi`ufw6ioVvwh*`AAPt3ML}_0*H>S8EL6p*hmuzI{_t4q5P+ zkE@@tj*(@C^bl37tr(4oOTsD8C07Ys~>n8PIi#5MCgFcc}HwjCr!_q58zzoQ(p7VQ}_Rz_E|q`-*ghSYXa6UK7f;C z*vj^lt}uipUMXcklvtic_ZE;%T0b`8?Uj^tyApnKH$V9xeLabgS=6@htFBoIAoNgL z>PD+Lb15&_XvOOakO{723>CLgnP~(&tUQs#@7nPem~qvuV26B(MgnpvU9OiL?DQ1> z{x{_0h`!_hPdF(p#^$eZJsuXF1oSbR(cBd}go736QTch?%tt2BFKEGv%yJz-n4efy zUQ?4%XGB=T^H`W$ikB&oqx8w%B#7_aJT+3WAVWd8tKyFr%xZ+uojDeZZ_DR7jshKHK_?@h_ulSuV=98WVyD;JBw!Vd9~?-1V>1e~98^N{a-;B>s~I3e%z=aOiwP zsy^gS0-lNX!GZ_=lX3;%OqBqHi{Zg9Iz%AicX0rUd3f#{&A>>=+-1=jHV2WF+sN%F0j`$xhUUg~MM>o#JZSj;9kLVuZb-u_R zFwGFY<*F+s5{dA}Xpd1gxJl)=Py$@eW*ur5L3q*HdughVIEsB2F{hANSaD^Q*Sa0o z2BR(1Gq$|^wwR-;2b5JzY}ED_-a=4QfnpT=0EbYhV&9*b=y5~0Ec~M@W-y#34>v() z8Fshl*7ZvzygcMb^~k@f>FT)SD9eRYd#h>M>=| zJcyG#SZ^jKfuPG!OhbOa_6|>^io@9=%->HbK+duX3LlnJPmoYW52nG-M{+;}W&r2) zOe6m4H6T~TT1)8Zf!)kN#!NxGY)rpYKMnI%U6oTBQvL#Kk$ z9yjBU8N;0CSpfLd$#51%$IwSaYbo2=s#d9yoFPPwp!+l;p;7-J(xgTI=D0IJ_onZ5 zRQj5S=^7^aBtdK?@|_^97b^H6vc(+je*#cG?p@3;-6?BJ9)cf+F@#9>3)U0Hr-i&V zzrmpLZAPgTKtY)9=)TbG&Sqh^{Jh2Q@<>v5`@!=GR6@Viym}F%+@@z$zQ+_dorwG( z@LT?Daqfi7nqSXSgqxEL@9;=anelN>H&(GKxRsEkxD&QkgC={~t?pCLsgX&smlAyU zCwOJ2gz$$DMW&;>%>QZul*u1Sk@-oE;!!3?^tlJcY4{{-QG4+tPR4TOk9dLA7ZbAC ztXyW$K)!2#GYlj}dz3&~oCHU*Q7FO{d#ZLTPhYArDdSO zQ~%73_L%Z$K%dJMZ4p=IvR}Ioj=wH8V^`|`NHg<=TkErc3tWaPyn-hj{z;J>es>q0 z$6c%M`x4X0kL76zs6vsSsf9Q~;XRXZ?9s#OR zL0+TJAoIFx)g!!r+IT75n)w*hC=@w)IJ#R9weR4U;%y1ANT5C+{crWf>1D z18-v%G9NnNYOhdV!^%d+t40VKO4qDMf zIQ3722^KMr8c&&yvGmDi7S&FhL> zv6b|b1>?ll**Z>W657%3xCzp%X7Rif6cLZtaDja~X&lOZ5*J~r4~5{O8%rAQGZrTm z)c+>;_7ddlB8}o19N6D+>^|o>hyxXEQ?`Ffdt&}>=}(g@&i*cnyj#NGP^0RVrlE@5 z-*<*!WKi@N#=RU^4*GlyaMi|8@)uXUQ-8>?qH`OQb1lbGAD6qRtrlN}^|~L;GNZCX+@b{|Br9~OuaBmZs-LW4AdDTDc8wIx_s3pb_VtqXB0^0s7WV&YNTTYncWC z9T#}qGC!Ctd5MGM^2nx38Ft|Rt@uXvF-KHrf`SoG#zFbH zgG@MCIC)aTMj%^4ZwO#n=udoUY+D46z~_%qRNkxZ5@($c3EGB~n`|_lm9cK53)mRa zBF<8|@2V@7k!#!C2Yz>#8%u6gHZwp06;wk zlw3dm1#QLTYdd)^{rhn(NS;XgYLmqnAoU#EFV~ee9#YDYB zs|mx-!@s`4w5+FO?vwYE+$WQ%#cE%5N!Zm{Puj3b?0>~!^Rm_OOiC{R zh)npHL?*r+f&}tkG)l5PsQrOd1aL#~!;}m3)XMA)0tQd@*I6!DX24a7@X`6g;DrK> z^hD#Te*6-WkHlWo4VQ4u?v67}kz}CTr@@7{@|#XGn>n3DZX+Ny5Y|y{wpC8w=AZu< zkH3&IH+~2mBT5hY3#SR~Vy8kog1n3p)CwPp-70$VYsDJg7rN?5Ho`RjUW^v>H_`gV z7JAAJ8JJAY@>ieL$&~sjK4!ZLD6(si904i3a37pHKA*22{sf1kZre<~fp3k&K=%15 z5LhGr*|vibY7MRjer+M=NMHu);`rk_D)lf5K+6*+OSCs)Au{)uqZ-V=z8Ddy~JU@#VFpZyHOu{0JrGWP|_cf5I8c37*4_Qfxc=? zcq?x>9R+n+ha}R=bN0sM7W*P13h;e7E?pt#)bOs`9(u0oNZUD%EY%u7E)j&Rvf@>z z#=YsO2kLC2)Ph>xlUoK8&i3nY`EP{FEd#k%{1V%M?f?r&BSAcRnx06cG2`4#F!h-|ai7^nkjnS(DJYbX0T3Dqd+g3M zpSS7L9T2Z-sOheH6Ij2NHmBC?Y)f>aWom@0H0ysW1EO0qE6tCURp(Ip#1 zm;=4JLey^5cTZ#@?jfUOrS31B;^`-mZ<}DRYd(|u*z?Q9b|rH4n{-KU!4f4Nmq<@D zAX(Xg18r%B+`#l%MW*02kQX|n6U}%kkLK`2H9tg{7fwPZok%Qm3jAFrfhaS%D*2Te z>FZsErMt6+ov8)67C!w_)GMMIh0oe2`ol_{+_Y#M-HiL8@>x%r$>dnfnfc1ejvRBB zKrk!9&MzTOI4YZ2Fhe@5?zW7_{ZSI1+1;NZB$k(X&BYsp989Y6?{qnFT!cwU4t<$N?}Z z2#z8j;%Dl$7@7-g^?(=>@p9%AMkp<~>dl_eUAG}4YedmcESS~QpL!c`7La>Kmd2;! z?b?qwdq9A-Vy1&nVq+_zD6&RwbqMF^g>>Lb;akFk1lW>Pb)F_e85wwo*bojg2Zk=D z0rZ{Svf5q8Y7Z700EgGfH2B7qD_uowyZJQ%vU)pcaVHPK@dDP}nbE}?jL%mzTj{rOw20?$^o)AvpnE$)p9b;=5 zl_h~j`$#KG6(B_{wpJ5l)_<+S!8S{&ChulfLk59G{F;Zx3#SXIiNatBM`ysfqyS?D zq0y^HCS^)^@(t(8j5mJ08V$>fCJr4(<6ckK4y(R2luHxW z3(`w9yu{S1SgU!aq)LQ$(C^4>+bu%(KKto;Xw3uce-$p9`law&q0`1m^;vkK%0vyd zMPY&&m(jx0Pi*JsFWGAtFEXH4?{j|fCICp>fDMZZI5-+=*zPC(TFML1C?B2X<6mP6 zbiK~?7ip2scAHRh10JDJb#$QQ)1|voaY-O_HA|J1jV%8!SoW!OB%y>0`c6lArYBGn z3Ts@lM1;s;E^=8La`r~;ONj0W09X({&d^=u&z{;6XlYhNaISumIKH*Ox&WGa*C{GE z>{3y@@}vBPt;xfuj}NjD_m}xf^xE!FZ0d^Ie^YC=G=L(vhWxLr85FwI+>GR-)WZao zOJ{qpXS}duj#)W+EYX%*RtBc?vN`DXG=T4RJXCQ)ibV7ZnY zXwu39D5o2&fam|YGahIa_(SSAJhrCKPza1H#k~VHO6+&s-_aTekwvZH{$C%K=|`P^ z5%00t3}Z2+h$NiRm7Qxn%}nsQU!soixzlyAGG1Z(QXOo+&bYE#7#3@yGJh$k`-r;> zULIMUHyDfT^6owUAv+*j*lmds1H)@ZvC05ADq|Jo^K)g(>qm5W54L8=9ZZb~BNho< zmnxc?n!;~?^E3kiB>(9YYz2+#e_FnFeD|*S0U%CX)x)h8#0FA^LYAfZ=F~5ZKzryY z!1)-+igOdu)(yD^k}eZW)P)58%7T70KN(DuXi|;+%z|N@CpI(0y5xmeEWjmzp?tfbYvp` z4zw{c+J?8Gu|{A9=Rjuwpv)eaai#P)pPT_hlIteOqr$wcdDCzv@BmNjnA{ff!{4%+ z@~C~HwrkZ3ZMCDpI7e036)S4udv{v{x4x=4PRO$ilZ6dT{hvw9P;;yqs4Jo(}K{T)UgG7Pvak&MxhQw6lI zgv0?lY9P_hDS$SsjD~|bdw{@g^u{RP&vS4J)#euKSlqzQ9(r62Vd~YXB|{!Q&V5`E z*UVXUmnTp7F67YE1ME`H9TX+%!q8l=VKhD1P8_F{amlds;dwQT*Ag?!nc?W?unv9Y zm!WUgb$`=>hrGGJq#LUV67;*7F(>`{dxxw)(cIcx;}TO8ru4a|VCTKJgYn zbmZM2f>!W;2imGyt_OBAf36C7&r^hlZe+b0t?d(81@;qLOG8d!@?3HPw{mE35KkRG z*1#JJ1KKp|r{uaZG8{ph zrvcbtD$0jW;UcZ-X<_mqdQUjoHOUfK$mC3YG&x5EmqyCIeaoFuthQ6x5zwGtqLr;aZR$$!5Vj0ZZs*5`!12>& zBDE{)ARG&1Z}>U)uh!JUKokXq42+H{SJXpLm)JZ&Ud#uYXlk|^xt@c6@3o`89()0 z^k$a=UdfZ$*STvus4%D>7+}fqvOVVP$zQAXi89iZUr;MYlSDmzw?_F)x8NoYNV>!&<5L5X#fvws>E1qPlVg`2{%$IV8O1+_ERu-xqw9ho6 zjL}&R6KZEz;F+cRq(I6%4mpR6jA?mB+ntZ>oVGJA%(mk3H zBc;J1-QA#cOE-v&R6@EzM~sjjU4kG;DW#NjiP8dsAoxCf-_P%T{~tWt{ha&6b*^(A z1;pF~iw@tX0rVLrj}n1^^hoB6Ef@{?d-U&Cu%)fdFQ813-xOfve_8<@)4I63ml{`_ zoFs5wLj0`-gYx(5$*^m#^0}s47dZI;^+fM@kD{{a%wXxEu?D&vUV;`rS0MJ^AMdY&lXcfTMW zm=P{u(jJfPvP3x%&$qKs(|a|*w{crMW74+8%49S2HN9Shz!>4`vDMzXHFODAt{4wZ zJVX^tLutq5S1aoV)IWjXxxj^Ltm^G!5wiNE>D>1NeV?FOJc{HAsZSS@3SNI197BmY zVD8A{p$dJiMUUNvZ52>K;18v!prkUDVRA`81Zx*F250BFz%hS0IBFqXR337=Gt~>| z^`(|dd!HbkziUWY?Foz=JqEH0r{kf98vj=Vs3;0WtHDz{pZP@G72G~;VB76$vYNlr z@TOb)EJl`Kh8OV)Axn{Tw?kOK($6(p8~Tk0#>~P}cLUJdWG?Qf?Jc8BIX6)VPRI+@ zJ3?8J9=kW75jF{oGa~LW2SY0)_&KJb_OTTpVESMEs4!$pv#G}l#sjikY=YkL_1L=j2}CzJWn7zEiKB=R zbs5B!veAM>A`B+SzBagC;6TgdU=AbE>|@L}Ujd4dSVY$H5LJF9e*I|E#(56tGTe$QGjZ{1Q;pyl=n-NJM7$fRH)TW#)f(OH*6` zbh~FZhv1niR`r%%MDe}~oBrp6S6;Af^1kk~Kg?|8Y!1JYl+LVVJA!F4RY~}^;R}Ir zrV*lf;6LV)A4E%K-DFn_tz;uO`eD@1Zb1&}sae0K=l|eQh2yZ7m3}Gk|1I=Fr6k?9 zM9c%QJqRa=U4;k@bZ24>0?9k?LI$ccSi?PmUC3dWO!{iK^wi)pF!%mnC9sje2ed@K zMK-Ph@BOGYpYezrq^E>2pXllf2;h>Yyx+3&J_d;kK7Y|0zmAy8&|2Y6u$-6=IVHAb zguZP46%*e`tHw4sX+Ry=w>l}ZSL2oO6K%~@2jxm4 zn^iuXxaeRj=Or5#@`KFA({ zgy}OCUnThXS-o}_qK5=-3ugd~Zdx*L&N4ot0a+fA1c0Jvlbr~3|Cqz}6#ylSfH#9O zhwYnJ;jaoOgTScnkS#wr#czd>jI5OvpO{~GCeJ5YRvgeY%y{V`?!e$KpMbQS3?mNuU%iz{MoD1)sFPCcWkDV2NiD7rWv*`sa0|)yDxF{mW#${B;=zCt7rzD86!-xEjLK89Dc=|1BW~ z6LpXG^^24ezFihlY8K@jdq)Mz6Ffn0Wn~&F-1qk6O8QDlsSI(pxrw%Qhn@c>1WQUg zJG(k%s(G74ntl<#E`KY+z8MS@R7ryG6!*Et2Le{NPovBAcu*dBI1Wv*3bh7JT{}3@ zILVd&fTLcR*(le-|GF3x5SNK(#~qs((EDgEec?L#rE`2_=G$u1hp&t9MQ7CTQ9Lgw z1(OxAK?*=Fl;sCGs7oT`L<(t0sq^=eE^l^t7~3 z+Q|oOOd@AVdyRs~Z`}jBcE9%LpyHeCnz##UMMnoQ$+kANVtDuP!zCr;-4M_gFy-*^ z$w!H@z`sPY=3qTa4o&7HJP_H7%t+CyAXk3AS&neKDQee`RbEyy+48t(O7O-G4s&^g zFS%}?dCM2=Dx+os9GH1rd>e*M5p_~4#Q1I>HtfY3FDvxR}1_fV@ zK4N!{{%wv{fa|J^N|A*|Bs_tR@xpSS61`ZDGHyo+<>EjqSjl*ioiJ*N_(i)8S^Cg| zViNDTq0#LPB4Rqi;*;WEVaYV#0MBxwVuX) zvMrC0Tww;j)xk-LIQYIgf{^6T!#!k5s(VUoQL95JshcxiPI8E__@M zoLb7Dr(Uqd@#1y8TW>FBn(U#YT30n3I=Tnqi!YrfS z^%^v6;rTjwdrx+7*`S5FAMzrg>fqTL^PIAEq3lcwgnp_own#W67~~m*@faEsw-ojE zZ3`1oc)}g{vGFrx)WcU!AUJ@?fd>V7rB)_R_%Q1@^{RRL zxwFy$XGcBWY!3_NgBRcLojSP;4~igMg_z7w$?JuLjP2dF^Q$tg)&LvxXvGJqif?Yn zf$ysVoSj;TL#||1Sr~$cU|Qgz3Mo<@?4ZN@#(CSDg;{)GL#KpdKbqPd^O;OFFfdx! zy$&6w=Lvc2nmR$cXcG@FVk3xlG7;^0(;!r7HkgDpv67JCW{G~de zT4>TP2lvRqMBt(Nx=7t|hOe^hcD7BEHct=m*V*%u5M(<(zd5F7q4`H~d%VKGXG(zm zvfyV_A^IrvBBgMDRGSphHEBi5JbEU*IL6v>Z^$^6`6Qd;}G@u$KliN z8#k*g2~oE>!lL6s*m6rFF)MXniLiI1yQsQhJ=E?7wCzmR)HDZE9xF^N%qD>`tnM15 zAJ-VUX|rqlHC(BzAVQJSsp6NO#QHvp-245l( zUig%WWwiSOC$~q$$_oF+a_O83`(iLCslFw|P*tsnqHK)ioUl<$sPhjITWcsE&f!OBP@JPA=K~w~o2H0M3?rt? zx1AHLpw0w1PzCU8t>qiklu%{_G_nN6QZ~#872?J|NN`uRiaN;MkrOiN2At2^y{OqMAUc(ECkW!eLe&rGBrx%`Z{Y<=z}V93eHSVFqF8gihtYc8#2;vG;3RRHg^r)9#hg@`J{|k-3zVqG~~-pblgjaqLDSkmqmq% z%->nDkdk+1KP>zAxYUOP`R+Ou3wS;yuVGZ52e=!9NEAi?^W!?Zl$;oj837kARn3{hcPg#MDW9msXLVxnfF9&flh*F>6=Y&Clati^o497p; z3>Udkv9TM}E@>w96QYWWaJ47b0**HXKK|xh;f#>p;ZM?ef#2(K>kJHemkKGP5^%A{ z0%5O!VaBgdzsSRg%AmA7M7hP}gI^IHi}Lz)kyzjoHa(t(vc!a^+26M7Mlol3VLSLP z-y5w=uB2(&`tl|=6DALn*FW`YqV)~y`JT;x&;f?b9J}6WR_tyfc5lB#jSKkdJGA(D z?Y=g89oBdz%=+sOBmXxfPt=B)M6x8FxV2mD;o;bNlzyl(0T{T#?f97*pG)`;eI}nj zC;#6Mbt#CfA*4h;?n+fu9GF!tT*kBtFA_FG4T&ILuVvR~k-yN^B|0y+0|(K;bhMSp z&UrSrvvAD|CYB~@Jd54XJrE|aS#z59&Eu)9qyWv-SmXvR&nGrG{=w-M0dTsEAYIu; z*1|X!T#z=9oQS<&698j05QO-7JnlZ_${!{tA>}PhD@1lx+G=R5Oqr-m+^ZS8oM~q4 zMx(UEBx+lN>57MFu!BDEP-oktM~TnBu8sdNvHqojljaY&2|^l_B0x3=maxFE7fgwb90MP@wHT;KyTqjdO-XLCj7 zqTD9{{TV1+zU-YB+EpYxo?&^Czn2@>@BRRW@3z_1mOC*q=+Sy=G2F>d;d{iB_ekNQ za!E$bT7sc1?{mksp$4t9Ei`)tq=HTMbpBr+eCJXOWI$VKR)-POBO6(NG|-RLmghPw ziG>aESFi~Vu1u`%pahBD9knRKX9RQ;oLQ&iLzww3Vsc2JPolfPvR}Y+(9jAUnf6Dv zkx<&1*PYn;ks$8)TKj~YmJH`l$`~D6lo=jDprn}C#PGkY!Kc?oPuB(v7BJN&Z%tMW zXnEU%@qD$1i-VuO;Wb5Ifei7D&aNLJ5n#Zul(4e6SSNMC&15s6{)4!Tlpf24gi?dq zk@0VQM0$Pxsx2nfxxO84A#O-MLL3@IdaN0@!;Rd}ch~19{%WO(Y#grhV%7VsGu5oMy$`RRJ7yzsK*~Cfmm3qj4}&u z34-G@iPU~g#&GiVl++OU*YDi>HOr;~C*ZM@-W)Y18|KBnagzN#zgVO5CPY;W$O1k@ zx-x@qln{xQxbhj#FDFx{-%9l!N95akecxD?*=&^L6-wwx;p~biU$@vj0UN8o>DYF({!y)-9;kt7vk~5VywOzGZ_V&#zYYw=?Uvcr zA+f+1B?OXauFm=m8YVi&d>?Qbiu3-s$YzS;u2vE4S$HWm8Gm1A&f7q$z4LTq>fIhq z?Uzr2B^(B)XnnrcJsteA$Ig|*;4RZ8MJZg=5TJG5^9C|oA<2;7xR!OVsJURHk6UdL;ta(?RhhQh_!=G0`-my!|MDqyR1uhff z$!TdY{u>ptNj_~J9^j`M%$d|QpPJX!ZYRD0+`Br0!bhYont&NVtA+ zi;0`spf*j>8JT@Li*GHUtkq%FoQ;ctPs&w4q;5NC`Wn>xxYlwG46_H;5{=}YP$uF? ziAoB&M6jJ9&Iopr&GtvY{nY<3o-p{CO+B{e~I>^lw~ftUOxW zt7B`LgrHnXK}JOj-58x=CWS_#4`yBKI_3zae>#6USFvf_6=&(Mh-sNk+?34+`&ta^ ze6=gZVI3bZ;#Q&wj;T3>#4a+*V*zApV5FUors<|x@2$_wQwD2dXjvkL7 zb(kgZMlIi2w`eWcvd`DA8nu;d+X`qSpN0Ezcu%!(GVzvA(YTNg3Meziy|>>~nayoG zpO#i*$M`o=USw_o5h_(SPlydtmKiyodR~Eux1YuI;YxD^D$s(?f!On6#Okq!aNg1D znxON^*&63P(Akf7j$N&O{c!P^x(gH4&L_6tr1YPoBkT{3JUE?sw-e|X>6>S9e+NX) zGrXp#CsV`0W?^j2X!LCQ6y6kg(5VC0UV5)(RW=Cl^f2xjWhP`3y>zcgYN3Y8e>DP;QjmcCv#TeUT%iJJ!De=@8*%{T(+5 zM@nDox6isOC|dm|cPWAChJy&18a*~3a%3@M-*$ZviE8It)1##9lkZzjsfI@qRprLkDEVo zAB!piPTWc9lM*Z0L+mz1OJVeMC9#`|(7R*Dl30@-IAQc#>+w$ignh<1#YN}e-tVOy zsn{KnrlT=4s;!o3SxBq1N(B>}~?h&5G66?bDD@o{SJH`A2NB5v0`*f*$5*$qUYL;v&wb{+_fP z<+fVMzlArHrMTKOacudO3vDe?l!+mHCWUR`F^Dp7;F8bFkTqmH`$6;&;L9SzumEK0 zWh5Ia=b$b-ko=`J**n_szaSWK^R+;)m$NORbF{(5oqW&GMBI{=%t(a4-^uC+die+g z%RviG_S8t?8PMAZ%m}!Kk>>E#=O1;Dch0(}gPqNg;)oDW@bn};X>pYORI)P1`+(tF-^y65LV+9k zpq4~t2Q_G&oQKk^KUOs(+lj5uTAYIJ6#)MMa6L6Pl_CEt3sL(6Y79Grd_+ZN+Vh?$ zCXxax&px;V@O4sJ4js*DD~IizTwGo+p9d1)1ojTF9#}mbb##`lzwXdW4L}|`!-&=x z@thfs%C;yWS-yk31P+eSAaJ!=-zhuMcr!Ng6(nU;kLd0*MKz%;Icj zdiqLA=_<)`FPvf! zq3AQYAwtrk&?jm#3mz1y%&z8g_ATcfR47i4t0cgN#AvLYe0&3G=@F9(<-_EKte2 z=s9|}1FQ(t5N$=+tLl?MD6)Y1<}rDyO1p{Se$-2-4@Ss_oS_a3s8r;<(jgScLH7R% zACQ)vr6}CKO=}{wIEd&9%P%_eR=ZwHhbN;CpO^>m#3A{K99&TkHG;rpVwI*vu}DId zZ`NT}#6W_pg6MTmk-su?rny)!Hn`9D{O`#Qz;0+01!SoX_K$8CTiibZQ$?P4vo)v7 zM-g-UW(}y?yw%XX+8to#w<(PinUG0*`h7wIXtE1QtcEv*Ebl#b){*|fQ7zV(A^! zAc;h4wn;d$M2cNHJ~Kc4dpgmk5mno|IBEs3Sa-?+MF>F5Ci>6f+&d?l3xH#ek^(lI ze9P}zTF?P@zE*S0hkP&k)Yg0Rw3@N~_G<6xH;j?qA3zw{D+18AYW^Cy$Xm*zR`7vV z5GN!#9Ukj|H3m zN^WIWGA`#9^eTZl7tHMEZl#%*SZQeigE=n;;eUl}Gr3v&vAQdRFUMw9!F$IXYo~A7 ziSIFvV>RbhHKQa_TY%%IbDsAD*4kyYfFaTlb5_~E4VrQxz#?Ze8XPaz4nX0Sfk_4s zzHWRL231jPKISqyQEG<3H(cqb92b5x#Lm{PwFR>)FA7O#WDQM~FUbV;j zi~R#AsEd?|%6o3!U-VVA8P3+@Sv+?>6*y-N%>k<3&8MPF?SRPEeicB*n2`nU#cLC7 zY*dQW4sF<9U_7<~yQISSX9f-sDwR^Ta6slzC@%6F(~|7F&4ZHH&bEg=uQy|2-#c|N z0L6`fCv2T!@^f3;PU?12jr18EuJ&b3k%$&SKBi?W6^+cagL4s3LvCB$?I#XWy=dA)f0+toa)7__o}T7LJ97(oo;9t0J|nQfTRb2pjj zWnju_C~tQOSj1-!K*gf=MOECHQ)>Wu#iJ_xH~?7CNPQjnktwLzgzz@Fx2J?>SK_4z z3&bHNlDc+rd-n6%+8PQ*X~nC2q?%1mBv(+*PxQeukyoHBTqz_tUJ&#>8@0~@-+n`B z-`QLAh+h{kH8pLo?ZZvSIOXdm$_Ix%(&Mp9e4iA6(B<+b^7fN;$29t<`@f$Y*7~C7 zS22z;&jo`%q6P(ToyT0(CjN9PEI!6KjMRJu)|Yzv0TWq^(!g55{hEN8i2KS4i=4xk ztamU3A+MLUkV8;+3!x_do5)~O-e0w*Yl>~b=UojvL?!FB!C@93+%7B=O-`5@GYzx| zO{wc`4QQOHdUkw=cnAO92>jM)9Dc^k<+B)t1zzL?WSlYpD*N7I55LcOwecV#)NZjo zb5_XZgc|oT-Q-Vcw5E}3#j?r4Zf*@fpkZinI+YUf#bc#=Vfev%vRC+~*4OI|$%LqP zWb7G{h*tdIAh19=Z2II#*%NjHd!6-67#z$TOSi&sN_oX@_x@sF{9MIDdaY z@b}Y2`{IQs)S?};$%N~303DGH>>owc>DVoMxJG6vi0!*l0X4pk&0g(y?T5Le?7pQ1 zdcNO%;m|dY#M`PFtM1^&5MaV-oI+QtP3t(|Mv5hTl7;k2T3p=e^TU7Pdu}M_*J)|w z483biN5Sy{VZ@6%7JJ1!YSmk`5*unV6lQS=G*kj(T3K5|kd$}{wy4+|YHbU|$o|ApVA}%Y zR~)iq6THKS9Iu}5@>myGf2FH8tQ7of4fuE+tJ{92%Jla|E>Yr1yXRL!0UT)j5df12 zG!=fDg_%=U$^wmeQJrvL;P!W6y^Q@JjQbGSZQ$3B&z-AXAfEU9GXA;Ho2xGs9$Hbb zuUEJ1fbr1?Q^X(w@q_n30wupf4*YfZZyj?q&P3-ts}rJ_-PUU7wxznhlfE~Iy&x7sZOaS9iVPxCB9^uAO<^wpSWXwpv??JI&w-r88o>NbvK*Ebi zwhhQ#g~xIpGPXx_^74Mx4`Yv*N_^}f5A5D5NM?|rhYX*fmq<#8o#epV-EXhtjEfW$ybTrTUX58(+X^-cU@EvVrB~=*v{Y{XF^V5^b+fZ}CH*-zqVU7TsSzMLTC*}{Zywynukm)=H z6153_tM*B8w(3aT@C}OJH}CJUcr;OJJ-rcq^CzhTnD0-X=8M?3XK^pgEiv87Odb zKiMk%I3Uk6`1$7uf0IRkFcBbn6N?N~{}pmmEVi5UbICMBGuk&~+#;}D8Ocxli`bFw z;&zF#3L6_j+jP)+QaDPYH=zd_OUVb_Go^*ZTumoo{=JPEJY9l#)@b9MSpKOO=D0eL)9Ac1^@ zAU*nZGSjdAez^Ji`*^hVagWa8R{k1*X6a2Tng_eAa|D5DybXkj^k%`_3y-yr2-uX9 znajdMl?5!&%|5~$Ypcv(ZCY-;ULA%}oy-Xfe`MmORdiE;?tx#Nir$diO>cezELXs9 z(Y0a$_nI@uYPu2-rwv=U1RZ?f*2@OJffY~b#jT=vh8vFaq`}ZNP;W=kVZymUU{?*i zg(bX%bFxNgvgGTv@AuQ=lEDNFq-n1H+jL@#EYcfR3MjU>i#hS&Vm0mZZ)-L z#1#G0qXo}rfY+{4;^WH6u_P+j!PXFZp6^fG{;|}U8Vsyx{b+shGziF|Oq#WbfN-9JIF0%$SJ+j#?HNy%u^$-H zYPqVM_~r%e6CNVVhgViQAwNz^y>gtp&Y!h{X%yL3yFcdu^>>GPtj^o_d(msNs1AQN?P1G4Q4qUpz1&N)h<|F2@mxF}_?r zto)d|{rl!d5KqT-lk%Rg_VKJvJD0;B65B&_4(OA=*GJExiH6Rfg#o0Nj6J*)h>z*o zh&*y54bDG)Is2cP6ThyEXi+m0NLCG|uY>^s-VEJr+eq2NzjW9-zENFn@u@&Vc@`Hw zSdxS7`$C7rP=L65Lo0#d!m_OIML11K29|&#l!lN4-X#PMAk%g!P?3Jol>wL5D1ycXBFG?fc@Wa?IGn$yg?bsKm2 zK~5l|%{%`51u3CfzsA?qNg9(j!+F zGRzy8=g(8+#l$><&JCoBzYtqsb5qqm>G}pB`O_#nDm;Ug;pYYS<*=WThGWU2+x)Yc z2|{<5?iVt8lfE>#pN@QYZ)kU-gIf(LZtGKegd;3hl8OCP5j6+aKpWI|l|6*eQsORw z$pG72gsugiFFl;chZg@arz; zw8xKiJ32`zNxqc#3Kf#jR|=#Y!k(_ERgP!ezEU*3eS8Fz-xPcGhuK2SCvm|2972+k zHq0SgQ$hu00uV48@bbvGcom>|;N~uC-sEIK1FALRjMWv5QJCB4cK(CtpxZ@_?eEhg z=Yjm@ho43iz=a#-BAx_CB_B?Ec9(ltZy%FvJcjc@c2l$BO;?~PyW8vA&yHX>;7llRtbP>r0PN( zLKde2J=rcNFEr@WV^jF_`Cl!r@;syANO`1?fP>*W)1W@XLFzy}dT$<4;ub}2=GWbI z6X;oix9}K*;ngFM+Lkf>DIynR4`NBt`U`(88e4B>o_Zn6Y#zLQSAL3-FuO!RX zpO>E9c$@Pj1WJ5+E-}AwSY-6qD>F0`5SrskZyFU7y!UUhOMi+2NO>8MX=!N-I({Ue zGyqv8qqCro184=i*pq^KEzv&%6JA(PTEf~_tojs{cY+AnVV;?+$l<>|IdN@5dJ{U# zoYiW6zt*m&G+zd9CvQOqlM}zx7ajBmlPOJKpPMl2jO_O^q`zzuOO*}pR4y8nE6(vP z7KCVVLeb2)AfLM))xChL7=#13us$#?p^5u{T!1Pd%%EQ}yk}w+ne~(4AJhhjX_!ir zqWad7eu}K;o`L#bynlHkNw@3R_ZWJsYjN+RgTRHrm2!K~)+7+J8&-T2zZE4L%1wCA zv7IbvktrD>c|k@K7E3GnnzWv5_W|;JPvWdo^C~)$6TtfzutCq%Z0uAm35_q-lBHa& zqD+i}(P@6vcr6ys!WEP>2In~pOpn#QPS*K}fTPvG5#cbL0J^gDw(24oj#jVHC0(9mqVa%0Sc1<${PZ@0mAJv zLBsc`&XK||xOG2s{-B>SFHZf&CUvx33vAY>{lNLri4aFF2{shJq}W`YY$w26)sD#2 zIQTxkHs;tSlob|5U1>%Sd=&#<6Z#*jMIdgkf7(CJ)pkii<{S+-zZ1uQes#x42J94K z-MMxsI1UTRgYP1t_MW7rTCR~@34XwnH!<6~#j5X;#!K-8=EoJ-bdvWb+1luPz9Snc zcw|UGt3@qqRaRzEztQV!T~7Sxj>s^_j0u`r&__X|qG_y-<_(%#VP`7GfB3?f%i-iM z-s3PTd3ONUbO34Qz*Y2x=)Ijf_SP78wqUsU6N$BzLEZ~) zRyr5%uN6j0Tqh$+iNzXdvBS~>gR7DL$mM-W$CAt(U#h$YG4F^|opsnY_G;ea(R*#t zkEhG)Jt*b@@Crj5x$sc~ctp+R4@OWA2P(EIFixY~%;?JrHp9y&G8M887X~C5*T1?d zwlVxfRvOCYv@W*NLMSG~sC{iN>Kkqv7u`fwnvZ=WXq#UlBMw+?F}uo>n0x=Mr$+32 zzHIp_vlFHwvA@6D#4&8`&W*nFxCUx{=D*6k*N8dGfg8}U_z0|1WqwythX%#CW z>?W>iSWaOz%`L!XiT5LHUN2H*;I#=rI$0r~Z+102k}l_?C; ziL@{?uh5_V1VdJj@_)9N_)V?G$EnfLw7GO!l?|s^jc%71)2oS_ZGYfn5-jiy@sPET zYMf=k2u-pGb8Tdi_5k>A5rtWYukm*pKTdEb2SDx7jI<&_`crr-yxsa|$(y_wn^HsQ zVE4(>syqE$W`RDI`Vj`iO8>lD#HUAwhPi{&h1(J{@_kG^`Hd;<@$ySmokJPJ)}rse zRMl9ceSAL1p-P*OgcAA$(9!ts_oq_-kI!DzP zFh2Ar6@#)enN%EfqI)083x7W;2-LOEwW#mX+fJJ{GX+3-p9d@~5@-6c+7=z%a$97T z;2c*19qhN?C4*!{GS?*gObsRu=F>6Oh?gA4FOWVBP_e!Pg5Hyin6HqJ zL*TyDcyQxF2hNNj<;{;Z(xCaL;y(g0R0D`#K8c22H>`u$B5o8e!(TbyXei4B8_?1k z!gFd2K6WLm0aU-S`(XFf)TtRpz|SW~lEUQUsxnllV;3K9QxMHZEVRy&#EYC1pun|#%jEvX zVhR@c0_T2CQg;^e$~2t%;@Si=kmiy9e6K<5g{HH$fmzERy*(Yy`SSU6wE`h*tQ->(|{6{3eV82g{$vMgbGoHG@my;&9El7h0zm zY6BzT6*(MBqV^l9F-(GQX2ext8z)dt8)oahvPm zitDTgK_cRQDf)c3`Eo;!oEm27xcbuDBDT(|1wHw*gH;T}ky9C-L zNkKm~LcKf;?|(GYdHmh?3v#k!OUrqBd+T}2lk>`=Pq7kS*BEK0Cj*B6uZ3DNbBioj z?*j~C7hz?B5fdVIkKRfWA7f9ePT{Y~++T1pn&EuF*T@ z&^LKt$g6Gw_ls&;(7Z7l|yw?vA(FKlk#|s+^0hI>9b6!UX#`5vl649e zrc+Og-?y{rX;G}5TKE*yto)C^IMl>=eiAQJ$qJ&B#zt;{M2DVvk3-L0n9=70v+q zytVF8dTKttg9pkY@~ZMMJ#V$~_j^*&IQEm706KWHdrwICoJFE;o8iGm?C?YRoXZdg z*U0odJ6&2)r-}ms;v^qo#bJ$fbQiMYk&Vb5Ok2v6n-rrfd>1+>f;(do)c8E49Z}CZ zmfdLRmJZ4qU#Rcg=(WLw9<*vW_5t10kA{6Ca@cP!%SN@}`0v!zzb~sb?3@^-pINj; zpTM+=0*3qAMT}1#jR&Xdg9iSut?1teou!@RPlv{#QZYu4l&QSn?mOO5JR3YzrE z*QA)2j|@iOfZX1stJKY`)=#a_hH%6q&?WO+l#ma1FYK>~4VY}02m8Q;FAy2NUcCvt z1Qz*Hgn`i0wrg_$elW_lXrLs3tD#piMCGg4j8Zk)F3()4xAP9j8Hr|{ z$8uf8lG>;^Q@I1W$c<$nl4)XVRA*JfG}YP{E%wZTK+K}LV-p@7MHsqULtKa<;Y<6m zBnd(`lTTg*|M^Ab${@aZUIpT!@Jr9#p zqoi9c(OK$Djo75Kh6ujcm<|DW#LWglz`_#U-@(J-cecQkwN<|HF33`=MY@mxw(5LeqYGHQxPW9H9g81*=izGy@LvPMMb zgk4J7vFLFRh&4~t)`%>!4`^@!rNTF;@SX2hp(FwWU_2BRzG+`>B_0@5BZV$`zFSl| z)>THHT4KZ2Q)1~oIto0OZJ+xK*gMKReMLP2 zeo$gaqUQ8i3U%~`(CLRAljIFH^+WY^7JFph-#?Z(*r1np5QcDx4HPgyK9I=E*?vRP zJ_A~p_?aVvwzm_F9OT~Ed=J)o&y zL=~c%qvYRTL(wUMSsE+1uR{0uE3opt4Uf-*W3j*+>_Ug;l&e^~bpM|R3r*Dm{Tg|y zb1E(-ma_cAA;E1(zoY20aK>0xjd@qf(jm3LW&Z>O&dQxHK-{c&U{JvOYFO#)88MY+ zbPS|sP>4g(>qqI#)gdwI1Vak$W)yqq9?sT02nwu3#sM)%crASX8Ba96e%D&cVy57Wj^weg7B`O5@ey*+ zURs7faMiJ=&_TT_YC(#?cH6!@-~RO{>c%{Fl?Jt*jlP+d{gad4?7PL( zZ-z01eRAzz#wKZTp~gZ=0zxgCwPF>Y1r*+-*^|ah+0symdddN|2fw(5R-Ti#@{6#) zXEHDK6#&RIx>FS>cZwgv=7mal@>_As7y4BqoT4}CuRba8r#TJ}D|&gdwIVUOYEzpU zpNWW*#rR3W6NV&)UmX_9;fjP zl72HcfNByujyTrI1~+>Ux)WvfJTkG~lbFq2r&UqNA=?$aOR(uFrhCIay!H z@n17vpLFa~hGD?Jgo(TDAVC>gt87}#pl8|ufwWa5MHW+1|9yCCS{1OyD~F*Mz^{CT z|3#}x%&p!;51zwm%l1m)<0oHResK8Kxxt74yoFDWd<Bt+a(6P@? zT*l+=o5eN^yU?Te$IiPutqm^%{JsxB0zWu4nv>RUr`?SAwxjMTLt*|^CJB-^}s7I+r$B`%Pj>9sCGG#AifdD46OhHS} zmiy#_(v{T%2x$FW8exF#{)Ai(UoE!yBfsEj7Yo@vD_f}5Dw5$GBt#+{FA^K+R z>MU2H%y~k@g{}Gi-eBeN577r!f|hR<9DE}+L9FG7G9q$N9=9HUw#Wn))(AV`+CxNa zm4N@P1#Wh)>b0nKc+!&VpElp~M>_FUuF_0En}yZv-VkM?r53tGEF9ibLg@D67WN^$ z$9=p}Y|U|RBV}0bJ=)w~Sgo+;fzTF1V(=~{;Oh`J=RY4{yXoVCdH|RU)zPmZ}qaO1UGq-hM_gwo-aV!{~KKdaD}W&fF~O z3)VkA3@E^erS6UFR%(8#NWzC>-cjPkS?@k33NP? z0*kG?2{IL5>*hZx0*Fx0^gbZ5b8eJI5nhf^psl9lnk@z#k}pK|_VQ|rC@u|wdI@Ba zT(sRl;sBjw!p^HP)oQT-LMV{t5x0R4RKlL@9$u~eyu@#}-u*xAeQ7*ZZQH&Ip}|-h z6qQ-XkeN+oiVT?|Q-gVKBbll0$`mqBTV@f-xMi$l+6W=D$R)g`+1)G z{r&%+-jB~Wzn`_&y4H1F>%7k4IFI9MzAb+&v}0a2hGwdLfq9IlmwrxvTBJ!y8C}QP zPw7i32OZT;o)df=dABkPdvdoiSNaU1q$E|)Ycod61E0v3-8a2pHIC7GJydFnX?Nb0 zPxZ&sj3v+0Ps-9%TD4A;dZv#Gxeq24X(trC*-y71r_B{N)-~p>CKg$)gq5?rb!=A2 zV%&waQ5MQe)hl45axlo8=~}h>6JzX3iMgk`1p^JzyI`rW{{VR(ghmm>x)pk}%%4BZ+83F->T{Jv^L^3s<Fpht&ql>mC2r#p7FH_-{&x~!GE-h;t3 zXIg#}6_QiD?tJQ$!+oWKOS9A0W(B-=Lp-a`zxgaW&z6pg?@^g+%t`}an9h+)!jH^} z=WZBJ79If5ljcz&ttV)M<&~wrgxS5Y4-|qn2s1nZk+kezW@qy@7Hm)sMOBk@rT(>{ z>#v~rn|$V}Tn}j5@L2<<;L6Ya(Xw(ZRIRZG&fKS<+>8m-D8BYuX?c#w=wOykMdiOp z;$42Sa3m>Jk7fT5j&`i=y}!Xum|0B{%9my8QEd{&FAG(_3iIuiR+SwTF3lmV(oTeZ3y2j`;EC@0Sn7n?fQ8v1~_^Q z)nD})UQY}as%{wpqy-)j7UwLsh6W0`8t>C9*mlYha7A0K_JC-6&3_LM5KGSBz{3%u z*ZYIrpb5%MQ|h5o>&d%so;^9jf1f5QF#e72NVa(7Li2};FoCc(L%VdD81kv~rPnM< zn|19}>MNdfnbug1HFM*~lj#9jU78#plNyjk*rZgQ;pC9K-!Ak9*Z=GnO3-mXhw;pb zJ1wX1VPc)HW{QCCyA+htq=z%#x`U<75&HuEBt_6?8r!IeSZWhF`(|A})aZRU$vgC9cdNT|T-wOrfd-`Ee`-`A$pRuK9$j)^#A$AdaUN&+ISa$|D1>J9mIk4Z5#>915kou zdM@QiXXfrNu?v&W^@nc8?iJOI>!A?1pB9oilZrht(^mB`XxJ%k8eD|07B3C4d%cBX z^JHV*D#lTN*Ise15KTNAP%IVZtyu;Khav}-5}>LQvQ@x{^2(~=?epiS(4TKS8k9j; zXYcStPed`|&NaThVT)`JQ=PJCs#8rtnsamy88atry^90AV#r(^(~%-Vr_#0y?8rP&fVY=z{e|Ico%;*J z*Ldfaidtz3bc*d`(?W1{YD~KX+4Sd#y7SG2RGD3aofkyZqeHCEnv-Ai>n^{$aHA#1 z)O|fr1AF93S6LF}ZgcXn(9*Lnj5p>>{r7Q`bxv|CnIp#jaa^Fqc2`_?1BT#{c|v!m zJR&1~=XP6|=mkY?qYdBAh1zxJqlqHDj#m^7sTMdZte=HvYLTnyS>6TuoH~AW;B07b zj?9ni3`9R2iTQqMja<9?6JWB=@dN>3cQ1LkcGy`vvD6u5_|YX+gHiULX8@Ui;bBjh zepbo5+!knP5G$ms{Edlk5vf-zh!q8b5CWU`>~kQdt`O<+`XI(6a*`TZTZ-L-9Lpas z(kGUblsIa}8DHSoy}Qd7FV+z*Ic94umi#n*_`NvRu9v&iZR*1ZFP0b`487DuAOe=t z=Rb7a%GDJ=U1+2d77@|e$2N1FAtBK*w2cjrfYBEf^DTLiHAKt5dbiwZk^D=X;P?GBo4X)X~e&NhWyE-(jZKhbo_j7s%0As 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 b@37ZS$4A6r&AL%i#Y3cfnODJUqYWu)&t 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 Date: Fri, 6 Dec 2019 15:00:58 -0800 Subject: [PATCH 118/365] Formatting fixes. --- rfcs/20191206-tensorflow-lattice-v2.md | 21 ++++++++---------- rfcs/20191206-tensorflow-lattice-v2/cat.png | Bin 36262 -> 20402 bytes .../lattice.png | Bin 82450 -> 40601 bytes rfcs/20191206-tensorflow-lattice-v2/pwl.png | Bin 40259 -> 24200 bytes 4 files changed, 9 insertions(+), 12 deletions(-) diff --git a/rfcs/20191206-tensorflow-lattice-v2.md b/rfcs/20191206-tensorflow-lattice-v2.md index 210c79285..dfdc38bba 100644 --- a/rfcs/20191206-tensorflow-lattice-v2.md +++ b/rfcs/20191206-tensorflow-lattice-v2.md @@ -2,13 +2,10 @@ | Status | Proposed | | :------------ | :------------------------------------------------------ | -| **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) | -: : (update when you have community PR #) : -| **Author(s)** | Mahdi Milani Fard (mmilanifard@google.com), Oleksandr | -: : Mangylov (amangy@google.com) : -| **Sponsor** | Zhenyu Tan (tanzheny@google.com), Karmel Allison | -: : (karmel@google.com) : -| **Updated** | 2019-12-04 | +| **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) (update when you have community PR #) | +| **Author(s)** | Mahdi Milani Fard (mmilanifard@google.com), Oleksandr Mangylov (amangy@google.com) | +| **Sponsor** | Zhenyu Tan (tanzheny@google.com), Karmel Allison (karmel@google.com) | +| **Updated** | 2019-12-06 | ## Objective @@ -155,7 +152,7 @@ keypoint inputs are fixed and passed to the layer constructor. They are typically set to the quantiles of the input, or are uniformly spaced in the input range. -![PWL Calibration](20191206-tensorflow-lattice-v2/pwl.png){style="width:50%;display:block;margin:auto"} +![PWL Calibration](20191206-tensorflow-lattice-v2/pwl.png) This layer supports monotonicity, convexity, concavity and bound constraints. @@ -178,7 +175,7 @@ calibrator = tfl.pwl_calibration_layer.PWLCalibration( This layer maps integer-valued input categories to float output. -![Categorical Calibration](20191206-tensorflow-lattice-v2/cat.png){style="width:50%;display:block;margin:auto"} +![Categorical Calibration](20191206-tensorflow-lattice-v2/cat.png) This layer supports partial ordering and bound constraints. @@ -203,7 +200,7 @@ input space and learns values for the output in the vertices of the grid. For a test point *x*, *f(x)* is linearly interpolated from the lattice values surrounding *x*. -![Lattice](20191206-tensorflow-lattice-v2/lattice.png){style="width:50%;display:block;margin:auto"} +![Lattice](20191206-tensorflow-lattice-v2/lattice.png) This layer support monotonicity, unimodality, [trust](http://proceedings.mlr.press/v97/cotter19a.html) and bound constraints. @@ -353,14 +350,14 @@ our specific canned estimators. TFL 2.0 supports extracting calibrator parameters from saved models and plotting them either individually or altogether. -![Calibration Plots](20191206-tensorflow-lattice-v2/calib.png){style="display:block;margin:auto"} +![Calibration Plots](20191206-tensorflow-lattice-v2/calib.png) #### Plotting model structure The model structure and all layer parameters can be extracted from a saved model and plotted in a schematic graph. This is similar to Keras model plotting. -![Model Graph](20191206-tensorflow-lattice-v2/graph.png){style="display:block;margin:auto"} +![Model Graph](20191206-tensorflow-lattice-v2/graph.png) We plan to expose these in a TFL TensorBoard extension in future launches. diff --git a/rfcs/20191206-tensorflow-lattice-v2/cat.png b/rfcs/20191206-tensorflow-lattice-v2/cat.png index f5e7f93ccbcabfcceafba7eb4783d119bf0050a2..c355eb5ca0cc4a52a80a067018b936a820ec00de 100644 GIT binary patch literal 20402 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 literal 36262 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 diff --git a/rfcs/20191206-tensorflow-lattice-v2/lattice.png b/rfcs/20191206-tensorflow-lattice-v2/lattice.png index 7978d32dfc1fcd88d68ecd61f2338660ff026a65..9d9915ac3015ea8e0e881c5ae80fa980d596a1e0 100644 GIT binary patch literal 40601 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%0As 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 b@37ZS$4A6r&AL%i#Y3khagP#NYh zB-tho2-UDe2RHY)lP9x$j+kcInw7MzMc= z-1+5>>Q>O++2@I83rb7aI?3Bs9QU5l927oVh`WU&PRA3wh-aJQloHP?v*@9)b14Gp7-* zKeJBPzB%?LCMVM*EnZK2>P-a*=Wj4oQDNVfF&6chwU+oIUK&mKO)c%U?CuHao3F2? zZ&F3E<@+`NbO^f7{If2-&gzzx#CJ_#vU8*;@l$Q(WRMenX>fbg_14R<=MHs{V&W;{ zsGG~G|7@&fM8ZtY47$)@z}phv>*P?5ZG8wywMPdjNjSs}FR?&4^1NH*MmIvW*O?}t z2HIA*lExP{fykbBvGrAGh|pvGY9+@wH{@wC6g@A`A5}X#;)bm{Q6{S)g1InRQ$gVC zm`fjT(R-Kg9mNLH5lkts6+acG7|6s3jK5YY|2jVBjqz01<{Qzd&6{!$!ClVTw+(y+ z=ZkWrP9GBF$lSh+ux#=zKj#~IylwlLyR{?#M#rGLtYKn_Two^ed{CAecW0um(qA&ixh;(bbVR;ob~m-!^79K&lF`G_1v`6C*Ag9 zwwT+Z{)rb}R%Nf?z3bln=7d>h)yKW+%uCN)n#`M-Wf~8j`z_q>ny+5HsLeO@ttFOw z-K_}|Ec~W!@%e2HbI3$b3G*ZByRE@lj_Z#yYkMoj@*0o&g0W@C@d$|M5&~1k+-(c7 z4Kw-ZlGb+ADaoRerw&gZYwU5ZovwPXb6_t>GdVW>Ds{l6ugHKi+gSTx{8CBeVq!bP zWz3OXe7p@^C;Skau4S}FsS-UP_wfUgiMvT4(oWUQfe5yyDYK{Y&^&z~MC z(sXW%vP8%83ZD=Q<~9?DBs$4%FE~ZP=&!Bg#nLHgHBf7(Z+hrG0rP!6WYloEfLW`V{3;)tIx;M2icKaF;^np zQB_`OUDXNA#~v0&r5W6ex-FjRvq-KKLzdMC(QmwgP@>6~)`)|JbWheMGit}NK51G-=6dV4lomiMcR;A+h%#%y z(oQheF)N7pndJ)ubdcdG;};4Jk+KenJ~JD(v6+X}zPI@Mqw%X<;& z4kqL?YB6S}KJX<#GoNP#Th}Yzw&9qEjm06o;@gK7HSR|3Pi-&Q@b{rCn!l-FH7u_Z10O*O=N{FWQ(pf3Hp;t! zozBhRM^BAE&1S027!g4f$ZX?5?3RP@)%AQwiG{ZPkp{*sca$%tnyAcTk>V!78XMzG zm_oJL7^)9EIXlw@SN4s#kS$&Fcj^-r14uV%j2bnGyL~P^eFT)1pE7w8UNB^mlW*F_ zIuIuURnz`p(Q0I%zMt}`3Es%BVjf(b)Ry5x3nqA1^CkHYJ%b zM@cCtze_Q5QX@rk=$~i(rp5II;*Cf}Ip1aEMv3a++|X1XjM^2^+%g4$fh>8xAHJ z#@J45Ob^k_*WiOyo$p`7l@fRk1xsiJ6W>reWT~Joqcj`6buMM#IGApe!Mci4oy-FHC@>@%HJafrEQikTP zeBk}2z)Uaiy5F`AwjDl;BfarU-_xPFRhmaIjF7yrIp<#?$#!?9@My^6k|aGQ_Vkw2zb=51OGax4QP4 zwLci4naY*@Rg8uS{5H|%2bhm;pZN!2|8RFr&%Cb^%6I|@QZ;hvMl;eaQJL9FUvj-@ z9>3ml6IfF5;~z7BUL1v8_$n}9t+>_&Kbi*{XTknLR!Coy1Yg&E!f}|v?Px&~^T}%T zUBEI#%vvmir4MZp{<`nklQ!bNsCMX;O*>%RpI^M>5LG@5e%7*DZZDc#_rrE&vLXBq zD4!#efe{Lk69$`Q%~V-9YU zkvHd@rFfln+bDLu?$0PFQg%&}cqumj8~<475daK8FBTLaAac>2V%PZ)qj*S=yPLcM47V|Splbf;a00eB)Jnt@Gmw2 zLK=ghr-HHJ@WF8W69vb^_iu#8_3UNlg(N~#?Y}})Rc9h z`f`{F^9WnJ9FWB3DN}~S%}McU8cRet=yL_{xwYbs+mE0Z79L5xZS+BY*97OC;8F25 z7p|f>Acrxkk?-nou4cXz5**+yT(=Xd7Jv0-#3;{4+EAA|e!{0A{v8h^RsiSsQ2V_Q zHieNK96M^yt(^w?Mh~keU6+_G>qII5rX42Vp_>nq6wW>6n5AbvKU`F(eL{yBQmZ4B zK0AnARkJXzUYm|{8jj=E`dFbR4(Fu%Tt`QJZt(Ka;bj0({JY$O_~{vim%gdsAlI}i zYI`P}URDj#=Id8~4q3YcgRA99&LLDUb7>U@g2<?|DgU)sDhsv~I zP0ef5rfhy}us55Xok_LOi}qF4q3#M>L763iA45HLGxwp~*h6pm!X}&{fKNV^V%^UF%BkLHoY*bZ2pr|8_X%hU=xdOc6h->*JsnWX^Ko*tJhdRT_6c2&H3wvA(FY zpE4r5w@o0>_5VYH&O-DR-A(xxEp@pv{zaIMsS9SGtRGW>!uzHsXKFeVRBf-5Y57f7 zq~Ax@4wc*HJ>pzpM1@-&^rBA_!h>5ot?5b6HxDAP`_A#7t8wqX3&qk5Gmzhicr@ll zfKf>HN_GHyArG#alfNM-QJbd9S(k}X|5vG9J;m7i%FuwLmp&%j&)xF$Bv}!=+n8bD zOjRV#4cQuY|DLAJA5Qv>&3m2%@*_LN-P`vljxnrli*4u}Bi#XnV#ey8;b-?p63ALy zB@j&!yTdQhP`$yN6)Ey81 z;p~UqB*8@#R|Vx~D9f10#3GQADh4(PgchOzmC}Mu?aX?(j-TE>Iats7CiLx_kk`Hx zATG?%=;ia!BU!@{LfDDE63LBgUu(W9rH>We_+!HrI9}q?7A1@EW3`$&$Bv$%)>mhgCZBO=9G?1+enJdQUSU%!5}vbPV_ z*lZl6)=SM(V}-fbWS22*E0meX6&Eoo@Vt92uc~Ufa8a17$n>0sDFR1_N4QU0|@C?_^ z#ArmfSv;)gwehExYN+^}PX6#^b)1ExaM+u1x~9fTY;>f9Xyq<_)6b1Rx0jiSM7i@> z^P8F|!PMt!OG?4S9Z#24#PTp}X3 z5#MZD)Qg?ZL-Fb96M0;T5#gR0ovQ;EWmS`2*FS_29u38sFXSr85I)l_*ACA|E!043 zHi+~0hd}&$mjh<)!&oELSP4-vF;C_^1ScmaEoWlXa1p_G`)Z=Ww-Aw$J@=1c;#Dup zQPI%@StA`qvxcqsc}OvFpWz8+V&${Kx3R^gn3IA1#12Cc%pCAyV_{|OyB77kxzl1N z!bC>UVjpL#99TYVv-m8PYQAymnN0{C+kFc~i>giTaLMtCB_#}Eu9v|n96Fvd-QzljF?ydZ+IQWTvpnY7 zQ@LI(9Ksgd8+n~qz>XYtBB97s?IqbUW zn6fg?o4fN?ISmbbMum=Pht?SG)*F2C801o&%216@T|1MXd5zj2x}3z`N8ed=Tf9ZY zsd0cA>>GClpTB#IBqb#Ufn*MZp3nQyD5Y`+7*zK9!y)j%4veygp=0H{VpINK)7WVvOw_7#;S|dmB!oA94nCa)l3AS1iPDy*sTuoSwfUW=}!4ucJ^(d(;gsaf=`S zKt%BsUnk;sNz%~oh4z9K<88|tAUU#>8UpkB5T`Y%3Mg}St z25NkQ?$0&zTKpsh(cmfJGq7wFzw7DwgY(vVDmps4bb&X-?^RfqmX;iW4ZXZfX6%L5 z1~S8HYXxtPbMAw`n*~nV_Ha}-!Ix`CebOwFPBrJ$t3jj?vhRAZX?i+oa!QKv;Cqod zY9jjly`ELPYO^UB+r4n{`dtFdihy-F6E+X9b@85O5+7Q{id6STy z4x6jw;^M-poAWF^f86Wfdra{>OOyx&o3d?Vq@elUe(H;L-=L&h!|%2Lgps+qSkvCv z_EqP0EB=mE=R9EM&CN{^*g{o`WYpB+g_VxBJrvbeBlOu5&@nD5R=cjLUr9l8mCC$y z+zj~n{q1d1B!;G@3^g@1xHL3=J=eSLVt3c`_a>)XtJpP0}@;X@1bKi&RgI@k0T9BFAsM;=B6X&ISLHch9Y z5B2q=+NDI?Ef-5{riwo;_{b?JMrLL(L!<)|6Y)QM{OGx_!%Eoq{d<6P-hzTObT+n= z%V?youqta~cK8!vy$_T;5T3t^$I;a<$g_9pyE?JAp_4WDr>;xQ*(YQ7e92#CES&g&JAz?>>S6 zJS2I|Y2bbM?6v!(`Gc)H7uyhU#32fagO_}>_Cg@X?6q9)X(AWj;j)AE7z<|7MJ`!C z(aBTeal}=xJMqyYXkitZY;;ntK}$22b({Rt-{uq$cuM}0a{l~%kSrH5Ms&|0S=F%; za!hDwXg&xEz$L;XB1CrYZf?9W$@%-dKEXk@wziBuPd>UhB_bh_Nn~VA=`~!&NrP6j zTy42XR($-3{O;X5Qens3I(PR*s_yRYqF{tVjkhmnlai7i90&L|BNJ2B;bplthlz=a znvRZ#B6n}KX|J!~FfN|kw>hjde;lDS*!=;P2Ag9)(Wl`zjeCDYN$#$Y2qExeiW~eT zQFrs)@A49pk`RDXJ&PjFYi_2h;RJKh($VQ$KBQ%4Mh2E z=)!V$q8i~UfFrKNQJkAV|`Xd1eQs(({Oj|(;u#<-;qpGGq(|ISF-tz4=pBpeTGv|N(N~ELjMs&6_ z>C*n>%}l-1#Zf=^;iP3w`=)DtZ7p$}_))kA&-$d9rKRb^-O-%8;OJ<~iCy=Vl@+7D zcsiERYK;h~Aml}Eze@~uc6MA!%4o5@dIXRHVK;}phjD&42p~#70WpkL0Y4)%bEMVJ z?_~QAj?GtcK8v4iAmkl3&fj7m9v)gbIP`+BaM*f(8<%4M9rN)Nnt_+R_(=G~^{j*l zea6Y0{L5CwY*=nQ_X)j^5GsY&`Cd18J|Q(Vw69P8%h#_Ujw}uN-5p#1*)A<9p+)Ur zo86%rf0w2u+F|i|5kw%zZ?8etl~+`hhQWj(xnT87Oic0SWYyKx0BEstazbTgk)@@j zK@vQ;J)dV_V?zUI2;v`vf&)^)PYULv<6}HrTz}wwgd`+hUaI)`_)TsOZ{Bo{6v!nc zB)}zocm1*L^6fQ<6oFt{zMDxaDx!mbxVX3r`n|xn0LXdRwi-?bF0O%V&)1Jg6crW0 zLC95OZ5ldU4*2kZkNPD+tOFBe<>r=CQHeF=MEw0?Ncne?ZvS!JrIEm%zBg_K0fvwA z9#JSs5ss9MCp_FYMr;6UTI{SY54jd~WYF$G83R)xt)_)YQ}< zY$tr3dHegzD~d*?HU^AZQ~knKkPb8gRQ<$I5gzA@e$8&VsMv8b6$WWNXlCYhG^NNd zF^0vkR`-bT@P^M+NM9$ke4Ib|vo&|bXHm{^8FU42nyq|#!g+gb)|GqJu(DQRH zjbQVkPe>yCy*not_saUDq_m;~?8QL`2Ded1Fj|!^047Fodkx!5NXP;Rdf9EL!JB<92CO!WEorQ>TIOH?ViDx9d)W$H^G7e5Ub zH?CWu?hz}2agppKb%Us|SbFVevMEBoOvKw?`~EGP8q!nUStO^l0|=rb>1B(0lyyEx z6>PN_PGeGnh3bcMBFs~lv{&>bnF=wVM?gJ=_5gwbRoj-y%QBUp*B@uR#I%b#VmdYR zG~D+iaQ;0N%!!bRqrF^pxl)o}x7JO|@aV&Is}M3aJ$?S8{BN@XNb}k-2MPhj=ad=f z<~X{)10IUL;;0Kx2cn~Cl{5PpF-Gd|BR$lIbN}Y(A1a7K?5h((&~Hym|1@Mf?1Srd zHO0TN`mQ91gf9xJDLk+uWu(m<-{XVTJ@heA zM2G30#u4FI7+VSZX%Fw)z%RD0U0T*3pPP=5B7ZHx^QkxHpJf}MW@Ngj`ece_)DF`= zok_S<JG-|VBOgBk)NM`;oEw4 zXAq8LH~^$~$hcrH5C0-N+oQP_`rrQjpH1@)mNQN!sIlXEgH$Ci5fP9v{Rb?TCsm

d4)Nq_P2jAAjpAI^r4)2$7k7L_V{pzg+4#3V-@f4dtITG*hpiZIy=wp z53SbyS%~KX6OlsV!R2~Rf#3ZdDUT84<;$18XS@Ke;UeZVBdZhsFM^|{QTX*-w7FbH zbDdldvhh>du4jG@Efs)F!K8fRwlPd+J5!HW*?dNxthoA?hO}sO^Yb52^8W8Ph&eVO z-B`*bcvwWLd} zOf49aMhT{;d*d`acN7H`SBRfd{uaUsCK)bw+(SM+W)K<`=zV`zN^q@k%y7Kfs9uP`@;@48Q0WbmVu$v?yD=P+|n;cN4tUCzd z;a%=s%i$i52rO*ly0d9bXxJ7vkymafj!R+?dGNlMr9`dMUoXU!6FnIzgOsWu1y{cy5(J5Iv<=Z&>zB2!u}4obyo(>seQB( zPP>0JD{<(<0qPU71z5wD{csK&K>zJw%4ULZswDr$*WG#a^Zw(Q7$1{H zX~)W48LE8&gVNWL>ytMHKbyZ)1eB!5|W7`F?V&rQE9gcs6JKrYm1 zU-~zNo{tFQ6Z1O;=s7u&J!vXBR_}ji{iEmh z#l&&JT+HU%5&0Ow8lJzwwPobjURUolhm(oAI&^z1onJhKPxGH;WKsjLu1l--<(et# z&f;Vh`TzSS`On<}=e63Ne`e*;#}-2SHS?B!{*ABnhPX^*6xdn}t>c?^ji3DZf0;}) zj^Nom@UW;L(T&IK>R#$2%}whs+r^E1a_U_Dq*mqf*Ve@hQUy(Ofhl4?4lmD7S?k`a ze7mn`Ka`Kew8;BAok#C!68t>{*eodrbv#KPs)B~`rtvLPXbx6oUK32Y+$Y%-HW|-IN@786}q{%^z zUtpx#a&`X5x6t)<-h`H`8Cki~+Bb@$>8$m15|Xy%{zDYL@9ptIQU)#n+mlKtAai3( zkW4@bk?kgPJYH1*Gob$Xlq;&|FC@s8>SS0lvSxUA?NNaRswF!4A@XyIgh)C)UY^JQ z8JasyuB(FKRJWm-a{I@W5s7NED@e~eJxI%Y>ei(3WFbZpLC6SUIDitFntG|Ft=+Nf zE>ke_0B%P{M$``Isqob6EIrUBbY91Wyy~y6uEBCY9HYi+Rt(@Eh^}9bB*fezilNO4 z1y(+2cH92Fc>2ds&cJ~Bp>Q4^_P@P8Hw86n{Zb?ctSchCfvvPN2%!+`VrWgnwzy`2 zMMou9lkH%ek>DeyQqS;Q^|18|PI3gfb%p28yKXLz0WpR8^(7Vvt8q{6NGqF;(AS1? z;y}#^0%5-W2XK)07~FL03n>j>=+WMvL_Po17CeSKBS=qlJIavv$N7uDA>sp7wYVJj zq(=rvBG}*Ge{@eMa{zWe>v0IkBkK0{mU+w~!&cv-ncp^FNkv^*=e+hM#(w{PKyhvb zxz$|vq^Y)*Z6C=wpqFFCc^a&arWT|hW96UaBs(Hw`C(A16cNz)-SAR_s)cWEAJm`i zC^SZEKi`q;D%aN5N|$Rhu(F2By$>(ONP_z^Jv-rCj2u;`WAZ8st3x#~RI0Get+~T# zo9I)Y0{VI(fgcv-lU_g+munk-fqM@~j+T z*dV)LWoz3tm?cK1fWNi9O@|5(QVaq}7%$;!9p+-$fJ-T@^Ipo$j`@e?&ZR@m9>XUL|=0_0wCFhQb?4f9w!>c!zr~j27l&ir` zi)JtUj_=XbH#SuGWJU8osFW^iKOdNPMg>5_e6}2t+?}`n`V#OG3wdGGTPOV#fT4X@ zb|@Cb!B%M{y`bRP&NH=AV;)lP3`Czx@8?_e+uvQ1PInTdIwN9GN)8TV*>~Q!zjybG ze;M(~hk^GkjQ#PlOrAQM-WMfT`;37#?DO;sMn^LX3zPAZ7ZCrWBWFOTAUtr^29-}t zHvs#;Gp58INW1XBcCY97#XhJMpFVvOzXnB9c#j}T%ham~RgXVLhEWJlzB$7K_a{Rz z0nv<2K8jbWz+!j<%^P2spBxLYHO=?;fYoFW6}>7;;}N~CTr}@bHU6H+1Us9wOh`%T zMgmIAqf^6~nrQG|!JX2M-uV}cj-}gQHp{C;1?+#sbaeG=#*>?x#33W}eghRMVCwa2 zguc8zwrILoimC@iAfTio2Qq=4);~BX>*~rMCyM7LR^xr6)F{@n_fb$xkh-kr)x37@ z)SAfdJR@=muOuI$P~1;x&-ZAGcL{xMPLhDc13ExW&aKC2k?MZ3n=qj1?VC@vA#Jf# zVokdMO#o&Eq>C{-)WqmDK@{|omyY#iXo5u$*Uvu}6Bx@lte>rt1D; zmp*+O{=F+`u+8ZXklpUPQ*JLC$8EY3802zCH{$^S0>pN+=G?HrpVvWeD!zrvrG__H z_Te&V3DhpDz2&PV5iol5LX5p^kNT9F!OdodkCA#AnTbx4o|L^1o;WH5B`09HqpP=f zxx8*pv|K;coL@k|7*M#Rg0`g5vJ9oFP+!$lb0D5DeYLx2`GS{;K~dd07y2>`@(ra~ z70EyNDb^l2d0Z*ClJx6(ICduPEI`uwD;7!{87+|QW1ypV{CvlEI4px>JW*x*0Mzhk z>022TAKR)3DcW!etNjWe58F~7TMB+Ae7&S-{E`SCetg#1Tc%1oqSQH`*Io_Zq%%-h zHYi|u2^9?u(8CW5I7m^KSW?L&Hg5UFJ<-kGF}ex!;RSXTE|ScOMLpp#gwV4{X#-Eh z4&{K2*!l5*mjWlRecuNxo7_K*>J9`@Qso5`{S#C&{H+0Z$`Y%dvp`QP?=oRr#Valf_e$2@K zic&IZaQt4$8a%B(6+7)*qhj}vQU8F&AriNg40q~VT;Y%WX3!iJgG zE*grNKZs6g@tN#FLE0KGRoBx)17#L~=4NJQM!!BNr1Kbe=>6HErEkz;)C=ur$Y1G# zMLR^1S69x(imp%AtpaEpZ;#$~A*s&NV;W4WTN#o;5r^ky|FV% z#G-m+1xo4FESJBxJ4^5e0>Tk1t6sDBN2m zHGtbgXJJ_;X08^s9KCZH3v4iymO&B`Zl*H0*b6DPr$@HwYO56DFEj^Rj=o>pEXt8w zJ=6D?4PnWK1wOo^qPPLcrS(z3dRL)Aj7C5j^Qw`VJ^Y_u+O5F=20=k$4xNgo++H9d zQ=`!zeRB_^xPP4#cSM7Q?PFvmF1yO?=)#}BM=k6sN~NKxsY=#(X!=(dVNFrAS678* z$>K73pY5ubu{j*q#zgWNO>J<7V&yBft+%=f2nfKoJ{2vvX20!72ijzksw7%ecgGfi zdQm(aCFh%tH}hIBA+4y9Plv-_CsBo*kLB~J@q|IBZ@D?@|Ev;2ga}uvT@DUbnIxWD z=I2Rqb&E7;MS!{+b4eb3pY2`APETpmX$0(W!BE;+qT0qsE=bR$pIg z=Y)IPciypkSJe%AiM_1s3Hr0zmb*L$q1 z8s6e(di$(NMBh3)IVa4;hqr9$P>GGa5PrxYEo6+8AWCM80RDlKdBB697XV;}2VMPv zhIMVwM6tByCkMkDsL;{pd=`;_y-}9L{+c}#yesrgy}rbc-ouFrELNsagN~II6%wD2 z5CDWKI-p7`G8JWm-i;(ivTb*rh0zWRhiP*>&!0`q6rxx}s>f`0-%_ zJDywg!ay@1qKSSbce-R>3Du7t@)CZ~Niyqh$ACb0kaK^7f`Ebz1&S%iCsarJ#$0og z2D|#o{OnIddRfk-is}5pASREtiU;fKg>Tk`THC=40fg+@A{gP;wya(JDiFfs6{{NX zg5Cc~tb*Kr7Y}h*-#h{egcK7Qm=hErHCND+sCsdF;+slbuM8D~?B-88!pxY;A&F@k z;SG$Z-8aTSK&!6C10r@&x%Ad34nrCSV9-FrNC;4$RaCH1it$fzYdB4h+ijX!Tj!=z zP0`!R-nihB=2`@V-!MIR#o})$POUQ#% zUQ&Xd&$++R&NyLpAsubY_R&)GMUiT$4+e#8ojR8EOjCVJxR;s>|B243Z-71w z06=><9s>`+xhmUE6ZK9Eg7!1vK-@(Enmgzud4Ph4BXTs0KxAXk5nYAECSz;b0pdZ5O%^MjrGe%?_>S!P=(gBiQ^N}5D zpnqy=>Zqq$U|?YGIA}eB4PJR7NgYgX<31ZH8d~4i1-#n$TF=b*Ww9Hz->xE(^p)ypjqe)ZZAC3kYh#oin;cb{q1uxm z{!UtFcJq`#lG->3EtABdR904g=>Onx-B6qHIiCeUAym6GWONhy;sw##U{;ilp$}1I z>s^CKn4Y2fC#?rHetK83aCXtLZTawNx#aQmi~mI+GP@<5o{YL^B3JFJVXe^!f5Wgf z$tA}z_=7UCNLR)(q}(8X%AYwvwa0sSDPIcCCcmKI(qb5m?8}$r4^|todJt#dzo&fY zK$&Rv60)(e@is65`wkRczzDzpl{xb37d+@u7#>#34uQ_fD<=_EmOTn~G}(1V@|Wwi za1>C_x9?jID5$8w2J*aR))_f9b?n51E@%YGX(a=V5&hh)lpNY+{@u>rd@NG92LnR$ zwA|b{3JMD1OVHWiQHG^iHzZ**$w@BpW(UR|EJb9?Is#rtT5)koA|fKoS-e^x!pFqK z@Q{mHCS)Hj_cDMiT-kEP{=3pJ4he(UXtu%aV%NcMdh@dxAo>{fdeRzyR3A7p_->T` z6hvCcep3VLbpdq%(;&@W=fK?Efk+s`6B8R$lkBMQB_$;Xzh61fNk~uug*EFa6z~f? zUT3x^d$SbRXS+d+3NS#rCL|?w7ATJ?CsV%ZrZ7xvb6L_*%vFqdV)%ywEn&tyqqyS(MmAVG zo(KEf7;0l{@Q&V_N7F70yzUUon!kOAmmmx2)-}Ro9A`G!yA!FNW8<r+pb9c2^gw@$8YLnWN_KZU#9ymbnr^pAV zE$mHol^}DFm38m;uG8{79f1G4M7P)0b`*Cl6{LaQ-V32GKea6{e~za#2eJC$QPIJ* zlZ9P@Fm)R@Alp!oMycN}wR5ojvmCSH<5UNZ?xTY8xmvn}fO?nb#9wSGm=zyZxq=YZ zpULClLe@o)rqS_*{l-aJFkc$}zgzOg+GFYKi%Tol2nZwv{^GU@5%XuX#ec_SP`rRG zK)l>9?+ObeZ?f}|ajQ=& zjlh4f=%wOjwct-Zot;@ELBRE!{yC902@dF{dzi+SaMWzfA04U=-Z036^4%1cXw9hG$kYXZfc>ms%tOBCM+>}ND&Dw`xt7O>Hm1H>2 z7O;!S0&RZm8(Wu!7=aKgR~kcQEx3ia0?iR2fx!QcSx37V1fXU4+}Z=QL=?hQTDHmm z?~rZ3Wdzb&>wZtC8V@flZeP*r4uSpOaFwueZsP0*DVmjwD`e6Z84?^4lBZK?0N}s) z6jV}U(yAS!6k}1mI-^*nuuaC4FP@m9V+mJ%2!|4IbvRFMc%bS~PftOLfs4Tu|{EA4~+37*)!?eWV;WsRf?<4wG zrCnV3K$}mlkstR6cWvtjxSHRZZ&%}XQXYdX=gi{Ka z@u3rj`n9UU*2O*ylv$t)PTI%kR^(n8;PDDT5|2tlL5*tQduje)w!R-fMArkHM6)El z2JGvm|AK`frC0r-+G5#PE40|}^yg}wzRQZk>>P?|J2naRR86?NU?7Y8YfM&0(d$b( zf<9D06J;IGzqdY9(9#)!hA00ot$vGvM>5(ljT2|dh;m2bg3(Xy1~;dbe%*ki z<#pTAvikZOi1LB=()f%&4b$S7kXR7>>Q!Ra9rogqtwOQr8+at_hpm*Av9i7PL_kj+ zDu9J7BscU|NMMIarj-r`2gy-cm_6R{D>g}f!@2qp{P`)=wcT?pSG{yRlEeT82YTx2 z@2V)-43R1_4*1)OFWR$pvM}&sez`wV(BV}ME>(8Rrza0Fj+TClM?mT6%KS`VcnC%0 z!CgDD!>fFQm`P3N1mb?G)QCQziB74NUPgtUjI33dxl&=>0H}nx2|Nq@JQ*>d57BkZ z=@m9jr{N#!09vY?yAo~IgCfJiMID4h;oFpl$XvXPt;276MsisNQ?dWS|3;qDzU483 zjfx-B-|$qN!OU@YHYr7E?cp_T{~f*4q4K+wf9R-T#6uzxEiRmmAW5ZetB`H1vxAnw z#m!CNe0;hm24wo6&syO(;j>H&%~;*Kn!mT~`gxHS9E8s0o?GF9sbz&qP(ppBLDgOT znS6h*^0>BpbL?VzrA0mtxnMMOdc>q^9dtV@?i1uj!iTmp6-B{9Pdw;BLdlM3LfHCu)9hNM`K9yccjC0c)*` z=?^V^vCG=WP*>}!u%Kd;1T(Vjb8VA7AtGFrpMEbmh+t0A#Gw}5Putnp{)J+?{pP+OZ2c-2_No{50(YR)o(|0W^oSw^JleI~K>zT?o)9?8-2o^{6k1<0Ov zB?J$t$4xD3GIml4C%0?qs8&CXJP?I>g`US>=IcMlE1uo!+3v?NIp!^`vr`MER(-w~ zr-o3}`ZsO4#RFuU^)>8pGQq;(m2@uh&}?GZ1?qo2gEo%UcrvvB=Ap{y^FAQI`V8_4K)6NAU2&=F17x ziX0sMLJ%HaI;qvqH0cN;xT2T;pF{N#tnE!d&Qj@?JD?F3J;fzI(R9Rkg3#W;k4?_B zh5VixkH%X+ycA|^M| z$iIU>b$PJsOen&O^yWKO727*>CV!U7!M45`L`P}B+mJ|HB}M|oyf@pJr^U|eec@O< z-V_L(4Z~b`s=%;T#tzL~zu2n;e@U`&0Dayhj>W!rrwC4JS~jDCZlgOFkjH{HHmo=e zTiyo*HKddvV`RT_$1N0$tJ{s;L7fp0q<|wQ0taYTF|PT8hK5EU=oL2t;a2>|*e<^w zCG2bzVPe|b`D%Nj%ShZ+<_YP^`@iqk51h5{1$BetAAOI9v<<#ruA4>O^z8`uq2+Me zS;h@^^zknI@x$iuI=Ye>`kWF0wxt4q{yjFS*+|eGv#1ktv44&=R|{(}7NW z(nDKZFP2SlSy@*ilhVPA%Mcwc?LreZL;qt$P|CjfPbqs-n4O4OHenFzXIt43fyOpm zN(l4xW_C`L_R&Dd&ICOqO23aud?Xb#0ABdNlOKBh>qp)|JbY+_Psqsdl=|22DA4$? z-|;xiQ?Vx6q2)>F`n?W(5lq~^IOYGeaixJ&?Qd5^ZU}MBvqB}ILOP~GX;4ziEMtRt zO0Fq{j73pIoQk?-o)a=F7n#X)P!Y*2%J8o3zQg~++qbrJ&ffbstmpYXYprK1Y4z24 z#wq?k3L9z+X8SDnev9tVW!Wt8fWJhd^$SgKjk%hxZrh>ti1)5T*TCpj|O zirYGYA^)`AcPabo&S5dHg{S#)Wa{$|m3DGo%@&sAAQp=}4s^B9BHw)WE!vS```}qe+oL0Eh5#-&tt$Xvg z$D59(ouh=Rv( z?C~i)T5$ih`}GH|$sE|rcyzzW-FqxS^iQ`L-CY*frgYT*Mq&97^5s}Rj%cOGF zI$Qh47O%zGw+eM6*Z4gYVm!foZ1A(=v%1?t(thP9HZlSQpGVcUZYinR{3TIx!zIxi zUWRSkN*sUK#T`6B8>CKae*6S|(0u5T6XAd82;Vw8BMZ4WAdd=#M`B*jTh(Sfjp#P+ zk6h8~YHpJFqwA%Uou&j`+A$&doqVjqo?P<=O%lSyj8Us=9eLFl@wCI57{(v19ALu8 z6*m{{9{jmg=zO|*rlV4=)iGi5os8U0!qQ{;D8k9n;bzA;cZ6)0beAXP@KXk>lrLv1 z2vhnFr^)FXD;RY6pVo+2${_#grp@}pg|QaSk}*3*)j?ej5yp=%9-MW| z6DNMDYi+`ywlYG)V=`fDUaiKU&=^|(XZ-ONlPeE-;vP_>*2Gk^QHY)wnC zK#_lv1OEGm=Plp2XrAJU4L5sw&w|G5S$;l~u&@}1f5;2ok;moQm03eo200HmW)SMN z4Y?9=M*M#+{Kw^X8VO7N*wtdH2M->g1Q}3aHr?amNfNknfG5dVdDy)qrQ@1DeNw_} z@#|V~FOp!|BlyRYCx6#85B)ruu!WYE|BQ*UQPa8fuc0$#)r6>m_+&v6MB|>NWk>NT zq;b$bFDnE=rAF)mh>U-aXyh{NfQDjxoZ_m8Td?x;dz;X>Y*te>Hs%K}LQPH0!p27P z;KY}o3$DdRPNEnVREk8F$re*io5)Ku35Md^Rslh)WV6`k3R!fxVq~aJ1(m7D4 z;&kQjvM(g6cKAOEUp}VIAdz5B1f!#_p^^A=;d)%dZGbLPdstHe;>)Yc%O_RVp~MHg z!?*$B7EBu9V)&VFi~BWN2S_%AL`A7g#jl(_qaVx4!xM^n64aF_Bx^5X7OwOo6l-PTVG$e@5+cE4nSM*&CP1> zP%;g68mUcOs2YPWWNB1o{Z4D^xxnDyr|IcT;1~&k|3}zKo@`s2w6B<~Vpge6d*Txc zT9>HJ*YY}4!%)M*#kG_h6=$_UwTA603%QFEs*uCK|vPYpz%7>e^Bqo6Y18PZJPVADH7`Z-nlQ~UP{VlR)YV!yuN zMd)3-Onv#EKYxy*y&80_LCk`Yp!cS2qK=-i$~QnTcA%6@l^sRp7c)9t!)f~XqEaN^ zA^&2RQF2}$JE%gelPIM{E;>do#~EdLD@6xW-_?AQeV@WI-ae;l=x#$p!xy;xK7?`X zRU93Gu3v1>we9pQtS45%Rl=O??DcG7r|x#W)*mU%cP;6koyaVgS|4Key*n{JZduYV z<sRF}SB7w$Fa(yTO#p_ouov6D+M($f7-gH^ zCf%I1EG{a#7(v2TR<>_gS)-hd~ zru(M)igiuOyoyP1fEE`NEZPWm4Gc&P`mV3ef;qAZs}V6w*SiTj=4^!gfJ9eUmuX&C zvkV{S$B2CQNdtniUj4Oz^6gP*98$FtLt&03mzJ)EN4Y2_UMhCpXrawYkT8Af*qYs%rnyo!n2u3o+RP|p7{60|!mWOFm94Kw(k`2Xhwuj_n;Ci3{1NANvW>7flxQ zz8$rJml0WS^7&t*$I^QzYg?b6l)(t&pDJDid2P{1$R77BFE=XoAZF#USmo z;sN^Ydw zSfHoy(Qk(1M}mDTVUO&EX2Ek|{5Ce~xWDpQ;2;v@Uh7riA~ZzQBl-eJO+eRjKQj~GNX3T- zd%#Dy7`&L{gb`Bj)k2_~j@?3%o@8_>yVbt0((Un;TrhIhf)=bP>=}e>I*7WCl z!Giys8Z^zDqa?S`o@1xgPHUU=ZzM^Nda5=(Tb~j-uEQ>@)#@+!dY?s2M#r`O-5@DT zC_<-Vt>9jy0U#(v3aYI68Yis{s>fQve5qH9&}ONhlpB6pTYDHA8P!6B)*TMB>jRl= zY;5+ovf|=6^9&~6{#-sqA#fgwWQkD!j#n2)o<=DjfiL=)`^EP;jA|^_>GGqm*4Z^G zuu^1XW&L4tC*0UDzY;z^_yA$c(7z;@Tb7u9;rOc#scX{za75B>*I-plY)XIW`!&KQ zL)ie&Pw(G*)b;Ccp`=fR6O)q>EiF2D&S+&>*_`BEfuUqd;h;|ycyzPuOXyWFmhGT~ z*ufKF-I?>UnZy(&}1U(Et+jzFQxj73r_nmCG+n zg;jvv^ae{!RaGiRx~kW|(=TP?T*+ao2{{ckFIDxx6t zc_1p0If1BH+(yQ1yI(qS*Tzhw7YVJ9)vzp90+QTYiZ3CZFvUw zrLV7wrM_N6$I_C*o01YpKfk{IXklTI()P_rfJ~NX>Xn_%ft8ngWo4yLz&#)!0D$@= zmp3yvmo0h+bQY%?&%kwu8iUbW4_16p!0?9ho#|;u@ci$-x&FPEKa`wYSa?InaG<*~ zTh+5v0GcjT-LK^-&r!m{!m7~nz`B3mfdlMt<#u#*jQ76Xp@rkWy1BUsH4Tl@BHg7@ z&x6SQ+COv;IVQvPY*=WYc;oCPh~@~}`}f{LW)Q6c{I*o80CO10VX9V=NHZ zkYrW7y}Yny9mm^u1qKCGVw@1BeAkx6Atj_tO)+alJAP~3*;nSxi$O-_i_Qduk{Ssn z?HzB&6)zb_5@xy*;c{%0f%Rj`mAHPF_m+ao}=ITlT z@2w66ZLE~>Rw`^GV#C|mh+|cK?CcEMZ_^|MYL{qNQXl;JR1e8%I8gCj8NB#_V47_L zq!;cgtLPC?ir{ zSFi3ugq@w8HA)S=X|9oH)xZ%#CY)s9;o+40E|a4sCP|8JCw182jf#6~iwJ`-ha10- z5jT!}1Qjn6ubhXaPi=K|a&j^iIwh2^%rX#mdBppz*17uq*5>9%j5|G~P)D*eiV!d0 z;#cxy$LGY)Bn2W(b9a|3u69a2cthJeTm`X{u7 zi8*OG(FpZZ_F#l$ta@>SdsAYeh+EbhrtNk`kio_*W8Nz=eLPs1SiOXXx3Ox}aT#hU) z`vEKj^^XWQa$9kqRH-1IW&@VF$-{rG6-211ut1Hl!OC z0-=bO1EFLgbU}c9|3bMt0~J^#=<1N5xh-?31NcHiLmgpl#+QfZzqNru)i5;VMIK8T z8KKc(cY=Wr%XNm#slR{>5vh`luPW{a}@U=qF8^)jViPSXn(0YHa>m?W)qw`snA`g0;R~rDnyJAA3h++ zQc)o($C+g>I0eQst!E!+~FrcD}dA}KgCv>?Wu3+TG3lb9( z;kvG`uRm)jwX(W813eBIdN7Cb)kTZdsldR^u0Rj$ui9S=6Wmu=N~yZlPN+AdvrA?C z!RzgVv}&+%ZpO|=tTrxSLVuDYNBmF9YaxChR60#`?zI*pW{ljk{Oi{nreEz>Qh6^R z88&Ja6%j!hvwzX_jq5HtI=Y9C)EQB5u>R?Iz2@nuQ>XrUqZ$X}ghtCwyMjrD#YAGY zw20;x6qtK>bni?rFBdd6Hb!5U2l1(G-=yW_==5Wa3;6l?9v`IKvwBoPzj4#6%mSo$ z=z$`mth~+aO~aQuL0|R1{yIG1HFw&r1Ol?Yk{iqj(ih-ta|7%hc`B!%|d9|K8>+67?&p{ClsXV0cn znZYwz$Zv2m+yZk3@?i+r(6FHrQR5bJ4s@gvfGTi$agk6?;S>btfl*`&HW@ftm?=eN zWw#S8cF=dnA0TbpowW&p|J{61Bz}}ITLN7Cg$RBW*!}hjG4Ay-BtAzz6(2q{yBc2# zU+0(nC9R<&M3nt0v!m+k+rOU^CUcH59cTH}|A2$}zeO&hu=MX`VwOZi{=NL4Sh8{X|F9$^gjDHE Zl@)ZWXM|jb1y4n#rJ=2!am393zW`q-4;%mh literal 40259 zcmeFZc{r7A^fpYI3r!M26FntV=DCT;l*}{9oT1p}sU!`CB4i#jZQCYcfnODJUqYWu)&t zqM+EDML|Jz?%;m-8=is4J@9L<-5nW~gYe^a@W~ta|3kLYnsyWvEI*L{D6N}N;_#P3 z_L3U*$~GqUj)u>TDXa|bZJ*lMKQ(`R&cXP(ow<$mIUcU-Ts+s#nc3Uh3UhP+uLrnn zo||$OUoZ;|1!zBa_-!%i&B2Jjv_$^vziX8 zp;d$6P@eEd5_+k(pR@hK>M^stcdv$^4STQ*f24fSsk3J%N369fA7@|Z+aFuyOru{V zMB`b$^LxO5bd~n*RrcWO`snpANB5Vr|J=TP`(|YQVH%qDrue%Ag2MYJ#>Q8!T&X5l zQCPiOI9nQEcXrcj=XW_%AJ0bQETDT%>|k$1V~(od<^xFRv^PqtTo zpX8eF9qlL5TH;Yj#cDyVO=fuQp64XAW2ut&&xw)gVtUHc+YfpjNg6qeuZ_%UBzMPD z43m4*3tuk{%I;36Rc(?p?$gL~wtccr#PFd&sV~Km?f2qBz8NzsYfV4%<;xq9^2W`H z!5O$o-M;-||IssXlvMlw5fWOBLRD8+FX3Lke3{eU>q5jVMKFsvL7Mc&kl{dc|gQFxeC1u!qk zBx~E0v=OF|XZ7k$a?G1us$BJDTKt+zPSG=)+`3=-c4wIbqF>z9(@XZz(OCX?NyTe= zC*d~pYVtWp0SXE!Ss9sUj@!F&D^DxIMk(so7xUiMP54}DLCwA+@P-N;6`Sxwjqxn@ zYrm3;sz`jW5J^}F^3!xj4K4p(Krprx=V5yQPJprLqs`!nI}{i-Rn;%5Xf^YmZ&o$G zel@*4c^U2u-N}=Q|NeVV_jxs2#7*OOWD?P_(v>(dk&7a#eMwH9D1Sj!Q(LQSZ2aY= zw|86o-2=L|-}gmaH+-2{vZUqn>QzBf|IpAAW})Zzf^we?N|7eJibYH>TAP~U3JL`MnMKriOzIxSio2gJ_3Zj;>@xS0o=wJXw4troc|k>8J%!J*eJrO@ zTv^eYED;18(Q76Dem^ta*U|+BkgZbm9(@XXjnv3*Vo-t)zvvJUAmW@oy{n0 zpUN&Dk#t2l`JZzGlUw}H$a9__LPL|`z@wCU67SRchG|XrN$$l#rf& zRr3CQv|_9{qkwgk$J~4Ue}sj*e~&)HHHxpvq17;tTwHKhuU>6UQ@%`^>DR|6%i}*? zQGRkWJfZ~AQG-{FOZ3E|KfyGX7w+sq4SopNj~eO$1`^J*Vlfm>Ad^OZ(nk~jYp!kb>WvTOA}L5%gy!G znz}lBjpfzRSYo^{%cHw@D;Tih^(Kg$t%E(mGX44f+R+hEd+(py0~?(B!ev= z__^Uc<8zpr zy6xA;i)|&Yjvz5hI3an9KxPq>t;s)s{(OSz6{3Z&T)QU6$H!OG(4YqT@svLjQAP$H z6Eo68o9S7*v8MQl8%D1mJa~|6Sg~K`Q5csluk-v6kA>0W#|GU3Nd`_azQs~mMa zsT}=MUi+|f^3%`6N?pqE$LmLGQO&~B#y4fCa8l#r=JXSP`YQdCJ!ZcjkpF>3XW||N zijz}e*A1!lU?}dhx+i62B|8${1O&8;E%zqIZZ4)w^p|aE2HH(_-r&?Jco^$8|27?s zCJhBEPE6(ZJB%;?siXbf#_ZS|57!~9`imbM8=K3}$NQfmBCg7~EOnXknbe(OV;3%! zoPI~g@g!S=*SO}C7^zixqI0fHLImBGURf!%wgCH`099^*tJlEL$1Luqp(sZB^v#-( z{^!qQSc)BPFhC@t)sIy|Z?Gz`11|R@rP`f4FJqkk97>6O(Pq(hmsacvEp|UGOGf|3 zv?JrqC(^+mf8QK`7Z@mERNtZJTF;^vF2^o5|LY=hMI&|g zI1iLl*2hZd6Fac#wpp$(wLsDX_MuYf(5JR;bUv2|Lf^0nJ^RpgUNP&Gkp&eTZsD5A zk^RyrL#JVpr~Kn!CL%Un(o5@jN3fO1wHxO4%$5Ke`Vf`&~7;-^m7r=hdVa(3XmR;gQIcb?_toUX~QGY3F8g8H$OS5z9BEqwW!e}BgrJ$-qDdiBtr zYfhq(^~s~{?%Z~X^#qI)uU(>iqkGKxNX(Q(3a!NY!?w1R%^%aviM}3dJ^kNSZ=}da zns^oiw&IuQ8^3Vj!s2WNZR`RmD=UjVtiY?}&63!@GY>}m-r%wTm24fBPTsD|pUf6WQi;^lz&%}v8BqXFe$29Qk z*RLvItRf;J*kj@HH)yivOPQOeZSZUv23|G2bN4Qv+ls9_sI;*2eA3OEH+gLbZmkg| zx&I4fCv0?fitD2Kxvi@ z67OOSWD&!uT84y$S&p}S(JFDtb5E}gKY3Xpcj7ZAGFJ*8fa{9a)XLAEWna1?CPpyy z;&YlEI8BCAgN-9qj&h>k~d~N`!kk@M@M^D>FMbO4rP_D zO^d7zg2D^wqTvwUy?v_$wml~R0rCY}-apgXn4%T+2|VITALIY!%&fe8IIu(fnskMW z6pv5a(TYDtt>PJ0TN>)Bs$JY0LH6zSg^@&Gkt3&1pZ+%HUQdnF`J$a~U7s%EPJ7)n z?AWGLKgazRJRY?+m5)wHF!tPUVQHzY;>q>p%NKc;Em)n+9HYea#$sbiVXRHQHDMcZ z4)C+ih-O?I4%lKXQhxHrx}>$UD0%G&qRzq9N&1Qmahf)s_2L>ddk;h`&TbtA=VE~$ zTo)9z=*T2EV@X8)t!@@QIO~bzNb43*lFV1H_M#>`l?)9Hm&6j_;>Cyam_7(PzvdRr zB`R9{6V-6%8*Bf^IUPnuMqZmfQCA8ChRDZ?>n7e0RKx0(oML9iWMy4nYjhv332~Xs zuDUet=bq9K#=-9`v61<%C9R&|X)7Mf4MH?Xa*<8cldFEN<=D7#FYm~C3-cpx>9dE` z7l|2kIaOo%=q2J>Q1DH`vRO0sVBR>(PcbnL@m$k{^|Y7;(qMg&rG-V5^_V+Kg1o!*ycb#)cFm+yt`u$fa8-ER0LJc#q^wQF@A42FR2g&n7R|Da0A6C7)U zOx6Y8$6t?dmee(c0Ql6>=>X6gc6M#CaU2kX;~6~}s|BHGkGkSw(XfoJY@_?GUaBf8 zNr0<_-4*RTX+UOP9BtuDq!#v3y!x`dw2Fpp93}JWWjOEXvDpE&1N@Yi?}oJU)kre0 z#=>h?IXUHnz^|nrzbKXKqumudd71^`CE482ZcxT&3hljJb=wL;?e`ZAH zRUc{2WF>3ce@+gZ_dkC~k#1mmKZR55v%$(PR!^{U^`#tr;~t$o4;}@}|87i9O1cLT zE2sEtbW&21AmM-o*uJY*u6(?-@4x|K!h5dg)!EwfLR0-^`u!ej7(CzIyLYDo0gB?u zD=RDPC!fz0F9hJ11?|WL4vDo%o)q^Ct-SQMs=crrt@PyY3F`a;M&yZ_OUc;oGnA*j zP8W?QM@~lOvqC7KD6wJxzC&O)jD5rIITwT+(P(-QwCw^(FCz2#C zbCrWbWYAJMMIq1Ti9Q^iK)>5U)J$Vzqoa%&l7-4`bxm^?)*4=M{K#_SH_m)$wLhA< z9s;$vp9zVH+t+c^?dLl>tt^8V@7}*})QSxcPeagXHx7l~umm8HuU``i@q^D1`j{Jr z2!3~77%^WMsmI`Y3@t%?mdM)$w!ax}Yk>&{49w!bwXwX^y*5+UZ(J1v(b2{nC~ThF z>O9Z%SXfwCie`?OR#b;>3PfMBL809GnGl$n{rYhJoxgwE$BXwDL9=V0 z@^b)m4HTV!6XP~7Ggzi1Ln}J#b(&KvX}C7b63h~#m`g5*TUA3NH8(exJ-+>7plC}* zNqPkF9YdHT1_No?qhn)c1iMDDrRBZ*_gl>U`5D1y847mZ zm_L%VzR*Yno7+WS_os#l?z74=CIoeB~~1t|b>g!WvMum!m2 z4uf=;x)(i=l~o0={rU45)O4>VT<_Mg=0w!$a9C_d^w2?AbGy-#+vJn7gN$p8ff8gu69} zO?EM|e_aYBrv)yHf$#hG?=BD?BC-o(^=wX%M1UX7S;2GTt@N9rR@%X%II6ll-X?Mbp;UztPXh=50aqAQ}ATEr*Onpn@@ zZsdv0w;QL<{#pzP5NlO?T8;}3{_GFO4K9;v{-{OXXWbH|9>Ky0K$5*>nR8){EnQYAJBlr-= z0y?0otBV2g|E#LAtod{$g5N3vv@*}AiblZAaf=T?*arCL76?Le&GGDj!_e{Zw?WE` zA`TfQb)Vx)-PgWVXN#aFlIS?p#s&i=+EZdZ((CHvz*Jr3=T~zlFE+QS>tg_RUIpLX zMX3g7uvmRLcC2K%5C6@o2Z`1po)n=zT=C<_Vp0Ewf+GPHwn@TzUg6_Y1wFjV%^lWe z0Y2yxmvL5F5xmX5Y@sAO6wE*0X zpeRx#^{o(*a5hDlDZ06?aZm@r$vfK-MM30XOxiOClu2cT~ zEvf|3y%Bx#*pui%&tBd2_rGx-_h?gy&V$a=Z_8$QUJQFH#E7N=wCS!ufA>B>oU3B( zkfhhOm$E{k^1eOoy6{{M)=WW>RAwzU#9RDe@@#xs#plwSCn!T{!MeuNu!>)kL5_D3 zPV^s9(e;eHq*3o zP*BX+W~A%c*fgTFmdl4c4jYhbZ1-x2CuL_VArZvJDxfk#=iiib-ykwFzG*CL{o;g#|v(O*i8wPk7Tf zu3S-)k$KB+)0Y7etUTD0wt?^7{?_!{0|m}bgg$Kx$Iw{5Uh->Cx~+S3;-Ew&+bi*; z)YM;_olkC#tCx{O#EK_+^0Apk)4~MX3TpWu=`UaIK~gIZ6cq)E_5ZF2lk`<#=F5l> z#?|1tXSkf4e&LamAQG^On@*5+34%nyb;MjCrxe+moSclLGlZZ0d4&X! zgEP1S*@50(9gJpf(*&3fhLQr~QMY5n-9i*eVr~ap^_F{5tGL{{OL@<#a zx068bjl?s3PBGfoPCMq??%#8b^#mhh_s}YM#0Eya4FgC9M2I?ng~Zrp8S)}tv5})3 zpzS00dEY;(psA^;*TK{DC~9;T6*V|};O}qS{CqWcj-0lUtdXEsG&uA1riD_srvEAf zMMeJXom92Hx!~5T7pj9Vi?}zA^FfWn!C7%z5>5#fRhEm*0>07h*~=lO=gQ~L0|b(f zxy;Tk43A#1g`K6Rr|b0nJ<*tvFY=l<1%zWtak(}bT(Xl-9^SWoMN#X!2#&0J;mwm7(O+UAFk(ZOJV>qd~z5bP; zsIONs-BWI4i|+slMGsMi1`4?=FOi5HBAEUxL+_0_NUrrHUEY3L^k<8I`16}?Uk*_T z6aVxv`(7m>$`nrI~&#oc?4~9>~c0#B)eo2r3<b|Nh$ zrUjBCY%*P4T>v@66CFCU47I*Kd5c34P3$9)HBp=~nIp@k@JTS7O*!IvkEw}T>m5by zeMw2lad5{Si{tn_7m~$PZ=o_|(O^#q4x9a5fofA#H*ZOjk<;6*Pq=k&UZf*8zIdF1 zI>HXdA`OnWmn}>uL6)oVU#MFlKLh;Rl>zd2lQrX+jy^AITk+0+nYaIGC8NZ*Ht)B= z+X}{D85ge-tSIA7HD*@xJ^vFyOrf=gBOB`N%{Zng?mgH34j1e&65TX1Q+u|3@8_ho z%QxMJ$9IY}UW!`1e&cBKi!SLlqtaBk+m?`7*nTNC*kP=ov`%y)i~V{zyu{AXdR)tU zr!=w>Mc?i@lRHxR-ZkCv=_}CEy#EI5ig8y-6RKivhdA55KSWO78Dj9i>)?S@>}iZ+ z>2jO=#X-9M>}X2n?{vE_Hg-m!RP;wtznxDvMn?pgyM0omCLI4%s#;R z9sExOZj1GX%vZ1|4g8gxD)|92Fy)z-yQ}pPPNBDQ+~oq;CF*q#0mSS(^!70AA>O!) zXa3uk51sky-)uvkd#Z;JF6=h*_kVWh7~GEdN1mpjmUY9EvJ8^3Zq&P?bOMK$2A;Sg z!n)az{F7~NKWgvA-IWKb;SHM6+DL{_Ug441F}!-|o86`5I+oSoo74CE@`;JOB38Z! zB~sm;&`7mSzy_c&;EF>RMrKvlpKRX_uPPT)*Gz@h&&=(M0ahvI^rY*l7YnF%mm(d4 zGAY@Vg!pbPcLY*}aqUhwsM7kGG@=F> zjfKl3Wmu(nVC?nnyE7|jV_n}|E&RSB!bA50s{UazcAau}zJD&KGv&Gw&m$&JOz>f(ag&p5imMRR@rIc~?(Z;uoJpZ!W3Adj~ErhgJW(7$UKIUs-;K)OV%xXv2g= z2F%b41jfYdDnfzoGs)=9(u@57mgMwT*>+XZf!n6xk@wHJ#Wu;3$GoMUrpRo&BU&Sc zXpR;d5sa(tJO%9h)XvUr(P8|?Y4OeQ8dQN%&W|!cTkyLkEMLg2Sc=u15H-%RR61|E zD-f&DFHdS7=LuyLUb~@YL?|p3kAek{* zPG7ef8_Xp$X7=#@tjg|)wq3@mS|vTJi*4R=`nPxgmOAw5uTR0hIoN0?6ONY%pTQsd z&sJYok*b!#bg7T!PQQ?m)Bk;HM+^q3Y)m(e?QXjBt-j1;Y~ktt{CZ$+cX5U^r&TAw zmPEDRaQDIQYIeo7z7M~1M<&ic!^OF}QsG|Y@1D`?PS2z}M4C^688^a{R!@eP-cjCN z+OhZTB2alYF>|DT^B!D<)5)C$G>t5sw17GrY70%2Ir2N7`m~_2H#BYbRRp zFTC&))9y>j4kOGRP<8j^dqK%gXk4Ugc(HT2a?|J|Zn&c=-mpyIul(?`9`N7U&8hmUhaG40NCl0OooiB}g0m`u~lo;o^quQ`7Nc=3UiFlkX3+nECzOmoNS{CC(A4{(tZJZzl8UKK1;7aSYc~ z1+1^sYiE50b>zhpQxcD$<}WJva2X~$y?Y#7hI!q&W_OeExE?Oqhbg}vQVGAr{`Ze_ zu~a{WHHMtXS1(+8n6u3lSUC(?ip3O(4H>HaN3*uVqM|0JL${StFSFSKpI|cSj;b1V zZ@qB=yv6{~F4pTH3|@r#39e{6-0=!rUF^AF9I7Ui@%AuvOSJmpjns=PCt%daka6kh z-&9jWw-GSgL%K;Pwk7{$LJTBh&;1)ypG)u59yeJ1DA4D0mw_Q=^G@MNgk|qv=1#f# zy5-FA;ZLd}8Ro2~lk`Cy7w<Uk1cZs^P#&2PG>+r`K|q_0}{0g*-35G^exG7c2~b zziAV{2A*o*JuKG?QmqiGXF|0Xs{F+4Di%9O+3nS^Wbxjf7|SjX;^t+FslpwOnvd^7Vd(rsHmOfNeRrxY{9$ z#x27r^gPL9b0M~<@FFsU7j~tpVGmtYDoW!d)A5Axuq6m-R<1&fvD~VxmHL|d|a&WQKBe zw?z{8Lr1XmkT>U%;&JzBzgRx6bXg&)3Ett9c_1y_6eVQWyZd}AWV8QlXR{TgRh*S9Im>Jw`8BiRCGKGs9?3-{_UC~{9d(|e@GBh zH2%YkZixA2+{MNb|IxyqkAdid1UfgMqVDqN?d3}{5b+>I;_mg&z`uely2Zj^!6QgN z{O=)MfuqYp?OA55mAwZ3BD;ZHz{F(V`+dGUULbP$XC zq7oEcns-%45>+CJecIrlB_JU5cJ?rrq}T9WNRq`Z_qi$t@wzOULC8_R`*3xCX$?Mm z0zCN~Gt?R1y8^UZ-xqd_{9&eSOAle7sX!t+(i%4&l?OG+dIO z`*ze*z800iL(Jnwu7d1z%D}A=;{h!==&L}^fC@)_I$vaccabA@V|D!ZUmjG@V#5-W z&*`JTa{gPi^_k`h@ac+g?)`-dcelZS&w>bTLu{+!Z8`mT>g$kkurBz$9|_>=({&4< ze_?T*ydm=lYI&c6f?7f`+iw36ylt4(Y!Ml$R2_fYcOKjJs`PWkfzaeSgQh zHB2CR5d!2zObm2BdE69ifE{3WOm#U!fLa?dda4j2xu{-!O4xz_Gx|FcZ9yWZw-s@{ z5gnPMYUv>Ajxr2fig3G)Km`e-J%8C=yh>V{DUQku5YP%1mdUZhy;<6I0w=-itCjqm z$THDz^UFNj^b@9?+4Xn2kh$tptaa3?TBP&4x3khoy}nPF{g?6T7hN5j3Ou3#TkP7< zE&cCr88Isn;~Y*bJEs4fjElK)Xq`X5FJI!Cee0LE*#HWoc7umco*7cCp2`Ec)0D~B zf&Dwq@mB4lo5tBl$S!(i8y@T%+>z_RC=D~Fy@qiA?^Y-Y6s9{eEpOx`d`^>sWeu)5 zw*M><0mWB}?ps?smL;ZHt4aCS#pvv&_1=2)Duc^?hY?Z1n3 zy@5L(Ng~$?d`?6x&3N){LN^4h15gIq)*+9Po|lI)irmjMjBd&R-sDNWSib8s*Xt6f z85As&X{ItabrX+{?Y9ls9q+5i)~iRQ9AG%h7wJTg?hZEOLuyFDX0kTleH(p|dThVh z?isBA+fi6WG9FR-iwv2qRtGnBw(l=(sFHIWJSiamN z7Xca|dTi$%@dlF|K4OEnfbI$GN&tcm%oui#+pQPgcpzfmYbY;m;5A)zvpO!oD|E-( zm-_-CQfzB=S%H`w_)b0Wvn`eI9h6RGV8W6n2(QD#*i&Us;nioK z?w)-d>c9j0xU9dyBta|_dz+bZboa2RsF(S@rFa|-vG>)RyuZ8xC^~lUQLTINLe^o0 zR^g2CQw#~(+*4K$VKuu4@pFRH-{l5dtvNw#@MIg;E4b-U@7-4B;!a z!=jQtobw?0E)Q;oZ?Dwp<2$XKnAPRm%vft%jSjSt$j0QKnEj}IxtzOuDStb$pR?aV z+Qz1~t=i>1p1gK>N!j)sY>9ezOIb+V23Fo>8Lgu#z{^h*a~GBzBmXA!e7jM8Yxk+R zmKtFs5bf*vm?E5$Cpi->ksbT;bLmUkT^;p4rP?}?$0_6@!KqIj8oEzC=u@ZA9cAAe z?)&<8?4;KLL5QQUPpjJ{O0PV;YgFrvW)&4Rj@v^e$2ED>R$^z>z5gtm<>~cBeF-TF z`1Lq1&jONUD!q|2$l)}}8$dJw8MBb1;vqBhab_lS0*kwTt9&S_u& zj*<6zQOYfzMlWD&K2>_BON&8=dZJx#`SNA+ngPLmwq57kb}iU`!G{|0#!NYj0G=^= zmS&A+gxFrilLt^AtMA$F>)+A-TTI=q1v+5WA#G-k?!cw0`%TAoDuShEFLFUd=ED!DEtXy1R$r$aXE zZ!a%#jnT{^^l9XWH@M9L?@4pY5>hk}D}J-!43>!y&Mg{YzntdT@ee)f;0pWBVMUqc zcIP_i$Ln=}`r;Rqu7;sIW6*-CC?b|}1cL&!NHXs!-N_Mn*=6x+k*Z^qzpFMhPr#F> z3|bnwCemE7aw;>O2a!<^?2PJ>^!;&LI$<9;-EZ@O9k~{m59JgD!LKPJa?&b|G*ddQ z=Lht6#I&*nmzg{kxu*mtqH5z{@)N6VY5shRCxvyU(gZs;6Ihfz(YeB&?;{pPmQQU%rK} zdx8HK`1s;o-PZFIJL$dw-}DJigtoqom-Glt>3IktvT1Rp%x?Ng9^n?io)7}lkr zkT&zQu}wdp<&h+&P}Ne>_W)7dXl)EQS*Ms;CKG5Vp(wI_w&kPIsn$*NR=$f%-*log z@<9>-$Is)4?@Do`mcDmKhdV6F53b8BDDB&~52-)5w6uKs_%S{q;X+$$>pxJj*DZ2r zdvpAveLY`?8L(rgtr2<&MR#3ux=YFG@cEK8)l5j~fXpC{B=D3%0E-Lj_L(K}8eH1^ zclGn)qP^JaP;hs?O~0l-HZ}F3q@)j!%@%+AvRc4!NZAet347ZVWYi{y2OPvjGQE(C z&Hb2(x^_6?4sp3Ri~B^wc&>?dOXgTBVHFFh??7{(WWH@ai6-6?eQ3W>Pp_ zfS9Pnb-BIKbJI>2VyFp7!v}X{sG&Dk8$Bn+Q)1PCqXz|ggb|{}p_T!>t>?;B$ii(m z!BdPuvWdJB2^G60)@+xo~|9luYJbMX-HUV+g_kDJsAF4(O?i)cBP>uMjF|&suE#z{AO*VFtQ^knG z8x4s&KAXotx{(&xx8GLv@W9(*{_+SRyW~q({`p6`HjG)g& z(P*h--z>RAfsTtSuO}e8_A+8%yPS88P1bUmuBIK=`@kEQ*RfG86LC{efpV|9*ZqZV z3JxGUwWLv?`ARp*mQVsGPxUFLc=oGV5;IR8K*sp?JTB`Fck+|*oQ)mJiNrcG-nf;i znU`MqbKMk2GCzL&Xy|#Co_@4a0hxC|&XqO{OiMEV*=trLEqcI)T}?pS??F5{iz?53q@-ysAWb21o%g;t3ThyV}7CF{plu&4M_{{an?9L=Cp zCrJ%M6TmrH8l@FqiPL}Wgsi@|5sa;N`wdR{YL)KzL5!Zw z53h!ZuwF&_<>`T!(-cm7%4o9s+!o~520_1<`5tH4lx?UfimxVZtnLs8VwPP_zn6r% zVy0RBbzqAAZ{g&#BT;90vb!ucZdPAO|a&9S_pFhZg5D*#?RLPq#qgN6%dl~F1lX?4koX7Ze|`Kk>=~npJHJ)07kJRLSCqlUxGpnFc=Ac z@~rqH-3dTG+E^czkeCrKkpu#YNqvMd?KIFJNF8OHZ8Kc4NDgLz1sYnmgdS!XU(poS zQ0Yp~lVcx`h$rwtgAw(cK}W{&4rhBWlyGFdgC15$n+GWRo@9J%YmRB-f>k|7l;E>F zIVSawJUmJ-r6Jdqh{kXsb%CEq`LAgFmV*Y5UD5< zT#XZ4s-y~1?^5*rfFta&E|SkDIP_@hGYQ(p$*~9Tp`r>23VLj7+LxG|EQMr+piIgw z^Ulw&6&T#=P-<CfUfZA)dv_s+K-`_m5S66hi?A^rz#~QDj$4 zu&XGce%S*XlJ4#$2nPy$gG|s5V9=0>SRzo1?CngE1-mJgd{KgMHcp-2lql_N1u~*O z+*F_FGCn=$-o`213ub&)O^?Z-K3YUQ=&beZbYq=K4lsgJpzTHG5#*KhJXVc$-R6E; zPalQxys&9J0u$c3ZYAH??*9zI6rl~k>6-XWe?ic`?Amqk{N+8)?p{7TeEj^|{Qpo+ z?MpI{69P_qHdoQ)&7H#wYvt8gTyAwMS(1bl~#C92k5x)o=RZSo>?`~02wM5c$?W($shqH7Qnh9`#irEM2GSS;PTr-I@ z$IoY)AMX>`>q1CyOlB|g1v^}{G7)AuotqrR#7DQs)YD$*vB0Y9_ zZawEiIzEFpwRg%&)@{Y1}7D?vCp|H0w;gIEgQ_Z|B+y!TT-A9n#l zHt_hkbWb8uHfkfCcK@i9Od4k+U&xWWkJfS&ViZ+J{5ph%CVt~z9L}eB&~ZMqQ=};N zg)smOBJGk)Tf%lYgz(r`>^yCaRJa9GT7psCPFX5MylgHXF_rO}nq&Se{!{ z>?6f&6AsXF59VM&R|uoFR%oySiKB_Z|%>m*K4J~%8cMSuY_dbo6f!Dpuh~~ zQMN;?fwqc1khNM`9w8)nsD1|}efV$;xU+YG_G8t20ah}QpP?4%z$zZ!2rCgUxhG`Y zHf?=q|M>s(&P6?x0~goX%Y_NhY()a%niBA9yT4gQ>ba9tQ8Rr69|CeqHd8>hR+{(o zU?4!j6K1L2l}0aqS6@PSIHrZYN!Mq?g|AQ%|2JskwL0p<_Qv*`AzV6Swp9 ze31WLkhv6ar8Zm^TP5!m;07z|;^C;*$a>C5x45*hROvChj#f0qoK)Q^J?I+$jhQQF{qxj`ge~__ zRVLj|KAGbU*J}e0Q5@ttFJ^#rN8q4mE0%#Tv-yM7cP#yIdUfw)du z55FXImWJ@Gig{h_APhx`NlMp4J4QFvz-jgxBlt00u5OJJgG9RC# zpor%%IDo*6DEz=8sd<7!fM6e78Nl50bQ??-o&6_sN#~V2{`;dsYRkZ|-U|;j8B(}@ zcs$F0B6(jBBX*90;_v_^kwc&Q(dc|Jpb~)4y4$p|LL?+Hpw91UT1p(&nwueN4%4Y= zdemiJdA3y=qsl}*@gX(qdTAjAMV5LwjRv%!h@gurem{KrG~q*cE|O@c6*R z*M?^5x4(>DnCuA*)%K`c!aPRg4LYmaBqa0uuNIZBKHjENJZ&9%ZaMfOI7JE_y-!$2 z%X0O`+LtO0bYmJ(lVsjAA2mHfP2t6TW1Dev8f|XYlH&YR>!WrYUy(v;Msjn@ppUPR zy;4Ve4csj{2J;7se%XtFW;Hld_h$g>52IJ21zp0*fSI5N76|5c-Gl=NXwIfW?M=t3 zJ9iGH3v1q+{U_Z8)2EqAC*(sm^~j!x>lKNa{#sfXq6A}N8^tu2VA;};BWN)my zq$+YZ=?ZN#B}MOU-L)%n~Wb4;?--=%Pm9H9+4))h^3jk^~fBt=EQ8{8|jJ<3D{m1tA3o zJG)d~UfxwME~MEsY0FQOL?R&u9bxAK-EVCk3l$A73Z;&*7IFz2oJFdt$PrZ)O`Gw# zvoz*rDQb)%&n7NRMh6dGgZoOc`43z!q_-2o)X+r5NhXr! zYq^QYf+~K0=$V4{!JJ(C@kd1yaJkAGnT0eHLkdA7xtGFfhQBSnRKq;JXzv`$i`Z{A zu}7y)j;nZhh!4W$KHNlU31rcl>gqW+x>=ywcVIn89N5?yTR~`-eS%PA0eb``MMa$j z%H1v4-M56Ba8Bz{hG%Mo)P6Hyo(HOHc+@Fij6&Kj%O{e*HGfdR3=P2N!w`>rwvMZ6K_pv*Sy4F^m`V$P8fY3HAkGdCA zCqIQev&fzJ*!^Qc7Kn|rggwv8$>g7%+=W9YgrY|siVRZlY2dTWpnpB3gbNn+QeD+O zxP6+drKWcerVDk44kZt_;Kz8=taUY9FJ-k@-aMH%-;nFIHxbtM`0-=WK)774df1TA z&?O8O{IJ)+BhZUj@ji?|nP4hT3Ve?R_@0^N2dZk@_b4H>`FJP`Erpi>{RgV{j{7M! zH8l$^7;vIC?%P+9Hms)!+uxg^=m5>!?me%@lub2_lg58=Vdxk(2?F$>e5RMr9moJ4 zHixLF4qOH3ixb0kAgCxwS^x4`Q72owRyatn*wxzZl2AYOlAhewRK#QEDwQodWt#4z z@R9^!KvlNII7~Mg35CJ!cITQ0zoub!X~*UOeI7cSYk%9C0Zf9&zQ%Eac-*e6Nr%Vi zg?C)T(v5uJ8VgFw@Z(3^8;wkM{X7mVUmc7Zlms+!3y4>N4BvsY7_TmjqM^e_Phtzc zzkwT#alIrnH#djd+FZk=Bj283O#`E*`#wLt+A3X(8xz zznK6HzG6$AMo3J}RXlqK>1v1OTZC(mq?@2M+-_9Csx#|0n2Vc7?Q=@__-T(C-*~P86`QQPoZC;azKLb8kySMIqDOvKvrG zQbh+3H)i%FPF@^NE@WMl$9Kk0S(!nKAmRuWg2eXpB~yKI*$j5W>pZCaryl1(AuvWs zajtytr24_p`pC;NV9=0{I5e!H^jyZ-_;{mmck6+}ANd9Oh|i?5W=CrOwXUoA^vlbu z_|6v(-o4K)1>bC@Mk!_hAW0~?VSzDg6VesP7YI%uQ{Fn~vQnbM%!T2rmoF~J;hGA6 zeD@;cJ$v_%IbOZ~{S({u)QuU&?j(9oRpr?)9LMVfww}h#_?B$1JL6c>_QLO|-*%2R z;p(xDcyBAryZl-X0Fo6Vn+yP(p|!(7mwbE=Oy*w!n|>#t$I7fyq(?=s$1EcHMtT_e zn`~A**wm~C(zF`T8547)psKQxTtE%e7L&+jG-I)=Ka&gJ{oD2*Xxy!`f`4=r;rjMjdxfl%UG4t1f0}OEK0fmr zTEeDDmN*?QXj(CYPByLV$3CNtYs)j94PvlHgFu{A*tAx$Dz&^dev-9vQQ76OA99Rd zZR;-ONFFH0b90r)q}Mth8o8Vmuv?@e+5iTgktjU`rY(i%JkEEZQ;8UnGW~`hlWWL2 zKyglEWkda7nfOgjW8hODUFySCFjINq+O;wbZfuWDgsh@p^Touqt|maSojZ=h zsSG>jf)giBe1iTy=#m@<_a)JR0OqXQn)2Ss++8LSc7jPlgZrgTK@jw^Y>aE zDeQect@l+`l_a0swN;oN=#ms3TL|4Tdrp=mAc#Ys4CcJsX&}jbx+Ufc&e-WP6C+4Y z-w*+kUj1DjNji$yI-dHxcm7S2!~?&6+jcgAfn7Pgt(of&th{9%OG_l>tt)ufR!~%* z7+J0Eg83PcrF5mvKt4XAsow}DAG$p1$q}$}LDxX{4`_GEw&X&l*Qh31^0#b6=VtS~ zn6vnwb~ZgtdB^nnyE%Y#3J-(&%sVBktLO1LDec+hjX<8K$ZcM~4F*B~#?b}k+Om1l z$BCyg2M|HiskagPzH}uEnSQ>j7}%(yqf+kq3GRsA;Z9E?EffD_#ys$dkX94u`n?p* zm;>JnKziUgCSbb**N}7C48{CO-;bZn{Yc;|Fydg+f`9Qmo<-FTZK#do&b~CvEpV{8 zX3ZBM@01StON5Mc>iF^II%;GLOg{hF_Vnn>a(3a&C-_KfgzZbbF7u1vlLa4cK=SR# zcT%7ikyF1^2cM$2jN$|tf5^lBe=XnL>5EWYKF|GRYf8d??4j7ofHxR$4)x4d_=M0f z@d51jd`k0hyG>tTdbd=V`O36^a4+=G6 z`Vy_~*T~x?-fZEuHaoC=)Sjmx?5_CT1bJRI86YQhz()Ya2c=++cq9CaNA+u$`gy}z zZaxUq7Z}JDc|b+s)wCU`L&n{Og%w&J93|n|JJQCwi5@vm(7msnmlTZ-T)o28LWZxu zmD~8Nd$o0Tjydb-=uB3yBf}2zL(Rw+3|M0yqkxdPt5 z1ntw9`p+sZ|G%u_x^4mX$Vv+^-;fUqH8wH}@9prp&BVyK`27Iu7?N{=#wS%BoeW5) zL${h9){^< zCYH^O=gpB442~Er!Oe zjw9T~aeXCQb{lUX&>}!0UaQQb1o})N*mg9BMl|^9$+D_3VBsMLdX$r5YZlsy0dv<8Wg;Z16zE8*Hj;)Thwl+i-jJe4Jf3ETNMW(l>#J#6=UfE zU#l1oQP;~Z0V8pcnk3IfD0F(y7}1;DCE+)oviR>AXfPKSiOFL4gSdYWPY!%!Uty5l$C>rH^2dp zt>UYS^3ZWDyaK{G(Nd<#J%|I?8{xHa_;;r6NJ^Y<#KeRJd{(J%VF5mq;##>5i%Ua# zULgqrjpTU95Eh;WS8k>jJ4{a;My<))LHdUDYs}-Xg#U?aEdMbM-HHi7CY4EP$U;7R z!>|A)Ecn>c;`%x?=xBF?y?qrrA0Z{L|FxbMG75H;#=9=%+_4)5`#wVDz=dUbvP=2* z?~%)$(6Q&lGSida7^DaKx(KFeOS2TbFDkjK`XbK4DZl-%PQ9b#cr)3*6^mc!$+H}7 zvjebBbgn}pmx$VV%zaYemZ129E3hllNm6;cN%}UFp6b~R`Jr)u_T*X|58yYz$2#T z+=qQXy^PPihDcou`G8JM^^L8p)-q2|#AT}MqCz0xrly`!QdS;xKFiEJ)n*4(6VX64 z8XZ{z*|~$9T>0_ivft9a_N`A>ZrQ1_lB6xo5pQyAY>!8|u*2kM()ZV_N*4c2Yea_-yEFbddbMZu!?DvV3L=YuW4+QNEszR z07zes+TU<`#%`}j-{9sr#)_@mHm;RdAj3V1OTm1o?C#0p#^aMtffrBh{j*k_R=rNI zQt|iq z*Ap8>7oFZ*UTBm8WB`?K4~0fj$p6#bTSj%Ye(l0PyG8dF6)E=?3lUICX+=>)K#>w8 zlub)0q0)9D3L?^|bW1mEQ4kPNQW~ZC(cPTuUig2W^Wls$-Vg6P#(R!mbjV_@J7-*T z&TG!j&N|cA`yOoSTy2wCFjqFdt6e?rXc>PEr{M9j=IbvNTeC!TMPChxpNeZ0dwy=y zqk)m$-m9@UR%8IBBQ!pw&^$GDGV!PJv&i6JGv zFl(uh4S@y9nDXKFVg(WA{hL1L=i9Q?RCzTIof4jlicC#SUEEfw|LF4mf%)CPRP{AQ zoQI(5eLbL>Nq`bm5Y3i?${@ZP`=RR^Zr+^T{3Y4A>I^~(I}m^}%N&w!@95~6pBbnD zUbEXT-LBckJUd)__SZI>1p#m6D_7oiUV{`uF`n2IVtoEJ!i%!%(j$$Q4 zQX<6bp!ED5nK!ZPd?S$uo@d#itgjz}RNc|&)~b|3a85xFL!9mJuB_PrLY)o8>2;ts z;$B30dyW>kE_9Ap10XV`J}~JJPrtX-(eWF9O}KRwTdHv01E{y1KbE&S!>J1epvCmy zFZk^^Kf_Tu^IMsjBk@ngpFcz8k00RTQquCD5@4PMgGr;P>&WnMW_p)8LNc9)hzWE= zD062T*|1>)$pz@_e9E2vrQ8u?Or`9SWX;dY8$xQsn+Ib4W!0!9%8J4Y z&d4rUnslJJ(XYnDVQxy>sZkQtdZ7q6+Bs@LCNYg5ZQ-2tSh$HY2M32C3JYJ4!-W1< zZzw-cJt^TEzh~`VNLg4}-RKD=;OhXPmj#?ZGGAK3&qu=qIjDZ z=!!<7(@@|~0u%lLFck)-gm>c?z2-hw*|ud}sTHy9mU1!0Imwf5^zl z_!m56U>B#}nKPe$yC=Swy8?duZoeIEgz&7dDQhP2D^M`PyF+jJ_rf*}l#W&g$+%w~ zz*LuBcwZcyvDN&%>HA{-nU*T19$$N#8cvA0N%JMQib_;#GGQHoQRsr4oC~Pn%BHPJ zH8FrF$5!iQjmUJjnj5Q$#4R8sc5e>p@?ZVIYu)wj7+8IXwu3_6E%Wo|Pm+&;*s?t3t!yI4Lbl@0uC@x1PO)6^l0}knd=#i(;(I(co^!E^ZB$;sY!}ACHm4yeXK$Jlumeu zgB$!5Bc|YjSmvD%^Da}8uXpM2`Y8ApnyBWq?ex3BAtU>m>pbGh{aF)QWtx+vLEs}G z*#b?DGp1z^BiQG(ch0YQT;Vj6sCKpKUNz<<%x zkTxRZZwW#R0tth6EkAEqT2c1j z<(qpos}EFB*HH<=%>y(!wFw6FQjvjI^?k4agl$K|2qujGBoHb%22~I+$Brp0D*l@4 z0pRD)7mJXzfI%rsaLDjq>tKgx*r(2=Hr3jH;;#XEp|4d{K)wIf@-~6E?CY4iAxeLZ zzrVZBaZ7rC9xp*)^ByuB;NelgDOJH4TAw%Ah7bx=Bzdh1%h7TJC*or`sj8h1^;*bi zvvxl3vZ4_8f;*-P#B^5F~t0X3G z`&nZdmOlCIs;gAMRTqb=9=w^ zzkA~f58K(_&b+O$eTeVnjTP`Yfb&eoZo-)eoT?H^v+DeH(Ae<0kNyI0NI?0Yx)dOD zoRM<E_f+(LWgk~@O?*xLe3D@$mcV(_#II1hq@R-EMrJ3qQCr?OT3TkD|J6p0 zuF&tFUu5sEYD=u=I_0wtfNg~#yrlSih)U@gxs3pj)MAD1Lz z_&*-!ZFYk&+3OVgM$612o3d%CzlM9P>BHi)mLx(c5k-kiS|+vUo7x1~MZ<5IjKAqn zRG01^GMNDoOr7>zJ8I&`q9U?oa&FlX|IucAY#9kWj0NMfrHe?~CcCyQ7FN#aLnU(C zn`Au4&QMTQZmllCDOM}8_Z^AZ?eqLiM|x=THwTGcUFtkoE)MM8+59(TlCNt!Gh38fG%f3h9S2*G8Yd&lq--0V{xM%T+ue|H$`Uga;GBZp0MW)0$0suPMDJf8>0KWuvU})BD|F}5j*grJlJ}i2+tl>p?m__K~ zud^@y`t`I8jamQraMFFwCh$4^&=9Lor@ZOh9gE-Z3Rajf%9~fLXn5qm-<$XMW#alo z9T^=PmV-4H4&3nRQ2#7#h;84pwS$5yovo?aFFj3cQtqaA(w>*S{j5!$f2J0~u8Qe5A*X_7$EySJ zyWH6=!nSclKG}%->tAAG;uj9S`$$O`9ZCw&Bn%*dG>GLj2Fq)go#E-w#j6xYZL4#D zogJ>y*Ms~e8*r774zYNZw5V}8UUj;b#OBCT!@mu&ae^^e3=eI@N7==HVg!@n(w-VO zva*zuT(~QGmr0bK^K3gp!A(D?k>@Iu{I9N({arGxTn1C|n~Edig+e8}Qy!JK){J}R z{ajo$b82RjUI;+Xb@WAJYbttsKTvmx+B5ry)C^r(K*VaC)X(>&l|Osz{Z z6+9l?_1||X_>)lw!^{ujGUrZE8!~(1@<~4|3#9_PyqH(+|9zKe&D2dCT!v67)4)MEac!{_VPi1MuNgXorfRLx$+v8M*=fa(z-J>j1Buj;BLG)cq7Rk%%blyr!a79CqY^%`_s)}B(@vx|-} zZGjRQI_{n|eHGhgWaTV9M^9JZ`{@_W1IK*RPHGXZ#`qN%w4O-m68ad2ihx9#NAen;>U-d1H6?keBghMl(v*@ z6%vfB`;uxnckRlnQC>n@tu8CbT8*rtiiX^ckG%!ssjw1l>9%Dmo2Ggb%J@yHxd>C5 z#=;0l!+<;O-@Eq|k~S(SgooXcqy`BJt$>fkx-X_WZ=l_~u$DN9H~S;AK_?Qvt|tvW2%t8sI0EeDKiZ;iVU0N?nJ8(B|#B-OSvy9 zO7E3`W^V(U-Mt9S(r&vfIk1}Wxe>Gsyj){0mm^@l6SiEWx3ynSO9ZN4znu){+=3O`?tB5~Ug;4nheqT`L?JV? ztc!ZY4}u$;!&$U5#BvsBCHd z(6D-Ay3TuJ=8{-D>*7KAX~$Tl3K*v}T;l`x9Og{caeGd!G6U={S2ZS=Zau$;QKiyH zKjT001{TfER9>C?aUkI=YehJIIu5~<+lB3dRs|Xwuk12E@-zRm`Y-Xrhl|tl(V6jG z_Uy1MA>kPr0hsNex{~Hh8++)~W;_=2r(Mr*s9TKgH@SDO@i+t9c_=DlAXc8m-At!qsV#P2fWE`%hs(SDBi6p zfKRxZYawOk9-FODL1eFoLw#3@>UeT0-Xv*Zx&48Vkezg#T7tey$XTy?yNUkJIbjp6hfz zotS)FBrG;sYM|w!N)XSEwt@WukQ4f=Rc6hP-eDcMcJGd)eSnko$0rh(bL0Po`ws79 zUf-bvfK)~1jrY0Egujl%GT#Zn2YU2aPk#QAM5k)ia4VI@z z%vhqtO_$N>W8`o>3!ZQ}ufw1B7I1TMRe}Z(wCUj*_BTMM3%+!3fMV_L;@Ho3 zd&QfAU9YdrED|4e&z^Q1PO)O4{pY%OB7;wmA6DLKvGr=lLXwkJ-1jO}KW7bf)Ii-tsH)bjlYo@R zui<7aJq4e^QQYZ0C*AvO0@9*J>ps0T-uyZEB&HjMTXO;|!d3uYOh91j7KG?j*5t3J zJ9u@RU453&HXZ5Nq3NAzk+9LT+FM`uZ(m#MkG#;HAKqdqB)fj8-aqzFe?!_d<3&W(+N@Oi*-7Tgaoy#6w9tT z@s6AW5e{IRoY^?Xm-8cX_RpG$niZOE)L5JoJ`)$ppFYquCQ`NFam zXUa`2)w$^-p^{Fs7NM%O0qd`ZHedRlNA2(tRcfkTS0xl`ZjM5yP4UY1cZ z+&C?tBWI&EPSjGf?WC-t<@fh^YE;Zm2b0tT{k%LD+aUufk`PMmtVQfgamN+`(M3ATn_$i)K~^PoRYPH&*Vn-#&Y+C4CM){YrwLil{_JK+44k^((`2| zO-s+|N32W#+%X^1>d5m&r5Q~ zn3YGb6O2G6pSK(`9*X~bKsmdR12p~=3vHZYAl3pK3T3ZwO=R?jU zy+mpvIx9-a-Y)svCumjkE4t`_AbTvZp^}ViFKkmD!?wp8AT_XaON(0B`^sT|#l|zt z1;rwp)0mp8nhQ0VXE~17PV+dVmqqsSWY?S&(ylC|b}nuiF@aaF21M08;ne(7dHjiZ zc>2OAhs7hDK^d7jDWP$S7n)`jxl=BCml!g~8klY8Aie;(X^U?dG=XO}JvHkR5oLb3 zB;@m{?yAR9jN3lDyoOA4ge&rZ7l*o-BjIS! z-LcDiLM9t0RI~DY%6ty@Rw1n5@ATT7ct`Wc`rO6ioFeZGp0K5-$FgkfKY~r)^p$Lx zbMp^XrC=i6UAQ6L)0Bh!bFRJk=x6VXS**5c&;=GfdEdQiQSQW=QgWwU_kDTQ;oov+ zP=Fk*7E2OJO@^F)RryB${l~n~qI++R&ud?$riz-ZG#IqvxQzPqrWt}P`^GpI0PyJ9 zoK8%I+d-RMT(9uX>Nb{~&mIf&SNG~vwt=%fJr?|1 z>Nrupy#1Ate-$C)A(IAUqQ@Q{`fsVT_`ua0VL{UFO+TWLWo?vfa>jRlIN`4+>pOL^ z3zA{K+;?JUl^3PX-7}GpI>-+lo&I$B%p;dL>e$Uvz+;>oV5t311x<+8FIdhL;%UYd zAs_u)>Nrt}n^!Myf8aQgBQko?@v-U@ELKCcPL8JF)rcWivk`ZG0to)dAzqN6RPRw=GBIZrR0-WRQ<_t4r5 zU_E6=Ups&Ymj6NaLdWa9Uea_svyT!ba*SCcx0$m=5Zr|5fK8{Vecz2j1Zz5UNko)T zN&cya^rXjmueNM6qV{X~4)UIFz22A1&T;OGV&y|Xkn;sp5Qy5qsfQ9P%;REq)*6 zwEMQB>_p~N=0xj1>(Qew@$zNV2)M34_n<%jtnm*F|F3Ye_{;)7eq^cM2FpV-mvU7* zqXRSLQ%akIh_fRoc1W71`LNRW&GL(5+)h^8c|=jOIY?vMRi$Gm{UBbIQnePQc!Lw4 z#Z%jQX9c;dM+^}Bg(O!l{jjzo3Zb-4^BqzCMh8uaGI7?SBu;5<6oZX%RVgHn>$CpI z&0-g*i|DLF9l+8;p8)pC0}BlU%Hy63u}{s?7#vWXIoxfeBjRD)JEmke>*oebbF z$&7Ga{3&%0b1&9vo(m6un*FNS^o{;Z^3$3GiIP`*Kz4~7Sbl)IV@dCdZ0D}bODk6k zdFj`GIz_KqledML3E&}lhC*0dJdoSwIF-ML^7ydKdJI72tb*M+~Eu|jmQ8-|Oq`(!}mWlW4HJkR9P&aY)ZgLY_p1r;* z97Rk7)mqq}iqSFMrq@ZY{DU+-~Ji-xO+q|#`)RSLEq0dTIDiEyY>rp{aH z0NxZ$uyuuCd81l8!q!dsEcT^cA3f} zFJbEl+p(VZsZKDvj$7}hIkW$`8K^YDT{6x&lhq$R*7e5m`Vp3`DGa9ZwrmTp*{cP}4uR4Ba6oh!1GrfBrtxFwhn(y-^2bM>nqZcCA9vqD*Jncbi8&|j?_9Xyq&8BRk zn^k`)I|3Hv54zw+U213Z0%yjyo}L~;mVDYx7`)?XYc`2h$z`9t)u(l^*6LFvFl;da zVZKJ{$mHJ8&0Tw)FeQUXnnT96>+QoWjEwCh!ApBaXXcvN)ORz;xs7LPkoIkl$q;N&OOL0^H|S!`7y%zC9b%ymR|Ni^ zOwLT>K-=}SSLk4ctnF!3Z{-%ieK0JCL~I5IZevDC#CQLZh|YW%p(63lZ2BAa%aCmD zSFb+Zzp-TJE9FW7%67X{rQ81-kV9MdDnnVKauqADmP7O3_*|;bw?o~d(g2) z!_l_`sWhw>ezy}o&#<^9TG@qfbvWM!*W@dQ-k!=8UuPan967#ZG3|u%+|7-Rhpq3M z>%e;^=_@PNZRMw%$fL9cDQlr~7tu-$q0fUd2(l(1OrESS)^TGE1B2>B|8481WB;8* zqK49!Z9=^`^{q=x#~xn03wYv)LEkXjseLVQdhX4pnbuLOkYN!HGGe-dyJ$ zu{a%@)Kgcgyih}SiAuEkZkhD)IumQO9GE6&Q1!WI4YgtQU587O%^Bb0z(;hgUetUD zw=k&*zCjm3pdnYf4`H{vZ}|cTLGG=CK{9v-Mvm;=+nLyVmq9!XEN$u+{-Eik^-S++ z6n1h)2uCjA;QNnb#3C@;tVapUmImNpZxhmvTmp|ZV4{wxw1}eFt#qKxZP%I8TcZzB zSg1DQkd;@0N58pbW+IaKwDU)>&pR|%kd=Rm# zEhtpTo}fagl9(GWYWn?dD(bT2s_L=(A@kNx5$#HLvc1#M^kP5E+vzKKfg~S6pm$38 zg+*2HXf=lc%&)jwf6p-M@a3>8yV7j&2yH1tz!e~%yg<*U?X@5KYk7pC9x`Mq^>nC~ zAMaVCq3?o;(9tw+DoEp4%DcXgJF2p-@uWI*pxi3?h=1G1d(r^WrZKPD|6Vim^FcCn zIv}^egf!j1Xt_c};FZl@i7pX&n{?|WXH=L3k{ntJn0C~PM0?efr^m@Ka~V<_9wf6L ztO>mpS{h$>y(>s{o4$nm<83#pKMhzLfqfMkg@ITqExYz|(i6F3)nKV4nkl@LujUu5 zH*v~Qed0LrUc6+S%xlqR)^SI4gcLpc>Umg3eROLbHLFl8YdoU%Q{GH)J)UYIp#)e2IIsC$R=byHZi020 zf*}k?(}Mm0|G-XjmMELYhmu+U#J3l{iq3zrR0ku(tzRo^y(Eyq^qv&cf&n~?3eT>Y ztPA`|3=?j zfs4`x8Hq+b3k(bONjFR5r-xf)1kyHWfJ@BM(4ydkW*y(jUA7@%+8N95-@o>n80N>R zpmX!P#PnnIao-(L;w1-AY>{PJVCJ(anhc2~ZKvAB|8eE-t0IE3B>MiMFC!z4; z`+jJ;wTc>CBo(S3Ud|pMUf(3QJ(yMQJ)7R+Dad-Hn<*NOa2=Xcoet&hx9Rys_Z&Zc zzM%TU;#5~#!4h!}9ABu<7-`wpGrQ0lTllZXi+h(&eB8X^j~6p*-#xv#Gk*WJ-TTnTsPRm}CPneVBHoj*I#{gtKF=(fae1J0DdZ>CB0C-}KGM!n0c zj6S)mYHY|x!xR$<6eQG3m7F!heRcl6MqlHFJ#LklCM~1S^aw>uxx}s%+!)rGT!$wm zO$iHc*mvYDJ`dHbdfmD$vHfPcO+aSY?8m=TDwAu2}J!NxE3>Pm!#5JNzVI`%O{JPM*%RXqzx6&0TRljhsp@vpuQN)OLY|okn}Ds?_%F zZKZ78bx}6h@6al)lBND2?6R14N)?P}ngt)mwju`p2f!8xtwBkDYv=zKwBjY@Bm@sVjQWqJYOM-HhkD#@zVJB?~@!j4|9L zciZTF?bJ5VBB;mDXl9w!D9AA7b49*-nr0Ts+N*jhOXFdLg4G+_l#LhE^3u&BH{j)g z)0-e~I6wci=<2lee7Y=Bx4X`A`d#nIjVYDm@iLk|LY)43jDLoV%Pnnh|6D>+>VAuoiM#y>{R)h1co&hcR3Om0*}8tzGHhrRDarm6B~L4JIOsA{Kt25 z?k=p?2JLaD>G7@=2@ESF_wT42s?ItnW#we`rr(@3B*Hny`WF!2cs8lOdw3zKJ#i%^}CnTpSG068#8a- z$;0DQ`;Z*)K#(WiITc24jTUgqRBcu5#W_FxRh%VI`sw-z^W`cN$?MPO*=Fmr6KViw zLZ-;J>r+n5YX*Aw)1y;$lTMGn~yxvhct8-H|+esg@$;`o14j?vWq)Bk|R z^&e7m+Ux(YcGF~cLB^0j&cT~;8p)sB^4|<(|37$L0(98J+Eur`jYy~A@8a3n*?ZXK zrhfFD$Il?bjrScPHLZiJZ zHA_Jb(3j$3;T!(H4&0;u6U$3KVYK*9$^HMYEZ5W<2Q=(MNl21eqcBPnRFIE~_SWZg zbOO=rDdH5{trKXwWi2g)a3qU`%!y-4N){FtNtLCAh2K@R9fHA{Lq~@Vl4WgSL1=zP z34b++v0nrPXeU)ZFgWy{bf`nNo*<&lr$DlN4uoXLm2Vpuh(%D=y01=|l%~$~XGA7) zi@JLavk8J2Wuq0K!$^rxU6x%6N=&WCdX&-Z1R2O@ z(X>SsL}8>|7AG%noVx3>B+rWu{T8UvR**0P9g6VH!NAf0iCAn+INAoUg`0rtACh}7 zHki9?czir&czSR>x)_rJC^&*a$ath91(!5aCT$thIun+52Bhd)Lc}C6EKT)8({4H6 zBj+U+W=9Sd+`D&g-(PSGWO{S!jfpAP z;iPXIiVRXgr@t^yT56%0I;SSHf8p1O;qt4fZAJXs+7`FQz? zz+(QE-Ey_KM8wnSq^$~C$8pGjwMNW#^c;d)9;ko8LXt#Jw>COG54>u83=%d; zr|MVk?z+7>24()lB}9cW=>k^U2hO9MoE(x#53X=k8BCIIdX_Z$!o1C+>aPlZ{`6@d zC+C^lw{PQ+l%sbRnhoha0})sf>5V7tvO_sSP}G&|dz$@JJZTn<-m{~^OSW74+>(?vE%ReXGv9M5uW+{K_ygiP^0AJJwHqjs5_rw7*fIyDa zt6~yXqh04)Q#tk@IiiLVF(r^$acZ*r>tburrD)i+K&jJUMX5w_zUu1BM%Wep`RymA zrHxTRPePkRBZOTB-Ixd)AWj0m!x)@!BXD(8DX#L*`^u((KKE;5f$s#P0N{P4 zyEhhyluRK{+aqROnXXDe4w$&5Zz`vlX(HZxk`NqCf7Qf*Jr1aH;;@3?kZcE{+@x4s z6Zb7-Zl1Tda)?FgyMg$2qV#mabBi22yz+a}> zT{p<3KXwaE+d4}9A`!q=1nt6pYZYZbVQc;?pH|Cx^B3MUotqvzBQGDLM9x%mv223F zj7_w9(iu0Bpbl}BuHKVt`KGazG|=0uh4k%icLnjZcE+i|z@3C92O-`Vx4J1b#Dh}5Ws>SiPHJh&$>VHDNo%?=ZOxTGP#8w^LgzW1OK zF-h~>fyW~XHBg7~=&Ho0i_FTLKYynPX4o{?M7tq*6YGbs?j9u2hW#^l|+; zFERV?g-pcrhk^w=17ct)>~3#sBbCPaw)Xb3rUerN&CNIekV3kHtkBI&4@?mK&kEI0 ztk_~&;3=AnTg6m(^xRgynM~2ltSmpXKfJuXdtRr9O+{6=vfB^d9%2(i@_H2}aAty` zOxMO01<9TH!w{J50|VOOb4!8`C6vW#W^^Prp>JgU^M$br0d(TS&@8ry;S{JU1gl9d!q2+hDK1Z*D1y?!TqGL+2#QhKl zjNiHi3TNH4xVUeo*5?y0h8LiIA_^rgXWUk<-yVqEla!+I4P|=zt_J%0Jt%ZITrFEF zx+KEQ%VC~g%ez})Sk`iO@|tdKO^xT?&F`dJW-F{A8H3y=ems8u+@?F<3j9ndA7)WO zs3g;8(^r?4C|6k5z`i=>a6(yeWZSBbBK@g()Te_B`fM`hhdpz`&>s*KYkK0BS6g^^ ziDjb^psr0J;Y|Pw7pUYo5}!Zx=lZzAzgLYkr~c5}Gx0*!UrDutA=oSF=SAZ)v3-phs-g0J zhpQupzYl~pMwPeXV=5>p;^;=z-UTRZkKS#(2?Y$S!vAogPDh<6DWt>j>*lX#6}@?m z^wugau0Rz*62Lnm?vOj*=`XoYD51Gn8)+I-)6-`-vk%P#9=l86z2KmrE|540TXsA{ z)_v&hWvg~f+@seeMIxnR>`c{)hR?lDx&n_oMa?%06uE?UpC&AJvi0}w-)AcJxb^FF zVcpxeZ_T1NlwHve$cRAY39`oWZ83wQ*&dq3T}Ip4%J2)*XehQ@=EH{%C<8hdJh7%h zN8dF-!l_9u`+EBm>1W&Df;U2zGy4wvpMR1}IMAMcIg%!W!Wh0X(f8=RiUzCiK4N{o zI`RzECWLO~z7&Rogl62bXwYhvettHVz7bO5y|jxWqz2;n&}}Qt7pqnB%S}w|^RRGS0u3CjCT7)7#JwD9Wh-(nzYT(C9o1P$7E3-@0#- zm+)pzi<_}*ejatKN&gi70rINA%Dv3Cc6M}B@mA`(ib>zRzvDhc(h%cuwQ?9?F73=0 z9uzAMGbk7KHEN3R@WfJc@3mC5NAgPkS4No~f>+<5#7-+(;Cu$8CMlOjLuw8gw0CIJ z&knn;KYkNsTNUXkDJfgI)GRLC+%1D53i$-18+~={=Y{4@wv$207?k>cNBWTgVJo!B z&_qHVngCb8&Wb+8?x2LWrsykOS>$m*Kqr?LTE^pCb#1;|SYPK~w=;W+pmexREnBnMMys`tJmC-<{<2G6!Eq)Dbw&=ug?okVC*wGXo!5gSe4n0Y`DX5x9w>6ilw-8A zBAlIRgc8YBd^)V+nK~{PX-0}t6lE|p5#~npk|U*p9uXT-mqB9cuH4E+%*6co$j8?U z+tLp!ugC|rUB26eO-voul?R9wk=t06Dt3+&5X)|8XjmKDqWUuI_wxHW^{N@hI7P zUy&Q7YT5Ld3{GV`9On>X@h6nYx}*Oy%DxMago6h$Z7Yvf6fyLSSZ{7juoXRY=)0OY zHXS{S?TbI`jx9yg>rY0#1muUTRqoo}!t~XiePJv)=F)ARqxq~1OON&G=m#u7Amqm% z*tQEKs2HO4aGQ+G;q1ff)R=xRkVoeC{-M?ay_EX)R?8WiIb?sjv=`0p;=Y*CCaxJ> zB6sH}C-$xe1cU9@7Yer9z|O@ zRGQ&-V0wPlnrnj2JRh2vh_xVA$xLS3*<-3aVIC|6Ge?Ys3XdL0My zaIAkDQvGli^KFe3TCOP>;9v)8m>0koZmVmMc>Tp59ERK^%qM7pe8AHn__PHvT*7Zny( z2a^ALYO@a_RbzV?oF?yrUB|5V2Kqv?2{1BM6-2SIgJGexVztD;+EcIAoO(^ytNs}c=E9y#yr#b}ni&k}rd-;kf{GKQj6 z9KRNBU#E0{6tBk`EX$aR3C$R)`_Hg?`uIeGD>zrpX}UYK*thzUe;sO23lExyc>4Rt zpq!YQ4!bd2N%JNf)TfY;>MrSLyfH!3Q&UE$#Do1V7d*c1)j#^K%le@_a*()}Ka7fX zKmDv(6q3@d+P-Yob$}^{i(hs{CBSoiDKY#SGj257%%TCgpMJ<}hfq$qg=wzekp(Mo zh;z|zuVOog2HU$CB~Jc>3O`bHUGWCmme6+#J4`1A{n~qEJ-c{jnfHb`W+O5^Ma;nAXPBr(R<7sCVolEL1qC?}$H!jU)|$!39S82Ekd`fAnbW_T~uX z0}%6BXN>Wy-#bAJQAt`qqjWd|wizk`%b{A}qJ`t+6*o6)!|EZ-6@U_4`rv`X7Vd%yar;TRi9pVy%sohxwgqvGd0jtghgF&9ic{cXFqa&54Pt{-(318R+FqjzQgagH6tppes0B zu-^fJ~vnTEp7!{EGnD{|T^TZV6}r--G?QH3u9L6gvGs!=U2&>|`$I zm`FovIPM$-J5UCjft>i?`0pwT0X+Af5Xy#!hr0#A5dQ;c>bZ3krkZ*YbpNQ>E)geD z!5w$){KN1>V z!aJ%Q?}TBh)&exm>%EJA4ss9~4%60U3<@O@v0@w2-YMPIUywXGEGI1MR#&A*^$2(*8DL4R~K4^b`6EO1!U&_jACWl%D^om|7<{gkB zhH8Xz?o4lIP1 zfXxUd2``$HkMDw88|WKRlT#I|t<94?d4+Ky1YHoX0-Joz(Rw3$DBV-FyT;IbOc=3P zaRRbC@6f?X0JP)@RTYXf7t#h@+SyVH*GBp|OL$@;zf3v6jv#<~(BxX&Rca`=htG}T z>$e0b5EQKL?u1e4E#Z_67{(-1(6Zw!uBn4D*co>_V%q~7}UXBf#rOvbQBV@S5e63Z29#)0IaT$Xo@`%hwjeL=P zQ46|nR6?@qIslD=33@fH2j}h8D$?IWa>LN2Hz zT3=t^tp*?=@z#jGr!js@Y5C%BZ9=^Y>E4|$EiJvHc;iDUpjg+8GT^AA=A$h51B2M; zi;8Jnu1j?YUBG2j>q1xF||Gi1FVdkvW=Vc?n-i5nof)Mey6u z7#I7#$|#zdncXk&G^@4H> zf`OJUDtO?4ENDpbZLwyutg6@bRc`6u)J(PbxBUa=Gfu@~oH>jz3+^)eI#icc5NG@h z>$Xjsbhx0WtAiaxST+K`F9`nN*4Emp%e8Im*7Qtp^M#=cItIBjeA2`&QYD(x@)A@b z1(7ut7t1n8%vyx&Y9tx!aT)08K}n~5opXXaDtx2gcipK=U$MGs*#Lcukul-yz1YP1 z!BNYOE;!C9tO;Ne+r4Mc4myDK^I&K>!&;BV1EFICz)PMf1$qfQOjG2?!sBPp_+PuS z97Xiu-E~vsHAF3T>~agjCF}yPi*0wXXClgYd>qYE>c>d46>>J~GvRQjG#J3X@m(4M z@k-8paML#j$T+GiNq@sp03Yf04Fs2ZT~SdXU|PrTchoY!y$|CZn|dXNQ%m!2LB-tn zc)emPJWu3B4=7CVVGbuJCsf54!EKONV0#q=i?(TaWxv}$3AF@8-qnWeJ6kM968tXM z=(2#6As(usO06MyWE4T|1VRMygBRmJ1-G)H;DmUpsQ8khh`%8sj>AO*lJxvg478|v zqT%_p`2dW^glg&J%+dW^r2iYpeBs(0fw+-b#lThx{!&?1yIpUHh2=HFikG4V!hltC z6d0&b)ziqI41Ar)1JdIK69=43x?$2|b7EkjF~`>T*#Pm^&1x&dAuRc*x*Eq-r>iQ` z6QFMNDt7yC-QAA6K~O9YY^DZ$SHFfG(GOmZINv}9g6A7xb`kUwNPaK~Kwi(Jw*LB+ zXw#>jHC%L{r#jjPx58Ino1BJ{j(vSA$@+$kDJm-Z`m?=3)MRq>GVZbzuzUzQ6$tCt$^k^ Date: Fri, 6 Dec 2019 15:22:14 -0800 Subject: [PATCH 119/365] Minor fixes to the code snippets. --- rfcs/20191206-tensorflow-lattice-v2.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/rfcs/20191206-tensorflow-lattice-v2.md b/rfcs/20191206-tensorflow-lattice-v2.md index dfdc38bba..2e2d5de9d 100644 --- a/rfcs/20191206-tensorflow-lattice-v2.md +++ b/rfcs/20191206-tensorflow-lattice-v2.md @@ -134,7 +134,7 @@ This layer applies a linear transformation to the input tensor with an optional bias term. It supports monotonicity and fixed-norm constraints. ```python -calibrator = tfl.linear_layer.Linear( +linear = tfl.linear_layer.Linear( num_input_dims=8, # Monotonicity constraints can be defined per dimension or for all dims. monotonicities=1, @@ -180,7 +180,7 @@ This layer maps integer-valued input categories to float output. This layer supports partial ordering and bound constraints. ```python -tfl.categorical_calibration_layer.CategoricalCalibration( +calibrator = tfl.categorical_calibration_layer.CategoricalCalibration( # Number of categories, including oov buckets and default values. num_buckets=3, # Output can be bounded, e.g. when this layer feeds into a lattice. @@ -206,7 +206,7 @@ This layer support monotonicity, unimodality, [trust](http://proceedings.mlr.press/v97/cotter19a.html) and bound constraints. ```python -lattice = tensorflow_lattice.lattice_layer.Lattice( +lattice = tfl.lattice_layer.Lattice( # Number of vertices along each dimension. lattice_sizes=[2, 2, 3, 4, 2, 2, 3], # You can specify monotonicity constraints. @@ -227,7 +227,7 @@ This layer concatenates multiple calibrators to act on a single multi-dimensional input. This helps with construction of sequential models. ```python -model = keras.models.Sequential() +model = tf.keras.models.Sequential() all_calibrators = tfl.lattice_layer.MultiCalibration() all_calibrators.append(tfl.pwl_calibration_layer.PWLCalibration(...)) @@ -250,7 +250,7 @@ every update to the model parameters. Alternatively you can apply faster partial projections for each batch and a final strict projection at the end of training. ```python -lattice = LatticeLayer( +lattice = tfl.lattice_layer.Lattice( ..., monotonic_at_every_step=False, ) @@ -278,7 +278,7 @@ various constraints about the model shape for each input feature. ```python # Configuration for a lattice ensemble with output calibration. -model_config = configs.CalibratedLatticeEnsembleConfig( +model_config = tfl.configs.CalibratedLatticeEnsembleConfig( num_lattices=6, # number of lattices lattice_rank=5, # number of features in each lattice output_calibration=True, @@ -287,19 +287,19 @@ model_config = configs.CalibratedLatticeEnsembleConfig( feature_configs=[ # Numeric feature with PWL calibration. # Feature type is inferred from the corresponding feature column. - configs.FeatureConfig( + tfl.configs.FeatureConfig( name='age', lattice_size=3, # Model output must be monotonically increasing w.r.t. this feature. monotonicity=1, # Per feature regularization. regularizer_configs=[ - configs.RegularizerConfig(name='calib_hessian', l2=1e-4), + tfl.configs.RegularizerConfig(name='calib_hessian', l2=1e-4), ], ), # Categorical feature. # Feature type and vocab list is inferred from the input feature column. - configs.FeatureConfig( + tfl.configs.FeatureConfig( name='thal', # Partial monotonicity: # output(normal) <= output(fixed) @@ -311,11 +311,11 @@ model_config = configs.CalibratedLatticeEnsembleConfig( # Global regularizers regularizer_configs=[ # Regularizer applied to all calibrators. - configs.RegularizerConfig(name='calib_wrinkle', l2=1e-4), + tfl.configs.RegularizerConfig(name='calib_wrinkle', l2=1e-4), # Regularizer applied to the lattice. - configs.RegularizerConfig(name='torsion', l2=1e-4), + tfl.configs.RegularizerConfig(name='torsion', l2=1e-4), # Regularizer for the output calibrator. - configs.RegularizerConfig(name='output_calib_hessian', l2=1e-4), + tfl.configs.RegularizerConfig(name='output_calib_hessian', l2=1e-4), ], ) ``` @@ -327,7 +327,7 @@ passed to the estimator constructor. Feature types and categorical vocabulary list can be inferred from the feature columns passed to the estimator. ```python -estimator = estimators.CannedClassifier( +estimator = tfl.estimators.CannedClassifier( feature_columns=feature_columns, # same as any other estimator model_config=model_config, # defines model and feature configs feature_analysis_input_fn=make_input_fn(num_epochs=1, ...)) From 0e514fea1e15ccf63f4254b88cb40a2495d5f6d7 Mon Sep 17 00:00:00 2001 From: Mahdi Milani Fard Date: Fri, 6 Dec 2019 15:30:02 -0800 Subject: [PATCH 120/365] Minor fixes. --- rfcs/20191206-tensorflow-lattice-v2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20191206-tensorflow-lattice-v2.md b/rfcs/20191206-tensorflow-lattice-v2.md index 2e2d5de9d..2f5b3971e 100644 --- a/rfcs/20191206-tensorflow-lattice-v2.md +++ b/rfcs/20191206-tensorflow-lattice-v2.md @@ -1,4 +1,4 @@ -# Tensorflow Lattice 2.0 +# TensorFlow Lattice 2.0 | Status | Proposed | | :------------ | :------------------------------------------------------ | From ca8039f414e22148373b761680c30d314ce06a6d Mon Sep 17 00:00:00 2001 From: Yuan Tang Date: Mon, 23 Dec 2019 13:48:25 -0500 Subject: [PATCH 121/365] Update SIG IO R package release instruction (#192) --- sigs/io/RELEASE.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sigs/io/RELEASE.md b/sigs/io/RELEASE.md index 5576f840b..f8647e18e 100644 --- a/sigs/io/RELEASE.md +++ b/sigs/io/RELEASE.md @@ -45,10 +45,11 @@ twine upload *.whl ## CRAN R Package Release Before submitting the R package to CRAN, manually perform and check the following items: -* Make sure the documentation in `README.md` and `vignettes` is up-to-date +* Make sure the documentation in `README.md`, `docs/`, and `vignettes/` is up-to-date * Update `Version` field in `DESCRIPTION` file * Update `NEWS.md` to include items for this new release -* Run `devtools::check()` and fix all the notable issues, especially warnings and errors +* Run `devtools::check()` and fix all the notable issues, especially warnings and errors that appear +either locally or in [CRAN package check result](https://cran.r-project.org/web/checks/check_results_tfio.html) * Update `cran-comments.md` to include any unsolvable issues from `devtools::check()` and other comments/responses to CRAN maintainers * Run checks on R-hub via `devtools::check_rhub()` and on win-builder via `devtools::check_win_devel()`. This is From 42714cb37f26ed95055c6664f783cb189b82ffdf Mon Sep 17 00:00:00 2001 From: Frank Chen Date: Tue, 7 Jan 2020 15:12:48 -0800 Subject: [PATCH 122/365] Add tf.data Snapshot Public RFC --- rfcs/20200107-tf-data-snapshot.md | 368 ++++++++++++++++++++++++++++++ 1 file changed, 368 insertions(+) create mode 100644 rfcs/20200107-tf-data-snapshot.md diff --git a/rfcs/20200107-tf-data-snapshot.md b/rfcs/20200107-tf-data-snapshot.md new file mode 100644 index 000000000..cb0105844 --- /dev/null +++ b/rfcs/20200107-tf-data-snapshot.md @@ -0,0 +1,368 @@ +# tf.data Snapshot + +| Status | Proposed | +| :------------ | :------------------------------------------------------ | +| **RFC #** | [193](https://github.com/tensorflow/community/pull/193) | +| **Author(s)** | Frank Chen (frankchn@google.com), Rohan Jain | +: : (rohanj@google.com) : +| **Sponsor** | Jiri Simsa (jsimsa@google.com) | +| **Updated** | 2020-01-07 | + +## Objective + +With ever faster accelerators available in Cloud and hyperparameter tuning +consuming larger chunks of accelerator time, TensorFlow users are increasingly +finding that they don’t have enough CPU resources to keep up with these +accelerators, leaving valuable accelerator resources idle. + +To alleviate this problem, we are proposing a `snapshot` API within `tf.data`, +to allow users to transparently persist the output of their preprocessing +pipeline to disk, and materialize the pre-processed data on a different training +run. + +This API enables repeated preprocessing steps to be consolidated, and allowing +re-use of already processed data, trading off disk storage and network bandwidth +for freeing up more valuable CPU resources and accelerator compute time. + +## Motivation + +Large TensorFlow users have indicated that they have complicated input +processing pipelines which saturate their CPUs before saturating their +accelerators (TPUs in particular). Since they often experiment with +hyperparameter tuning or tweaks to existing model without affecting their input +pipeline, they are asking for ways to avoid similar repeated preprocessing of +data by either saving a dataset or caching it to disk. + +## User Benefit + +Users will be able to transparently persist partially or fully processed data +from `tf.data` input pipelines to disk or Cloud storage systems, and materialize +the pre-processed data during subsequent runs from the same pipeline. This will +cut down on the input pipeline processing overheads during second and subsequent +runs. + +## Design Proposal + +We propose that we add a new `snapshot` transformation to tf.data. To illustrate +the usage of the transformation, we can start with some sample code: + +```python +dataset = Dataset.list_files("/raw/data/*").shard(num_workers, i) +dataset = dataset.parallel_interleave(TFRecordDataset) +dataset = dataset.map(my_preprocessing_fn) +dataset = dataset.apply(tf.data.snapshot("/saved/data", options...)) +dataset = dataset.repeat() + +model = ... +model.fit(dataset) +``` + +As we can see, the end user simply has to add this transformation in order to +use this functionality. In essence, the transformation is similar to the +existing `tf.data.Dataset.cache`, with the key difference is being that, unlike +`cache`, `snapshot` is intended to re-used across different executions of the +same input pipelines. + +### Proposed API + +We are proposing the following API for the snapshot transformation. + +```python +def snapshot(path, + compression=None, + reader_path_prefix=None, + writer_path_prefix=None, + shard_size_bytes=None, + pending_snapshot_expiry_seconds=None, + num_reader_threads=None, + reader_buffer_size=None, + num_writer_threads=None, + writer_buffer_size=None, + shuffle_on_read=None, + shuffle_seed=None, + mode=None, + snapshot_name=None): + pass # Implementation goes here. +``` + +1. `path`: Required. A directory where we want to save our snapshots and/or + read from a previously saved snapshot. + +2. `compression`: Optional. The type of compression to apply to the snapshot + written to disk. This will support `GZIP`, `SNAPPY` or None. Defaults to + None. + +3. `reader_path_prefix`: Optional. A prefix to add to the path when reading + from snapshots. This is useful for filesystems where configuration is passed + in through the path. Defaults to None. + +4. `writer_path_prefix`: Optional. A prefix to add to the path when writing to + snapshots. This is useful for filesystems where configuration is passed in + through the path. Defaults to None. + +5. `shard_size_bytes`: Optional. The maximum size of each data file to be + written by the snapshot dataset op. Defaults to 10 GiB. + +6. `pending_snapshot_expiry_seconds`: Optional. How long to wait (in seconds) + before the snapshot op considers a previously unfinished snapshot to be + stale and starts writing a snapshot from scratch again. Defaults to 86400 + seconds (1 day). + +7. `num_reader_threads`: Optional. Number of threads to parallelize reading + from snapshot. Especially useful if compression is turned on since the + decompression operation tends to be intensive. Defaults to 1. If > 1, then + this might introduce non-determinism i.e. the order in which the elements + are read from the snapshot are different from the order they're written. + +8. `reader_buffer_size`: Optional. Maximum number of elements we can prefetch + reading from the snapshot. Defaults to 1. Increasing this might improve + performance but will increase memory consumption. + +9. `num_writer_threads`: Optional. Number of threads to parallelize writing + from snapshot. We'll open up `num_writer_threads` files and write to them in + parallel. Especially useful if compression is turned on since the + compression operation tends to be intensive. Defaults to 1. If > 1, then + this might introduce non-determinism i.e. the order in which the elements + are read from the upstream iterator are different from the order they're + written. + +10. `writer_buffer_size`: Optional. Maximum number of pipeline elements to fill + up the buffer before writing them out using `num_writer_threads`. + +11. `shuffle_on_read`: Optional. If this is True, then the order in which + examples are produced when reading from a snapshot will be random. Defaults + to False. + +12. `shuffle_seed`: Optional. If shuffle_seed is set, the random number + generator used for shuffling (when `shuffle_on_read` is turned on) is seeded + by the given seed. Otherwise, it is seeded by a random seed that differs for + every run. + +13. `mode`: Optional. The mode at which snapshot should operate. Valid options + are `auto`, `read`, `write`, and `passthrough`. The default mode is `auto`, + where the snapshot op will automatically determine what mode to operate in. + + 1. `write` mode forces the snapshot transformation to write a new + materialization to disk, regardless of whether a complete and valid + materialization currently exists. In other words, we enter the **WRITE** + state immediately. + + 2. `read` mode forces the snapshot transformation to read from the latest + version of the materialization on disk, regardless of whether the data + stored on disk is complete and valid. In other words, we enter the + **READ** state immediately. + + 3. `passthrough` mode turns the snapshot transformation into a no-op. In + other words, we enter the **PASSTHROUGH** state immediately. + + 4. `auto` retains the default behavior of snapshot. See the "Standard + Kernel Workflow" section for the default behavior. + +14. `snapshot_name`: Optional. If set, use the supplied string as a named + snapshot name instead of introspecting the data pipeline and automatically + generating a unique identifier for the specific data pipeline. + + 1. Instead of generating a new fingerprint of the input processing graph or + and `run_id` (see the _Detailed Design_ section for details), we will + use the `snapshot_name` to uniquely identify the snapshot. + +### External API Guarantees + +Externally, we guarantee that snapshots written by a particular version of +TensorFlow will be readable by that specific version of TensorFlow. Eventually, +we can also guarantee that snapshots written will be readable by all future +versions of TensorFlow. + +We are not currently handling the case where workers do not go through the +entire training set at least once. + +### Alternatives Considered + +An alternative proposal for an API would be `save()` and `load()`, where the +saving and loading of the input pipeline would be made more explicit, avoiding +some of the logic needed in determining whether to snapshot or read from a +snapshot of a model. + +The downside here would be that the user would have to split the preprocessing +and training into potentially different files, and users would be forced to +select whether to train or preprocess on their own, which is not good. + +### Performance Implications + +* Do you expect any (speed / memory)? How will you confirm? +* There should be microbenchmarks. Are there? +* There should be end-to-end tests and benchmarks. If there are not (since + this is still a design), how will you track that these will be created? + +### Dependencies + +No new dependencies will be introduced as part of this project to TensorFlow. +Dependent projects may be able to use this additional op, but there should be no +significant changes otherwise. + +### Engineering Impact + +Binary sizes increases slightly with the inclusion of this new op, and this code +will be maintained by the `tf.data` team. + +### Platforms and Environments + +This op will work on all TensorFlow-supported platforms. We do not anticipate +this to work on embedded systems as it is not useful in resource-constrained +environments. + +### Best Practices, Tutorials and Examples + +A user guide for snapshot will be published to guide new users in using this +feature. + +### Compatibility + +This introduces a new op, which will impact future backwards compatibility. + +### User Impact + +A new python function and a new op are the only user-facing changes visible. + +## Detailed Design + +### Implementation Assumptions + +The following implementation is based on the following assumptions that define +the MVP this is designed for: + +1. We assume that at least for one pipeline run, you can go through the entire + training dataset and be able to store that data on disk. Otherwise, a + snapshot will never get created. + +2. In case there are multiple workers and the dataset is sharded across + workers, we assume that the number of workers remains the same from one run + to another. If the number changes, we’ll trigger another snapshot. + +3. Any `repeat`s in the dataset should be moved to after the `snapshot` op, to + avoid writing large (or infinite) amounts of data during a snapshot writing + run. + +### New `SnapshotDatasetOp` + +To implement the transformation, we are introducing a new `SnapshotDatasetOp` +dataset kernel that will implement all of the functionality in TensorFlow C++. +Python code is mostly glue code to pass relevant parameters into the op kernel. + +### Internal Directory / File Structure + +Given a user directory path (e.g. `/path/to/snapshot`), the directory will look +like: + +* /path/to/snapshot + * `fingerprint`/ + * snapshot.metadata + * `run-id`/ + * 0000000.snapshot + * 0000001.snapshot + +The `fingerprint` is a hash of the input processing graph. The `run-id` is +unique training run ID generated. + +### Standard Kernel Workflow + +_Note: This is an implementation detail, and may change in the future. This +should not be relied upon except as a reference to the current implementation._ + +By default, the `snapshot` operation will, upon startup, make a determination +using the following algorithm as to whether the operation should be in the +WRITE, PASSTHROUGH, or READ state. + +1. We will compute a graph fingerprint containing all the information from the + Dataset preprocessing graph before the `snapshot` op. We’ll use the + `AsGraphDefInternal` method on DatasetBase for this. + +1. We will attempt to enter the corresponding fingerprint directory. For + instance, if the computed fingerprint is `f-abc123` and the base snapshot + directory is `/saved/data`, then we will attempt to enter + `/saved/data/f-abc123`. + +1. If the snapshot directory is non-existent, empty or it doesn’t contain a + `metadata` file, we will enter the **WRITE** state. + +1. If the snapshot directory contains a `metadata` file, we will read the + metadata file. + + 1. The metadata file contains the following fields: + 1. A training run ID + 1. A boolean indicating if the snapshot is complete + 1. A training run start-time. + +1. If the training run start-time is more than the (configurable) training run + timeout (set with the `pending_snapshot_expiry_seconds` parameter), we will + enter the **WRITE** state. + +1. If the training run start-time is less than the training run timeout, but + the snapshot is not complete, then we will enter the **PASSTHROUGH** state. + +1. If the snapshot is complete, we will enter the **READ** state. + +#### WRITE State + +1. We generate a random training run ID. + +1. We write (possibly overwriting) the `snapshot.metadata` file. + +1. We proceed to create a subdirectory containing the training run ID, and + start writing data asynchronously in chunks. + +1. At the end of the dataset (when `end_of_sequence == true`), we will check + the snapshot.metadata file to determine whether it contains the same + training run ID. + + 1. If it does, we set the complete bit to true to finalize the directory. + 1. If it does not, it means that someone else is concurrently writing the + snapshot and we lost the race to them. We delete all data in the + training run directory. + +For the current implementation, we will store the data in chunked TFRecord +files. Eventually we may move to other more higher performance data stores or +support additional storage systems such as Cloud BigTable. + +#### PASSTHROUGH State + +1. This is a no-op, where we simply pass through the tensors to the downstream + operations. + +#### READ State + +1. We will read from the snapshots contained within the subfolder with the + correct graph fingerprint and specified training run ID. + +1. Optionally, the user may choose to tell us to specify that the snapshots + should be read back in shuffled order. + +### Concurrency: Handling Multiple Input Workers + +If input workers are sharded, then they will generate different graph +fingerprints as their shard indexes will be different. This will result in each +worker writing to a different subdirectory. + +If input workers are not sharded, then this will result in a race and +potentially multiple workers writing data (still with different training run +IDs). Eventually, if each worker finishes, we will be left with one copy of the +data as all the other workers will determine that they have lost the race and +delete their own copy of the snapshot data. + +## Questions and Discussion Topics + +* Should we implement this as three ops (a control opt o determine whether a + snapshot is to be read from/written to) and a write and read op to do the + respective operations? + * Pros include: + * Modularizes the implementation into smaller chunks + * Allows someone else to do the "control" + * Challenges include: + * Where/how the "control" runs? + * How do we construct the dataset graph properly? +* How should autotuning be integrated into the snapshot transformation? +* Are the configuration options well named? Is it possible to consolidate some + of these options? +* What other compression/decompression options would you like to see + supported? +* Any other performance / feature tuning knobs we should make available? From 958ae634eff74de3a71e9991e6fea892c1e3f4af Mon Sep 17 00:00:00 2001 From: Frank Chen Date: Tue, 7 Jan 2020 15:15:20 -0800 Subject: [PATCH 123/365] Minor formatting changes --- rfcs/20200107-tf-data-snapshot.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200107-tf-data-snapshot.md b/rfcs/20200107-tf-data-snapshot.md index cb0105844..9350e84d1 100644 --- a/rfcs/20200107-tf-data-snapshot.md +++ b/rfcs/20200107-tf-data-snapshot.md @@ -4,7 +4,7 @@ | :------------ | :------------------------------------------------------ | | **RFC #** | [193](https://github.com/tensorflow/community/pull/193) | | **Author(s)** | Frank Chen (frankchn@google.com), Rohan Jain | -: : (rohanj@google.com) : +| | (rohanj@google.com) | | **Sponsor** | Jiri Simsa (jsimsa@google.com) | | **Updated** | 2020-01-07 | From a297811cb50a102cabffb97808c3046d15ee1a59 Mon Sep 17 00:00:00 2001 From: arnoegw <37290325+arnoegw@users.noreply.github.com> Date: Wed, 8 Jan 2020 14:34:08 +0100 Subject: [PATCH 124/365] Fix typo in 20190430-tokenization-conventions.md. Seems like a copy&paste glitch broke the comment in the code block. --- rfcs/20190430-tokenization-conventions.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/rfcs/20190430-tokenization-conventions.md b/rfcs/20190430-tokenization-conventions.md index d98ec5e87..2b1708e4e 100644 --- a/rfcs/20190430-tokenization-conventions.md +++ b/rfcs/20190430-tokenization-conventions.md @@ -281,9 +281,7 @@ class MyCustomTokenizer(Tokenizer): y=tf.expand_dims(script_tokenized.flat_values, 1), x=unicode_char_split.values) - # put back into [batch, (num - -update conventions doc -_tokens), (num_unicode_chars)] + # put back into [batch, (num_tokens), (num_unicode_chars)] mix_tokenized = tf.RaggedTensor.from_row_lengths( values=unicode_split_tokens, row_lengths=script_tokenized.row_lengths()) From ee02db84fc90ac0060984b985f62d3bc45f32956 Mon Sep 17 00:00:00 2001 From: Saurabh Saxena Date: Thu, 9 Jan 2020 18:48:13 -0500 Subject: [PATCH 125/365] Minor API updates. --- rfcs/20191203-single-eager-graph-path.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/rfcs/20191203-single-eager-graph-path.md b/rfcs/20191203-single-eager-graph-path.md index b397208f2..fef421a03 100644 --- a/rfcs/20191203-single-eager-graph-path.md +++ b/rfcs/20191203-single-eager-graph-path.md @@ -125,6 +125,8 @@ void TF_DeleteEagerContext(TF_EagerContext* c); int TF_EagerContextIsExecutingEagerly(TF_EagerContext* c); void TF_EagerContextEnterGraph(TF_EagerContext* c, TF_Graph* g); void TF_EagerContextExitGraph(TF_EagerContext* c, TF_Graph* g, TF_Status* s); +// Cleans up captures and other graph metadata in the eager context. +void TF_EagerContextDeleteGraph(TF_EagerContext* c, TF_Graph* g, TF_Status* s); // A TF_TensorHandle is a union type of TFE_TensorHandle (eager tensor) and // TF_Output (graph tensor). @@ -181,8 +183,8 @@ TF_TensorHandle* TF_OutputListOutput(TF_OutputList* o, int i); // A TF_AbstractOp is the metadata we need to execute an operation in either // eager or graph mode. typedef struct TF_AbstractOp TF_AbstractOp; -TF_AbstractOp* TF_NewAbstractOp(TF_EagerContext* c, const char* const op_name, - TF_Status* s); +TF_AbstractOp* TF_NewAbstractOp(TF_EagerContext* c, const char* const op_type, + const char* const op_name, TF_Status* s); void TF_DeleteAbstractOp(TF_AbstractOp* op); // TODO: we need a way of specifying attrs From 2bee40f645d49445efe548ab8c59d58586e10d24 Mon Sep 17 00:00:00 2001 From: Frank Chen Date: Thu, 9 Jan 2020 16:38:15 -0800 Subject: [PATCH 126/365] Updated design doc after comments from various folks --- rfcs/20200107-tf-data-snapshot.md | 51 +++++++++++++++++++------------ 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/rfcs/20200107-tf-data-snapshot.md b/rfcs/20200107-tf-data-snapshot.md index 9350e84d1..f535eeb72 100644 --- a/rfcs/20200107-tf-data-snapshot.md +++ b/rfcs/20200107-tf-data-snapshot.md @@ -90,7 +90,7 @@ def snapshot(path, 2. `compression`: Optional. The type of compression to apply to the snapshot written to disk. This will support `GZIP`, `SNAPPY` or None. Defaults to - None. + AUTO. 3. `reader_path_prefix`: Optional. A prefix to add to the path when reading from snapshots. This is useful for filesystems where configuration is passed @@ -101,7 +101,7 @@ def snapshot(path, through the path. Defaults to None. 5. `shard_size_bytes`: Optional. The maximum size of each data file to be - written by the snapshot dataset op. Defaults to 10 GiB. + written by the snapshot dataset op. Defaults to AUTO. 6. `pending_snapshot_expiry_seconds`: Optional. How long to wait (in seconds) before the snapshot op considers a previously unfinished snapshot to be @@ -110,28 +110,31 @@ def snapshot(path, 7. `num_reader_threads`: Optional. Number of threads to parallelize reading from snapshot. Especially useful if compression is turned on since the - decompression operation tends to be intensive. Defaults to 1. If > 1, then + decompression operation tends to be intensive. If > 1, then this might introduce non-determinism i.e. the order in which the elements are read from the snapshot are different from the order they're written. + Defaults to AUTO. 8. `reader_buffer_size`: Optional. Maximum number of elements we can prefetch - reading from the snapshot. Defaults to 1. Increasing this might improve - performance but will increase memory consumption. + reading from the snapshot. Increasing this might improve + performance but will increase memory consumption. Defaults to AUTO. 9. `num_writer_threads`: Optional. Number of threads to parallelize writing from snapshot. We'll open up `num_writer_threads` files and write to them in parallel. Especially useful if compression is turned on since the - compression operation tends to be intensive. Defaults to 1. If > 1, then + compression operation tends to be intensive. If > 1, then this might introduce non-determinism i.e. the order in which the elements are read from the upstream iterator are different from the order they're - written. + written. Defaults to AUTO. 10. `writer_buffer_size`: Optional. Maximum number of pipeline elements to fill - up the buffer before writing them out using `num_writer_threads`. + up the buffer before writing them out using `num_writer_threads`. Defaults + to AUTO. -11. `shuffle_on_read`: Optional. If this is True, then the order in which - examples are produced when reading from a snapshot will be random. Defaults - to False. +11. `shuffle_on_read`: Optional. If this is True, then snapshot randomizes the + order in which the snapshot files are read back. This emulates shuffling + of the input files during a training run (e.g. when `Dataset.list_files` + is called with `shuffle` turned on). Defaults to False. 12. `shuffle_seed`: Optional. If shuffle_seed is set, the random number generator used for shuffling (when `shuffle_on_read` is turned on) is seeded @@ -166,12 +169,15 @@ def snapshot(path, and `run_id` (see the _Detailed Design_ section for details), we will use the `snapshot_name` to uniquely identify the snapshot. +Note: `AUTO` options above indicates that snapshot will attempt to pick a +reasonable default that is suitable for most use cases. We will eventually add +tf.data autotuning to pick the right parameters for the best performance for +individual workloads. + ### External API Guarantees Externally, we guarantee that snapshots written by a particular version of -TensorFlow will be readable by that specific version of TensorFlow. Eventually, -we can also guarantee that snapshots written will be readable by all future -versions of TensorFlow. +TensorFlow will be readable by that specific version of TensorFlow. We are not currently handling the case where workers do not go through the entire training set at least once. @@ -285,14 +291,17 @@ WRITE, PASSTHROUGH, or READ state. 1. If the snapshot directory is non-existent, empty or it doesn’t contain a `metadata` file, we will enter the **WRITE** state. -1. If the snapshot directory contains a `metadata` file, we will read the - metadata file. +1. If the snapshot directory contains a `metadata.final` file, we will read + the final metadata file and proceed to the **READ** state. - 1. The metadata file contains the following fields: - 1. A training run ID - 1. A boolean indicating if the snapshot is complete + 1. The file contains the following fields: + 1. A training run ID, + 1. A boolean indicating if the snapshot is complete. 1. A training run start-time. +1. If the snapshot directory contains a `metadata` file but not a + `metadata.final` file, we will read the metadata file. + 1. If the training run start-time is more than the (configurable) training run timeout (set with the `pending_snapshot_expiry_seconds` parameter), we will enter the **WRITE** state. @@ -315,7 +324,9 @@ WRITE, PASSTHROUGH, or READ state. the snapshot.metadata file to determine whether it contains the same training run ID. - 1. If it does, we set the complete bit to true to finalize the directory. + 1. If it does, we write a `metadata.final` file containing the + same information as the `metadata` file but with the complete + bit set to true. 1. If it does not, it means that someone else is concurrently writing the snapshot and we lost the race to them. We delete all data in the training run directory. From d941c33eb309d23ec79ba891e490da1abc1fb141 Mon Sep 17 00:00:00 2001 From: Frank Chen Date: Thu, 9 Jan 2020 17:04:48 -0800 Subject: [PATCH 127/365] Add clarification regarding number of workers being the same --- rfcs/20200107-tf-data-snapshot.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/rfcs/20200107-tf-data-snapshot.md b/rfcs/20200107-tf-data-snapshot.md index f535eeb72..2d18d21e0 100644 --- a/rfcs/20200107-tf-data-snapshot.md +++ b/rfcs/20200107-tf-data-snapshot.md @@ -241,9 +241,17 @@ the MVP this is designed for: training dataset and be able to store that data on disk. Otherwise, a snapshot will never get created. -2. In case there are multiple workers and the dataset is sharded across - workers, we assume that the number of workers remains the same from one run - to another. If the number changes, we’ll trigger another snapshot. +2. In the cases where there are multiple workers and the dataset is sharded with + `Dataset.shard`, we assume that the number of workers remains the same from + the initial (writing) run through to the reading runs. + + If the number of workers change, then the `num_shards` parameter to + `Dataset.shard` will change, and this will result in a different graph + fingerprint and another snapshot write will be triggered. + + If all workers use the exact same input pipeline with no sharding (e.g. all + workers will read from all the files), then snapshot will still be able to + read from previous snapshots even if the number of workers is different. 3. Any `repeat`s in the dataset should be moved to after the `snapshot` op, to avoid writing large (or infinite) amounts of data during a snapshot writing From beff086b7c870c346e30d64562c370d0c80e795d Mon Sep 17 00:00:00 2001 From: Frank Chen Date: Fri, 10 Jan 2020 15:52:40 -0800 Subject: [PATCH 128/365] Updated design doc by removing some unneeded parameters --- rfcs/20200107-tf-data-snapshot.md | 58 ++++++++++++------------------- 1 file changed, 22 insertions(+), 36 deletions(-) diff --git a/rfcs/20200107-tf-data-snapshot.md b/rfcs/20200107-tf-data-snapshot.md index 2d18d21e0..272744986 100644 --- a/rfcs/20200107-tf-data-snapshot.md +++ b/rfcs/20200107-tf-data-snapshot.md @@ -70,14 +70,10 @@ We are proposing the following API for the snapshot transformation. ```python def snapshot(path, compression=None, - reader_path_prefix=None, - writer_path_prefix=None, shard_size_bytes=None, pending_snapshot_expiry_seconds=None, num_reader_threads=None, - reader_buffer_size=None, num_writer_threads=None, - writer_buffer_size=None, shuffle_on_read=None, shuffle_seed=None, mode=None, @@ -88,38 +84,26 @@ def snapshot(path, 1. `path`: Required. A directory where we want to save our snapshots and/or read from a previously saved snapshot. -2. `compression`: Optional. The type of compression to apply to the snapshot +1. `compression`: Optional. The type of compression to apply to the snapshot written to disk. This will support `GZIP`, `SNAPPY` or None. Defaults to AUTO. -3. `reader_path_prefix`: Optional. A prefix to add to the path when reading - from snapshots. This is useful for filesystems where configuration is passed - in through the path. Defaults to None. - -4. `writer_path_prefix`: Optional. A prefix to add to the path when writing to - snapshots. This is useful for filesystems where configuration is passed in - through the path. Defaults to None. - -5. `shard_size_bytes`: Optional. The maximum size of each data file to be +1. `shard_size_bytes`: Optional. The maximum size of each data file to be written by the snapshot dataset op. Defaults to AUTO. -6. `pending_snapshot_expiry_seconds`: Optional. How long to wait (in seconds) +1. `pending_snapshot_expiry_seconds`: Optional. How long to wait (in seconds) before the snapshot op considers a previously unfinished snapshot to be stale and starts writing a snapshot from scratch again. Defaults to 86400 seconds (1 day). -7. `num_reader_threads`: Optional. Number of threads to parallelize reading +1. `num_reader_threads`: Optional. Number of threads to parallelize reading from snapshot. Especially useful if compression is turned on since the decompression operation tends to be intensive. If > 1, then this might introduce non-determinism i.e. the order in which the elements are read from the snapshot are different from the order they're written. Defaults to AUTO. -8. `reader_buffer_size`: Optional. Maximum number of elements we can prefetch - reading from the snapshot. Increasing this might improve - performance but will increase memory consumption. Defaults to AUTO. - -9. `num_writer_threads`: Optional. Number of threads to parallelize writing +1. `num_writer_threads`: Optional. Number of threads to parallelize writing from snapshot. We'll open up `num_writer_threads` files and write to them in parallel. Especially useful if compression is turned on since the compression operation tends to be intensive. If > 1, then @@ -127,21 +111,17 @@ def snapshot(path, are read from the upstream iterator are different from the order they're written. Defaults to AUTO. -10. `writer_buffer_size`: Optional. Maximum number of pipeline elements to fill - up the buffer before writing them out using `num_writer_threads`. Defaults - to AUTO. - -11. `shuffle_on_read`: Optional. If this is True, then snapshot randomizes the +1. `shuffle_on_read`: Optional. If this is True, then snapshot randomizes the order in which the snapshot files are read back. This emulates shuffling of the input files during a training run (e.g. when `Dataset.list_files` is called with `shuffle` turned on). Defaults to False. -12. `shuffle_seed`: Optional. If shuffle_seed is set, the random number +1. `shuffle_seed`: Optional. If shuffle_seed is set, the random number generator used for shuffling (when `shuffle_on_read` is turned on) is seeded by the given seed. Otherwise, it is seeded by a random seed that differs for every run. -13. `mode`: Optional. The mode at which snapshot should operate. Valid options +1. `mode`: Optional. The mode at which snapshot should operate. Valid options are `auto`, `read`, `write`, and `passthrough`. The default mode is `auto`, where the snapshot op will automatically determine what mode to operate in. @@ -150,18 +130,18 @@ def snapshot(path, materialization currently exists. In other words, we enter the **WRITE** state immediately. - 2. `read` mode forces the snapshot transformation to read from the latest + 1. `read` mode forces the snapshot transformation to read from the latest version of the materialization on disk, regardless of whether the data stored on disk is complete and valid. In other words, we enter the **READ** state immediately. - 3. `passthrough` mode turns the snapshot transformation into a no-op. In + 1. `passthrough` mode turns the snapshot transformation into a no-op. In other words, we enter the **PASSTHROUGH** state immediately. - 4. `auto` retains the default behavior of snapshot. See the "Standard + 1. `auto` retains the default behavior of snapshot. See the "Standard Kernel Workflow" section for the default behavior. -14. `snapshot_name`: Optional. If set, use the supplied string as a named +1. `snapshot_name`: Optional. If set, use the supplied string as a named snapshot name instead of introspecting the data pipeline and automatically generating a unique identifier for the specific data pipeline. @@ -169,6 +149,15 @@ def snapshot(path, and `run_id` (see the _Detailed Design_ section for details), we will use the `snapshot_name` to uniquely identify the snapshot. + 1. Multiple concurrent training jobs with the same "snapshot_name" may + result in concurrent write collisions and a potentially invalid snapshot + if the jobs tries to read from and then write to the metadata file at + exactly the same time. + + The user is expected to handle these cases and explicitly specify `mode`s + to ensure that only one run is set to `write` mode at any point if + collisions are a possibility. + Note: `AUTO` options above indicates that snapshot will attempt to pick a reasonable default that is suitable for most use cases. We will eventually add tf.data autotuning to pick the right parameters for the best performance for @@ -195,10 +184,7 @@ select whether to train or preprocess on their own, which is not good. ### Performance Implications -* Do you expect any (speed / memory)? How will you confirm? -* There should be microbenchmarks. Are there? -* There should be end-to-end tests and benchmarks. If there are not (since - this is still a design), how will you track that these will be created? +Benchmarks for this feature will be included as part of Dataset microbenchmarks. ### Dependencies From 98c7b778f8742028a2447144e0efe05039499a4b Mon Sep 17 00:00:00 2001 From: Andrew Audibert Date: Mon, 13 Jan 2020 07:04:25 -0800 Subject: [PATCH 129/365] | Status | (Proposed / Accepted / Implemented / Obsolete) | | :------------ | :------------------------------------------------------ | | **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) | : : (update when you have community PR #) : | **Author(s)** | Andrew Audibert (aaudibert@google.com) Rohan Jain | : : (rohanj@google.com) : | **Sponsor** | Jiri Simsa (jsimsa@google.com) | | **Updated** | 2019-01-13 Provide an API and implementation of a tf.data service which can process tf.data datasets in a distributed manner. The service can be run outside the TensorFlow cluster or be exported as a gRPC service by TensorFlow servers. Goals: - Enable horizontal scaling of dataset computation to improve performance of input-bound dataset pipelines. - Improve tf.data integration with the tf.distribute API. In particular, support dynamic sharding of data across multiple processes. - Provide visitation guarantees for distributed training jobs. --- rfcs/20200113-tf-data-service.md | 591 +++++++++++++++++++++++++++++++ 1 file changed, 591 insertions(+) create mode 100644 rfcs/20200113-tf-data-service.md diff --git a/rfcs/20200113-tf-data-service.md b/rfcs/20200113-tf-data-service.md new file mode 100644 index 000000000..b18908e19 --- /dev/null +++ b/rfcs/20200113-tf-data-service.md @@ -0,0 +1,591 @@ +# Distributed tf.data service + +| Status | Proposed | +| :------------ | :------------------------------------------------------ | +| **RFC #** | [195](https://github.com/tensorflow/community/pull/195) | +| **Author(s)** | Andrew Audibert (aaudibert@google.com) Rohan Jain (rohanj@google.com) | +| **Sponsor** | Jiri Simsa (jsimsa@google.com) | +| **Updated** | 2019-01-09 | + +## Objective + +Provide an API and implementation of a tf.data service which can process tf.data +datasets in a distributed manner. The service can be run outside the TensorFlow +cluster or be exported as a gRPC service by TensorFlow servers. + +Goals: + +- Enable horizontal scaling of dataset computation to improve performance of + input-bound dataset pipelines. +- Improve tf.data integration with the tf.distribute API. In particular, + support dynamic sharding of data across multiple processes. +- Provide visitation guarantees for distributed training jobs. + +Non-goals: + +- Process non-dataset data. +- Distribute datasets that rely on external / non-serializable state. +- Support non-graph computation (e.g. py_function). + +## Motivation + +### Host machine input pipelines can't always keep up with accelerators. + +Some input pipelines require significant resources to produce their data, e.g. +due to image transformations. When the host machine isn't powerful enough to +generate input data at the rate the attached accelerator(s) consume the data, +the accelerator(s) will idle. This slows down training time, and also wastes +valuable accelerator resources. The tf.data service solves this problem by using +N input workers to feed M accelerators. The number of input workers can be +scaled up or down as needed to keep up with the accelerators. + +### Distributed training requires a distribution-aware input pipeline. + +Today tf.data supports the tf.distribute API by providing mechanisms for +sharding, cloning, and re-batching. The tf.distribute API uses these primitives +to implement their own version of a distributed dataset. If distributed datasets +become a core feature of tf.data, tf.data can provide a public API for +tf.distribute (and users who wish to implement their own distribution) to use +instead. This will also allow us to support feature requests that require +cross-worker coordination, such as dynamic sharding. + +## User Benefit + +### Input-bound models + +Users with input-bound models can leverage the tf.data service to distribute +input processing across horizontally-scaling compute resources. This can improve +utilization for valuable accelerator resources, reducing total cost. + +### Dynamic load balancing + +Today, the tf.distribute API statically shards data across accelerators. This +can lead to suboptimal utilization because some shards may contain more data +than others. The tf.data service provides a mechanism for dynamically sharding, +reducing the data imbalance across accelerators. + +### Visitation guarantees + +Model accuracy can often be improved when each training sample is trained on +exactly once per epoch. The tf.data service can coordinate across workers to +provide this guarantee. + +## Design Proposal + +The tf.data service is a master-worker system which iterates through datasets, +producing outputs to be consumed by accelerators. The service is comprised of a +few components: + +* User-facing Python API for interacting with the tf.data service. +* Dataset splitting API for determining how to split up datasets for parallel + processing. +* Master and worker gRPC services. + +### Architecture + +The tf.data service is comprised of master and worker gRPC services which could +be run in a couple of different configurations: + +#### Glossary + +**Master**: The single master coordinating the tf.data service. + +**Worker**: A tf.data service worker which performs dataset processing and +provides dataset elements to consumers over RPC. + +**Consumer**: A machine which consumes data from the tf.data service. The +consumer may be attached to a GPU or TPU, or use data for on-CPU training. + +#### Separate Cluster Architecture + +Each server is run on a separate host from the TensorFlow cluster. This +configuration gives users a way to provide horizontally scaling CPU for +processing their input pipelines and quickly feeding data to accelerators. + +#### Embedded Cluster Architecture + +without needing to provision additional compute resources. and gives all the +benefits of the tf.data service except for horizontal scaling. + +#### Hybrid Architecture + +Users could run tf.data workers embedded in their TensorFlow cluster, and also +run additional tf.data workers (and potentially the tf.data master) outside the +cluster. This allows for horizontal worker scaling, while still leveraging the +compute resources of the TensorFlow cluster for input processing. + +### User-facing Python API + +This API is how users will interact with the tf.data service from their Python +code. + +```python +def tf.data.experimental.service.distribute(address): + """Marks that a dataset should be processed by the tf.data service. + + ds = ... # dataset to distribute + ds = ds.apply(tf.data.experimental.service.distribute(address)) + + Args: + address: The address of the tf.data service master. + + Returns: + A function that can be passed to `dataset.apply()`. + """ + +def tf.data.experimental.service.create_iteration( + dataset, num_consumers=1, num_tasks=None, deterministic=False): + """Begins distributed iteration over a dataset. + + It is expected that the dataset contains at least one `.distribute(address)` + transformation, otherwise this method will print a warning and do nothing. + + `create_iteration` will first register the dataset with the tf.data service + if it isn't already registered. It will then request the creation of + `num_consumers` dataset iterators which divide the dataset `num_consumers` + ways. The returned object can be used to read from one of the + iterators using + `tf.data.experimental.service.make_iterator(ds, obj, consumer_index)`. + + ds = ... # dataset to distribute + ds = ds.apply(tf.data.experimental.service.distribute(address)) + if consumer_index == 0: + # The iteration object is a byte array which needs to be shared among all + # consumers. Here we suppose there are broadcast_send and broadcast_recv + # method available. + iteration_id = tf.data.experimental.service.create_iteration(ds, address, 3) + broadcast_send(iteration_id) + else: + iteration_id = broadcast_recv() + it = tf.data.experimental.service.make_iterator( + ds, iteration_id, consumer_index) + for element in it: + # process element + + Args: + dataset: The dataset to begin iteration over. + num_consumers: The number of consumers to divide the dataset between. Set + this if you require determinism. If None, a single iterator id is returned, + and any number of consumers can read from that iterator id. The data + produced by the dataset will be fed to consumers on a first-come + first-served basis. + num_tasks: The number of tasks to use for processing. Tasks run for + the duration of an epoch, and each worker should typically process a single + task. Normally it is best to leave this as None so that the master can + choose a reasonable number of tasks. Setting `num_tasks` is useful for + producing deterministic results. + deterministic: Whether the iteration should be performed + deterministically. Fully deterministic output also requires setting + `num_tasks` to a fixed number, and that the input dataset is itself + deterministic. + + Returns: + An iteration_id which can be used to created iterators via + `tf.data.experimental.service.make_iterator` + """ + +def tf.data.experimental.service.make_iterator( + dataset, iteration, consumer_index): + """Creates an iterator for reading from the specified dataset. + + Args: + dataset: The dataset to read from. + iteration: An iteration_id object generated by + `tf.data.experimental.service.create_iteration`. + consumer_index: The consumer index within the iteration to read from. If + the iteration was created with `n` consumers, `consumers_index` must be + less than `n`. + + Returns: + A Python iterator which iterates over the dataset elements. + """ +``` + +### Dataset splitting API + +To parallelize dataset processing, the tf.data service needs a way to split up +datasets. We will achieve this by adding a splitting API that allows source +datasets to express how they can be split. + +Our goals for the API are + +* Performance: The splitting API can be used to performantly split and process + datasets. +* Extensibility: User-defined datasets can be split as long as they implement + the splitting API. +* Minimize Surprises: Users write their datasets as though they will not be + split, so introducing splitting can easily lead to unexpected outcomes. To + mitigate this, we will be conservative about which dataset transformations + support splitting. + +The API will be used internally by the tf.data service to distribute datasets. +It will be entirely in C++, and we don't currently have any plans to expose +splitting through Python. + +The API focuses on producing and consuming `Split`s. A `Split` is a variant +Tensor that can be subclassed to represent arbitrary types of splitting. + +```cpp +class Split { + public: + virtual std::string DebugString() const = 0; + // Methods to support being used as a Variant tensor. + virtual std::string TypeName() const = 0; + virtual void Encode(VariantTensorData* data) const = 0; + virtual bool Decode(const VariantTensorData& data) = 0; +}; +``` + +To iterate over splits for a dataset, we will use a new +`DatasetBase::MakeSplitGenerator()` method. This method creates a +`SplitGenerator`, which is responsible for generating all of the splits for the +dataset. We use an intermediate `SplitGenerator` object instead of generating +splits directly because there could be a large number of splits, and the +`SplitGenerator` gives us as way to tune split size in response to pipeline +performance. + +```cpp +class SplitGenerator { + public: + virtual Status GetNext(std::unique_ptr* split, + bool* end_of_splits) = 0; + // Instructs the SplitGenerator to adjust the size of future splits by the + // specified percent. 100% means no change, 50% means half-sized splits, and + // 200% means double-sized splits. The SplitGenerator will make a best effort + // to incorporate the feedback when creating splits. + virtual void AdjustSplitSize(int percent) = 0; +}; +``` + +It is tempting to process each split independently, but this would cause issues +when splits are small. tf.data pipelines need to populate internal buffers for +shuffling, prefetching, and batching. If we use a separate pipeline to process +each split, our shuffling will be lower quality, we will have performance jitter +as we keep needing to refill prefetch buffers from scratching, and we will +produce many more partial batches (each split might not even have enough data to +fill a full batch). To avoid these issues, we use a small number of tasks, where +each task processes many splits as a single pipeline. + +To enable processing of multiple splits in a dataset, we will add an optional +`SplitProvider` field to the `IteratorContext` passed to +`IteratorBase::Initialize`. The `SplitProvider` produces splits which tell the +iterator what source data to iterate over. For example, if splits are +represented by filenames, and a SplitProvider produces `["file1", "file6", +"file11"]`, an iterator initialized by that `SplitProvider` should process those +three files only. + +```cpp +class SplitProvider { + public: + virtual Status GetNext(std::unique_ptr* split, + bool* end_of_splits) = 0; +}; +``` + +When processing datasets, tf.data service workers will use `SplitProvider`s +which provide splits by querying the tf.data service master for which splits to +process. A few splits will be prefetched to hide the latency of needing to +request a new split from the master. + +#### Supported Datasets + +Not all dataset sources and transformations are easily splittable. For example, +`take`, `skip`, and `scan` require a global view of the dataset to produce +correct results. Datasets which require multiple input datasets such as `zip` +are also difficult to support, since we don't have a good way of aligning the +splits of multiple input datasets. Users who rely on these unsupported datasets +will need to move those datasets to come after the distributed part of their +pipeline. + +Initially, we will support splitting for the following dataset sources and +transformations: + +* `batch`, `CsvDataset`, `dense_to_sparse_batch`, `filter`, + `FixedLengthRecordDataset`, `flat_map`, `from_tensor_slices`, + `group_by_window`, `ignore_errors`, `interleave`, `list_files`, `map`, + `range`, `repeat`, `padded_batch`, `prefetch`, `shuffle`, `SSTableDataset`, + `TextLineDataset`, `TFRecordDataset`, `unbatch`, `window`. + +### Master and worker services + +This section discusses the design for the master and worker services. These +services are used by the Python API to provide distributed dataset processing, +and these services use the splitting API as a part of their implementation. + +#### Master API + +The master is responsible for registering datasets, generating and tracking +iteration and worker ids, and generating dataset splits for processing on +workers. + +Below is a sketch of the Master API. This API is not public and is subject to +change. + +```cpp +/// ---- Methods called by consumers ---- + +// Registers a dataset and returns an id for the dataset. If the dataset is +// already registered, its dataset id is returned. +int GetOrRegisterDataset(GraphDef dataset); + +// Creates and returns `num_consumers` iterator ids which partition the +// specified dataset. This also creates an internal `iteration_id` used to +// track the overall dataset iteration. `num_tasks` defines how many tasks to +// create. If `num_tasks` is -1, it is up to the master to determine how many +// tasks to create. +list CreateIterators(int dataset_id, int num_consumers, + int num_tasks); + +// Returns the list of tasks processing data for `iterator_id`. Consumers query +// this to find which worker addresses to read data from. +list GetWorkersForiterator(int iterator_id); + +///---- Methods called by input workers ---- + +// Registers a worker and returns its worker id. +int RegisterWorker(WorkerInfo worker_info); + +// Requests the next splits to process on the given worker for the given +// iteration_id. +List GetSplits(int worker_id, int iteration_id); +``` + +#### Worker API + +The worker is responsible for processing datasets and providing dataset elements +to consumers. + +Below is a sketch of the Worker API. This API is not public and is subject to +change. + +```cpp +/// ---- Methods called by consumers ---- + +// Gets the next element for the specified iterator_id. +list GetElement(iterator_id); + +/// ---- Methods called by master ---- + +// Requests that the worker process the specified dataset. This will trigger the +// worker to start requesting splits from the master using the `iteration_id`. +void ProcessDataset(int dataset_id, int iteration_id, list iterator_ids); +``` + +#### Visitation Guarantees + +When iterating over a dataset, the tf.data service will process all input data +at least once, even in the presence of master or worker failures. If there are +no failures, all input data will be processed exactly once. + +With determinstic execution enabled, the tf.data service provides an +exactly-once visitation guarantee even in the face of master or worker failures. + +#### Determinism + +Deterministic processing is a cornerstone of tf.data. Determinism is valuable +for debugging and experimentation. This section discusses how the tf.data +service will provide determinism. + +To get deterministic behavior, the tf.data service will require three things: + +1. The dataset being distributed has deterministic output. +1. The user sets `deterministic=True` when calling + `tf.data.experimental.service.create_iteration`. +1. The user specifies how many input tasks to use when calling + `tf.data.experimental.service.create_iteration`. +1. The consumers do not fail. + +In the absence of failures, determinism is achieved by distributing splits +round-robin among `N` input workers and having input workers earmark every `ith` +element for consumer `i`. + +To provide determinism even when servers fail, consumers can keep track of which +element index they have processed up to for each task. Input workers would +attach per-task element indices when they produce elements, so consumers can +ignore duplicate elements caused by worker restarts. We will use an analogous +mechanism to avoid re-processing the same split in case of master falure. Input +workers will track the split index of splits as they receive them, and ignore +duplicate splits. + +#### Failure Recovery + +The tf.data service can recover from master and worker failures while preserving +determinism and its at-least-once visitation guarantee. The master achieves this +by writing its unrecoverable state to a persistent journal, and taking +checkpoints of its recoverable state to improve recovery time. When workers +reconnect to a restarted master, they update the master with their state so that +the master can recover its knowledge of its workers. + +The unrecoverable state includes + +* **Registered datasets** +* **ID generators** for iteration ids, iterator ids, dataset ids, and worker + ids. +* **In-progress iteration state**: + * **dataset id** for the iterated dataset so that we can recover the + iteration's split generator + * **iteration id** + * **participating worker ids**, so that we can send splits to the correct + workers. + +Recoverable state includes + +* **Split generators**: Recoverable from our information about in-progress + iterations. +* **Worker addresses**: Recoverable when workers reconnect. +* **Worker loads**: Recoverable when workers reconnect. +* **Assignment from splits to workers**: Recoverable when workers reconnect. +* **Outstanding splits**: Recoverable by re-running split generators from + their checkpoint state. + +To improve recovery time, the master will periodically write checkpoints of its +split generators and outstanding splits, so that split generators don't need to +be run from the beginning during master recovery. + +A concern with the above recovery strategy is that a master could transmit a +split before crashing, then restart and transmit the same split again. To avoid +this duplication, the master attaches a split index to every split it sends to a +worker. When workers reconnect, they inform the master of their latest split +index. + +Workers have no unrecoverable state. If a worker crashes, a new worker can take +its place. It is up to the master to reassign splits from the crashed worker to +the new worker. + +To improve worker recovery time, workers will periodically write checkpoints of +their iterators to directories named using their worker ids. When the restarted +worker connects, the master will tell it which iterator checkpoints to recover +from. + +We will read and write this state through a MasterState interface which can be +implemented using various storage backends. For use cases that require fault +tolerance, the user must configure a fault-tolerant MasterState, e.g. Spanner +internally, Cloud Spanner in GCP, or etcd externally. If fault tolerance isn't +required, the user could configure state to be held in memory only. + +#### Leadership Transfer + +The master writes state to journal files so that the state can be recovered on +restart. It is possible that a new master could be brought up while the old +master is still running. If we aren't careful, this could result in corruption +of the journal as both masters try to write to it. + +Ideally we could rely on a distributed coordination service such as ZooKeeper. +However, this would add a significant burden to users who don't have access to a +ZooKeeper cluster, and it would also require adding a new dependency on a +ZooKeeper client. + +What TensorFlow does have is a FileSystem API. We will leverage this API to +perform leadership transfer as follows: + +1. The first master will create a file named "master_seqno_0". If it + successfully creates the file, it will consider itself the leader. +1. The leader master will check every N milliseconds that the "master_seqno" + file it created still exists. If the file no longer exists, the master will + cease operation immediately. +1. When a master thinks it should be leader, it attempts to atomically rename + the master_seqno_n file to master_seqno_n+1. If this succeeds, the master + will wait (N + M) milliseconds, verify that its renamed file still exists, + and begin acting as leader. This gives the previous leader time to notice + the rename. + +The above scheme relies on rename being atomic so that two masters don't both +succeed at renaming the same file. Users may opt to use a filesystem that +doesn't support atomic rename, but they do so at the (unlikely) risk of two +concurrently running masters thinking they are leader. Common filesystems such +as Posix and HDFS support atomic rename. + +#### Caveats + +This section calls out caveats that users will need to be aware of when using +the tf.data service. + +- Due to the nature of dataset splitting, elements will not be processed in + the same order as they were in the pre-distributed dataset. If a dataset + relies on the order of the input files, the user's assumptions will be + violated when splitting causes each input worker to process only a subset of + the input files. +- If a dataset doesn't support splitting, it must be moved after the part of + the dataset which is distributed. Alternately, the user could set + num_tasks=1 to avoid the need for splitting, but this will have a heavy + performance cost since it only allows a single worker to generate dataset + elements. The most commonly used but unsupported datasets are + `from_generator` and `zip`. + +### Alternatives Considered + +#### Use Beam for distributed dataset processing. + +Beam is an open-source data processing framework capable of large-scale parallel +computation. Instead of implementing distributed computation ourselves, we could +execute Beam jobs to perform dataset processing. + +We chose not to follow this direction to avoid creating a dependency on Beam. +Many users don't depend on Beam, and it would be a limitation to require that +dependency. If we depend on Beam, it will not be possible to use the tf.data +service with out-of-the-box TensorFlow. This is especially important as tf.data +service is expected to be used by the tf.distribute API. + +### Performance Implications + +With tf.data workers running in a separate cluster, we expect to be able to +horizontally scale until the input pipeline is no longer the bottleneck, +improving performance for input-bound pipelines. + +If a pipeline input-bound or close to input-bound, tf.distribute could see +performance regressions when it uses the tf.data service to serve elements +across replicas. The issue is that the tf.data service will incur the cost of +transferring elements over the network to feed replicas, instead of having each +replica perform its input processing locally. On the other hand, if the input +pipeline is not the bottleneck, tf.distribute could see training speedups as +dynamic sharding mitigates the time spent waiting for stragglers. + +### Dependencies + +This proposal does not add any new dependencies to TensorFlow. + +### Engineering Impact + +The tf.data service will be maintained by the tf.data team. + +### Platforms and Environments + +The tf.data service is compatible with all platforms supported by TensorFlow. + +### Best Practices, Tutorials and Examples + +The tf.data performance guide will be updated to explain when to use the tf.data +service. We will also provide a tutorial for using the tf.data service. + +### Compatibility + +* Does the design conform to the backwards & forwards compatibility + requirements? + - Yes, this design only adds new functionality, so it doesn't break any + backwards or forwards compatibility guarantees. +* How will this proposal interact with other parts of the TensorFlow + Ecosystem? + - How will it work with TFLite? + * We aren't planning any integration with TFLite, where we haven't + seen a need for distributed input processing. Traditionally TFLite + is used for inference, while tf.data is used for training. + - How will it work with distribution strategies? + * Distribution strategies will be able to leverage the tf.data service + to replace its static sharding with dynamic sharding, and to support + efficient splitting for a wider range of datasets. + - How will it interact with tf.function? + * The tf.data service APIs will work both inside and outside of + tf.functions. + - Will this work on GPU/TPU? + * This proposal does not change the status quo of support for + executing tf.data pipelines on GPU/TPU. + +## Questions and Discussion Topics + +* How should we communicate that distributing a dataset will change the order + in which elements are processed? If users' datasets rely on elements being + processed in a certain order, they could face unpleasant surprises. +* Is there a more user-friendly way to share iteration data across consumers? + Distribution strategy is well-equipped with collective ops to share the + iteration data, but sharing the iteration data could be a heavy burden for + some users. From ca37121b46b785a5f64a0e735a5c0793c4ca942b Mon Sep 17 00:00:00 2001 From: Saurabh Saxena Date: Mon, 13 Jan 2020 15:42:57 -0500 Subject: [PATCH 130/365] Update RFC # --- rfcs/20191203-single-eager-graph-path.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20191203-single-eager-graph-path.md b/rfcs/20191203-single-eager-graph-path.md index fef421a03..42db1684e 100644 --- a/rfcs/20191203-single-eager-graph-path.md +++ b/rfcs/20191203-single-eager-graph-path.md @@ -2,7 +2,7 @@ | Status | Proposed | :-------------- |:---------------------------------------------------- | -| **RFC #** | | +| **RFC #** | 184 | | **Author** | Saurabh Saxena (srbs@google.com) | | **Sponsors** | Alex Passos, Gaurav Jain | | **Updated** | 2019-12-03 | From 1f28c31d44ae3d086f276c44d91b374cb1db3e2e Mon Sep 17 00:00:00 2001 From: Saurabh Saxena Date: Mon, 13 Jan 2020 16:12:11 -0500 Subject: [PATCH 131/365] Resolve keras open question and mark RFC as accepted --- rfcs/20191203-single-eager-graph-path.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/rfcs/20191203-single-eager-graph-path.md b/rfcs/20191203-single-eager-graph-path.md index 42db1684e..f8dce0512 100644 --- a/rfcs/20191203-single-eager-graph-path.md +++ b/rfcs/20191203-single-eager-graph-path.md @@ -1,8 +1,8 @@ # Single python code path for eager and graph -| Status | Proposed | +| Status | Accepted | :-------------- |:---------------------------------------------------- | -| **RFC #** | 184 | +| **RFC #** | [184](https://github.com/tensorflow/community/pull/184) | | **Author** | Saurabh Saxena (srbs@google.com) | | **Sponsors** | Alex Passos, Gaurav Jain | | **Updated** | 2019-12-03 | @@ -317,7 +317,8 @@ Automatic control dependencies (ACD) will move to C++ as well. However instead o ### Open questions -1. Keras seems to be using [non-public APIs](https://github.com/tensorflow/tensorflow/blob/6d7926bb87c1a91ffd110aa3407c003b2ae54009/tensorflow/python/keras/engine/base_layer.py#L2511) for directly building NodeDef and adding that to the graph. This is necessary for supporting Keras's Functional API (Model.add_loss, Model.add_metric, and auto-Lambda layers). We need to figure out if/how to support that. There are ongoing efforts to use just the public API of TF in tf.keras but the timelines for that are unclear. +1. Keras seems to be using [non-public APIs](https://github.com/tensorflow/tensorflow/blob/6d7926bb87c1a91ffd110aa3407c003b2ae54009/tensorflow/python/keras/engine/base_layer.py#L2511) for directly building NodeDef and adding that to the graph. This is necessary for supporting Keras's Functional API (Model.add_loss, Model.add_metric, and auto-Lambda layers). We need to figure out if/how to support that. There are ongoing efforts to use just the public API of TF in tf.keras but the timelines for that are unclear. + 1. In the design review it was concluded that we should either be able to change Keras to use public python APIs or replace the internal python API calls with C API calls. ## Appendix From a7a7c5b553cd7d7264d2f5730a368db5f709ad79 Mon Sep 17 00:00:00 2001 From: Frank Chen Date: Mon, 13 Jan 2020 16:59:06 -0800 Subject: [PATCH 132/365] Removed miscellaneous reader options and added a reader_fn parameter --- rfcs/20200107-tf-data-snapshot.md | 61 +++++++++++++++++++++---------- 1 file changed, 42 insertions(+), 19 deletions(-) diff --git a/rfcs/20200107-tf-data-snapshot.md b/rfcs/20200107-tf-data-snapshot.md index 272744986..2659333f8 100644 --- a/rfcs/20200107-tf-data-snapshot.md +++ b/rfcs/20200107-tf-data-snapshot.md @@ -72,10 +72,8 @@ def snapshot(path, compression=None, shard_size_bytes=None, pending_snapshot_expiry_seconds=None, - num_reader_threads=None, num_writer_threads=None, - shuffle_on_read=None, - shuffle_seed=None, + reader_fn=None, mode=None, snapshot_name=None): pass # Implementation goes here. @@ -96,13 +94,6 @@ def snapshot(path, stale and starts writing a snapshot from scratch again. Defaults to 86400 seconds (1 day). -1. `num_reader_threads`: Optional. Number of threads to parallelize reading - from snapshot. Especially useful if compression is turned on since the - decompression operation tends to be intensive. If > 1, then - this might introduce non-determinism i.e. the order in which the elements - are read from the snapshot are different from the order they're written. - Defaults to AUTO. - 1. `num_writer_threads`: Optional. Number of threads to parallelize writing from snapshot. We'll open up `num_writer_threads` files and write to them in parallel. Especially useful if compression is turned on since the @@ -111,15 +102,47 @@ def snapshot(path, are read from the upstream iterator are different from the order they're written. Defaults to AUTO. -1. `shuffle_on_read`: Optional. If this is True, then snapshot randomizes the - order in which the snapshot files are read back. This emulates shuffling - of the input files during a training run (e.g. when `Dataset.list_files` - is called with `shuffle` turned on). Defaults to False. - -1. `shuffle_seed`: Optional. If shuffle_seed is set, the random number - generator used for shuffling (when `shuffle_on_read` is turned on) is seeded - by the given seed. Otherwise, it is seeded by a random seed that differs for - every run. +1. `reader_fn`: Optional. A user provided reader function to use when reading + the snapshot back. This allows the user to specify the concurrency and + randomization required when reading from the snapshot. + + `reader_fn` should be a function that accepts two arguments: (1) a list of + snapshot file paths, and (2) a reference to a `SnapshotDataset` class. + The function should return a `Dataset` class. + + The `SnapshotDataset` class is a `Dataset` (similar to other source datasets + like `TFRecordDataset` or `TextLineDataset`) with the following constructor: + ```python + class SnapshotDataset(dataset_ops.DatasetSource): + def __init__(filenames): + """Creates a `SnapshotDataset`. + + Args: + filenames: A `tf.string` tensor or a `tf.data.Dataset` containing one or + more filenames. + """ + pass + ``` + + If the `reader_fn` is not specified, a default equivalent to the following + will be used: + ```python + def reader_fn(filenames, SnapshotDataset): + return SnapshotDataset(filenames) + ``` + + Users can optionally add snapshot file shuffling and parallelism by passing + a `reader_fn` similar to the one here: + ```python + def reader_fn(filenames, SnapshotDataset): + file_ds = Dataset.from_tensor_slices(filenames) + file_ds = file_ds.shuffle(1000) + reader_ds = dataset.interleave( + lambda x: SnapshotDataset(x), + cycle_length=32, + num_parallel_calls=32) + return reader_ds + ``` 1. `mode`: Optional. The mode at which snapshot should operate. Valid options are `auto`, `read`, `write`, and `passthrough`. The default mode is `auto`, From 9452e02eb9617d4f285c44fc9f3b25e4bebd7e6e Mon Sep 17 00:00:00 2001 From: Andrew Audibert Date: Mon, 13 Jan 2020 17:22:38 -0800 Subject: [PATCH 133/365] Fix truncated sentence --- rfcs/20200113-tf-data-service.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rfcs/20200113-tf-data-service.md b/rfcs/20200113-tf-data-service.md index b18908e19..b2d6af959 100644 --- a/rfcs/20200113-tf-data-service.md +++ b/rfcs/20200113-tf-data-service.md @@ -104,6 +104,8 @@ processing their input pipelines and quickly feeding data to accelerators. #### Embedded Cluster Architecture +Each TensorFlow server runs the tf.data worker gRPC service, and one server also +runs the master gRPC service. This lets users leverage the tf.data service without needing to provision additional compute resources. and gives all the benefits of the tf.data service except for horizontal scaling. From a575f858af0b154f56e8be51d7da36f00012afd5 Mon Sep 17 00:00:00 2001 From: Andrew Audibert Date: Mon, 13 Jan 2020 18:55:53 -0800 Subject: [PATCH 134/365] Improve wording --- rfcs/20200113-tf-data-service.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rfcs/20200113-tf-data-service.md b/rfcs/20200113-tf-data-service.md index b2d6af959..0137b4596 100644 --- a/rfcs/20200113-tf-data-service.md +++ b/rfcs/20200113-tf-data-service.md @@ -507,9 +507,9 @@ the tf.data service. relies on the order of the input files, the user's assumptions will be violated when splitting causes each input worker to process only a subset of the input files. -- If a dataset doesn't support splitting, it must be moved after the part of - the dataset which is distributed. Alternately, the user could set - num_tasks=1 to avoid the need for splitting, but this will have a heavy +- If a particular dataset operation doesn't support splitting, it must be moved + after the part of the dataset which is distributed. Alternately, the user could + set num_tasks=1 to avoid the need for splitting, but this will have a heavy performance cost since it only allows a single worker to generate dataset elements. The most commonly used but unsupported datasets are `from_generator` and `zip`. From 45a0f58d05c1d7e07772c8f3646629261b2f0f5c Mon Sep 17 00:00:00 2001 From: Sean Morgan Date: Tue, 14 Jan 2020 14:34:53 -0500 Subject: [PATCH 135/365] Update release procedure (#196) --- sigs/addons/RELEASE.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sigs/addons/RELEASE.md b/sigs/addons/RELEASE.md index eaa71c828..79c241992 100644 --- a/sigs/addons/RELEASE.md +++ b/sigs/addons/RELEASE.md @@ -6,9 +6,8 @@ SIG Addons release process consists of the folowing steps: * Set the correct version and suffix in [version.py](https://github.com/tensorflow/addons/blob/master/tensorflow_addons/version.py) * Freeze the tensorflow version in - [setup.py](https://github.com/tensorflow/addons/blob/master/setup.py) - - [requirements.txt](https://github.com/tensorflow/addons/blob/master/build_deps/requirements.txt) + - [requirements.txt](https://github.com/tensorflow/addons/blob/master/requirements.txt) * Remove `--nightly` flag from [release scripts](https://github.com/tensorflow/addons/tree/master/tools/ci_build/builds) - * Compile the docs: [instructions](https://github.com/tensorflow/addons/tree/master/tools/docs) 3. Trigger [Travis build](https://travis-ci.org/tensorflow/addons) * This will test and build linux+macos wheels and publish to PyPi 4. Publish and tag a [release on Github](https://github.com/tensorflow/addons/releases) From a6e7227d7f380fd9bef5e44087fbbb0d2e58a311 Mon Sep 17 00:00:00 2001 From: Andrew Audibert Date: Wed, 15 Jan 2020 15:43:29 -0800 Subject: [PATCH 136/365] Expand vistation guarantees. Update the proposal to support exactly-once visitation even when the service is executing non-deterministically. Also, add discussion of the visitation guarantees provided when the dataset produces outputs non-deterministically. --- rfcs/20200113-tf-data-service.md | 111 ++++++++++++++++--------------- 1 file changed, 59 insertions(+), 52 deletions(-) diff --git a/rfcs/20200113-tf-data-service.md b/rfcs/20200113-tf-data-service.md index 0137b4596..e361cc191 100644 --- a/rfcs/20200113-tf-data-service.md +++ b/rfcs/20200113-tf-data-service.md @@ -1,9 +1,10 @@ # Distributed tf.data service -| Status | Proposed | +| Status | Proposed | | :------------ | :------------------------------------------------------ | | **RFC #** | [195](https://github.com/tensorflow/community/pull/195) | -| **Author(s)** | Andrew Audibert (aaudibert@google.com) Rohan Jain (rohanj@google.com) | +| **Author(s)** | Andrew Audibert (aaudibert@google.com) Rohan Jain | +: : (rohanj@google.com) : | **Sponsor** | Jiri Simsa (jsimsa@google.com) | | **Updated** | 2019-01-09 | @@ -62,7 +63,9 @@ utilization for valuable accelerator resources, reducing total cost. Today, the tf.distribute API statically shards data across accelerators. This can lead to suboptimal utilization because some shards may contain more data than others. The tf.data service provides a mechanism for dynamically sharding, -reducing the data imbalance across accelerators. +reducing the data imbalance across accelerators. Note that dynamic load +balancing and deterministic output are mutually exclusive; if users require +deterministic output, they must trade off dynamic load balancing. ### Visitation guarantees @@ -154,7 +157,7 @@ def tf.data.experimental.service.create_iteration( if consumer_index == 0: # The iteration object is a byte array which needs to be shared among all # consumers. Here we suppose there are broadcast_send and broadcast_recv - # method available. + # methods available. iteration_id = tf.data.experimental.service.create_iteration(ds, address, 3) broadcast_send(iteration_id) else: @@ -373,14 +376,26 @@ list GetElement(iterator_id); void ProcessDataset(int dataset_id, int iteration_id, list iterator_ids); ``` -#### Visitation Guarantees +#### Visitation Guarantee -When iterating over a dataset, the tf.data service will process all input data -at least once, even in the presence of master or worker failures. If there are -no failures, all input data will be processed exactly once. +When iterating over a deterministic dataset, the tf.data service will process +all input data exactly once, even in the presence of master or worker failures. +We achieve exactly-once by having consumers keep track of their index within +each task, and having restored tasks skip elements to reach the requested index. +For the skipping to give exactly-once semantics, the dataset must produce +outputs deterministically. -With determinstic execution enabled, the tf.data service provides an -exactly-once visitation guarantee even in the face of master or worker failures. +If the dataset is not deterministic, the user can choose either at-least-once or +a close-to-exactly-once visitation guarantee. We can achieve +close-to-exactly-once by using the same skipping technique that we use to +achieve exactly-once for deterministic datasets. If users prefer an +at-least-once guarantee, we can instead start restored tasks from their latest +checkpoint. + +In some cases, we can provide an exactly-once visitation guarantee to +non-deterministic pipelines. If input workers are brought down gracefully, they +can first write checkpoints of their tasks. This way, tasks can begin exactly +where they left off. #### Determinism @@ -404,10 +419,7 @@ element for consumer `i`. To provide determinism even when servers fail, consumers can keep track of which element index they have processed up to for each task. Input workers would attach per-task element indices when they produce elements, so consumers can -ignore duplicate elements caused by worker restarts. We will use an analogous -mechanism to avoid re-processing the same split in case of master falure. Input -workers will track the split index of splits as they receive them, and ignore -duplicate splits. +ignore duplicate elements caused by worker restarts. #### Failure Recovery @@ -427,8 +439,8 @@ The unrecoverable state includes * **dataset id** for the iterated dataset so that we can recover the iteration's split generator * **iteration id** - * **participating worker ids**, so that we can send splits to the correct - workers. + * **assignments from splits to tasks**, so that we can restart failed + tasks on new workers. Recoverable state includes @@ -436,20 +448,12 @@ Recoverable state includes iterations. * **Worker addresses**: Recoverable when workers reconnect. * **Worker loads**: Recoverable when workers reconnect. -* **Assignment from splits to workers**: Recoverable when workers reconnect. -* **Outstanding splits**: Recoverable by re-running split generators from - their checkpoint state. +* **Assignment from tasks to workers**: Recoverable when workers reconnect. To improve recovery time, the master will periodically write checkpoints of its split generators and outstanding splits, so that split generators don't need to be run from the beginning during master recovery. -A concern with the above recovery strategy is that a master could transmit a -split before crashing, then restart and transmit the same split again. To avoid -this duplication, the master attaches a split index to every split it sends to a -worker. When workers reconnect, they inform the master of their latest split -index. - Workers have no unrecoverable state. If a worker crashes, a new worker can take its place. It is up to the master to reassign splits from the crashed worker to the new worker. @@ -461,9 +465,9 @@ from. We will read and write this state through a MasterState interface which can be implemented using various storage backends. For use cases that require fault -tolerance, the user must configure a fault-tolerant MasterState, e.g. Spanner -internally, Cloud Spanner in GCP, or etcd externally. If fault tolerance isn't -required, the user could configure state to be held in memory only. +tolerance, the user must configure a fault-tolerant MasterState, e.g. Cloud +Spanner or etcd. If fault tolerance isn't required, the user could configure +state to be held in memory only. #### Leadership Transfer @@ -478,24 +482,27 @@ ZooKeeper cluster, and it would also require adding a new dependency on a ZooKeeper client. What TensorFlow does have is a FileSystem API. We will leverage this API to -perform leadership transfer as follows: - -1. The first master will create a file named "master_seqno_0". If it - successfully creates the file, it will consider itself the leader. -1. The leader master will check every N milliseconds that the "master_seqno" - file it created still exists. If the file no longer exists, the master will - cease operation immediately. -1. When a master thinks it should be leader, it attempts to atomically rename - the master_seqno_n file to master_seqno_n+1. If this succeeds, the master - will wait (N + M) milliseconds, verify that its renamed file still exists, - and begin acting as leader. This gives the previous leader time to notice - the rename. - -The above scheme relies on rename being atomic so that two masters don't both -succeed at renaming the same file. Users may opt to use a filesystem that -doesn't support atomic rename, but they do so at the (unlikely) risk of two -concurrently running masters thinking they are leader. Common filesystems such -as Posix and HDFS support atomic rename. +perform leadership transfer by creating empty files and inspecting file +modification times. + +``` +files = list_directory(leadership_directory) +if all_files_older_than(files, leadership_transfer_interval): + file = create_unique_file(leadership_directory); + if file_is_strictly_newest(file, leadership_directory): + become_leader() +# Another master may be leader. Wait for some time before trying again. +wait_random_interval() +``` + +The leader master will periodically write files to the leadership directory to +indicate that it is still leading. + +The above scheme relies on the filesystem's create_file() and list() operations +being strongly consistent . Users may opt to use a filesystem that doesn't +support strong consistency, but they do so at the risk of two concurrently +running masters thinking they are leader. Common filesystems such as Posix, +HDFS, and GCS support such strong consistency. #### Caveats @@ -507,12 +514,12 @@ the tf.data service. relies on the order of the input files, the user's assumptions will be violated when splitting causes each input worker to process only a subset of the input files. -- If a particular dataset operation doesn't support splitting, it must be moved - after the part of the dataset which is distributed. Alternately, the user could - set num_tasks=1 to avoid the need for splitting, but this will have a heavy - performance cost since it only allows a single worker to generate dataset - elements. The most commonly used but unsupported datasets are - `from_generator` and `zip`. +- If a particular dataset operation doesn't support splitting, it must be + moved after the part of the dataset which is distributed. Alternately, the + user could set num_tasks=1 to avoid the need for splitting, but this will + have a heavy performance cost since it only allows a single worker to + generate dataset elements. The most commonly used but unsupported datasets + are `from_generator` and `zip`. ### Alternatives Considered From 4b55d4e714738a8519a0aef534e8afa989e74e1b Mon Sep 17 00:00:00 2001 From: Andrew Audibert Date: Thu, 16 Jan 2020 09:10:39 -0800 Subject: [PATCH 137/365] Fix errors and add more description. --- rfcs/20200113-tf-data-service.md | 35 ++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/rfcs/20200113-tf-data-service.md b/rfcs/20200113-tf-data-service.md index e361cc191..37515a927 100644 --- a/rfcs/20200113-tf-data-service.md +++ b/rfcs/20200113-tf-data-service.md @@ -122,7 +122,20 @@ compute resources of the TensorFlow cluster for input processing. ### User-facing Python API This API is how users will interact with the tf.data service from their Python -code. +code. The steps for distributed iteration over a dataset are + +1. Create a dataset like usual. +2. Apply the `distribute` transformation to indicate that the dataset should be + processed by the tf.data service. +3. Begin an *iteration* by calling `create_iteration`. An *iteration* is a + single pass through the dataset. Multiple consumers can read from the same + iteration, resulting in each consumer receiving a partition of the original + dataset. We represent an iteration with an iteration id, which is generated + by the tf.data service when you call `create_iteration`. +4. Share the iteration id with all consumer processes which are participating + in the iteration. +5. Create per-consumer iterators using `make_iterator`, and use these iterators + to read data from the tf.data service. ```python def tf.data.experimental.service.distribute(address): @@ -158,7 +171,7 @@ def tf.data.experimental.service.create_iteration( # The iteration object is a byte array which needs to be shared among all # consumers. Here we suppose there are broadcast_send and broadcast_recv # methods available. - iteration_id = tf.data.experimental.service.create_iteration(ds, address, 3) + iteration_id = tf.data.experimental.service.create_iteration(ds, 3) broadcast_send(iteration_id) else: iteration_id = broadcast_recv() @@ -170,10 +183,7 @@ def tf.data.experimental.service.create_iteration( Args: dataset: The dataset to begin iteration over. num_consumers: The number of consumers to divide the dataset between. Set - this if you require determinism. If None, a single iterator id is returned, - and any number of consumers can read from that iterator id. The data - produced by the dataset will be fed to consumers on a first-come - first-served basis. + this if you require determinism. num_tasks: The number of tasks to use for processing. Tasks run for the duration of an epoch, and each worker should typically process a single task. Normally it is best to leave this as None so that the master can @@ -190,7 +200,7 @@ def tf.data.experimental.service.create_iteration( """ def tf.data.experimental.service.make_iterator( - dataset, iteration, consumer_index): + dataset, iteration, consumer_index=0): """Creates an iterator for reading from the specified dataset. Args: @@ -343,7 +353,7 @@ list CreateIterators(int dataset_id, int num_consumers, // Returns the list of tasks processing data for `iterator_id`. Consumers query // this to find which worker addresses to read data from. -list GetWorkersForiterator(int iterator_id); +list GetWorkersForIterator(int iterator_id); ///---- Methods called by input workers ---- @@ -376,7 +386,7 @@ list GetElement(iterator_id); void ProcessDataset(int dataset_id, int iteration_id, list iterator_ids); ``` -#### Visitation Guarantee +#### Visitation Guarantees When iterating over a deterministic dataset, the tf.data service will process all input data exactly once, even in the presence of master or worker failures. @@ -406,10 +416,9 @@ service will provide determinism. To get deterministic behavior, the tf.data service will require three things: 1. The dataset being distributed has deterministic output. -1. The user sets `deterministic=True` when calling - `tf.data.experimental.service.create_iteration`. -1. The user specifies how many input tasks to use when calling - `tf.data.experimental.service.create_iteration`. +1. The user sets `num_consumers`, `num_tasks`, and `deterministic=True` when + calling `tf.data.experimental.service.create_iteration`. +1. Each consumer uses a unique `consumer_index` when calling `make_iterator`. 1. The consumers do not fail. In the absence of failures, determinism is achieved by distributing splits From eb6fed23627b7e646122f1a94caf495d538dd319 Mon Sep 17 00:00:00 2001 From: Andrew Audibert Date: Thu, 16 Jan 2020 09:13:11 -0800 Subject: [PATCH 138/365] Fix markdown formatting --- rfcs/20200113-tf-data-service.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rfcs/20200113-tf-data-service.md b/rfcs/20200113-tf-data-service.md index 37515a927..6d6ccfb5c 100644 --- a/rfcs/20200113-tf-data-service.md +++ b/rfcs/20200113-tf-data-service.md @@ -3,8 +3,7 @@ | Status | Proposed | | :------------ | :------------------------------------------------------ | | **RFC #** | [195](https://github.com/tensorflow/community/pull/195) | -| **Author(s)** | Andrew Audibert (aaudibert@google.com) Rohan Jain | -: : (rohanj@google.com) : +| **Author(s)** | Andrew Audibert (aaudibert@google.com) Rohan Jain (rohanj@google.com) | | **Sponsor** | Jiri Simsa (jsimsa@google.com) | | **Updated** | 2019-01-09 | From c66699b2231ec457bbf0d0538d284f2790bdd7e2 Mon Sep 17 00:00:00 2001 From: Andrew Audibert Date: Thu, 16 Jan 2020 09:17:03 -0800 Subject: [PATCH 139/365] Note that S3 is not a good FS for safe leadership transfer --- rfcs/20200113-tf-data-service.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rfcs/20200113-tf-data-service.md b/rfcs/20200113-tf-data-service.md index 6d6ccfb5c..0f8baa37e 100644 --- a/rfcs/20200113-tf-data-service.md +++ b/rfcs/20200113-tf-data-service.md @@ -509,8 +509,8 @@ indicate that it is still leading. The above scheme relies on the filesystem's create_file() and list() operations being strongly consistent . Users may opt to use a filesystem that doesn't support strong consistency, but they do so at the risk of two concurrently -running masters thinking they are leader. Common filesystems such as Posix, -HDFS, and GCS support such strong consistency. +running masters thinking they are leader. Common filesystems such as POSIX, +HDFS, and GCS support such strong consistency, but S3 does not. #### Caveats From ab40d67db148a816260df60a4423efb9e10cf2a2 Mon Sep 17 00:00:00 2001 From: Edd Wilder-James Date: Fri, 17 Jan 2020 10:25:14 -0800 Subject: [PATCH 140/365] Update CODEOWNERS (#197) Add Ewa as RFC reviewer --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index d0cac1f9a..4196105c3 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -19,4 +19,4 @@ sigs/testing/ @ewilderj @dynamicwebpaige # RFCs -rfcs/ @ewilderj @martinwicke @theadactyl @brijk7 +rfcs/ @ewilderj @martinwicke @theadactyl @brijk7 @ematejska From 149a6f9532900224bfb951e5a70a8e75d2e6ecb9 Mon Sep 17 00:00:00 2001 From: Frank Chen Date: Mon, 20 Jan 2020 21:35:18 -0800 Subject: [PATCH 141/365] Rename SnapshotDataset to SnapshotReaderDataset --- rfcs/20200107-tf-data-snapshot.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200107-tf-data-snapshot.md b/rfcs/20200107-tf-data-snapshot.md index 2659333f8..e370fae33 100644 --- a/rfcs/20200107-tf-data-snapshot.md +++ b/rfcs/20200107-tf-data-snapshot.md @@ -110,7 +110,7 @@ def snapshot(path, snapshot file paths, and (2) a reference to a `SnapshotDataset` class. The function should return a `Dataset` class. - The `SnapshotDataset` class is a `Dataset` (similar to other source datasets + The `SnapshotReaderDataset` class is a `Dataset` (similar to other source datasets like `TFRecordDataset` or `TextLineDataset`) with the following constructor: ```python class SnapshotDataset(dataset_ops.DatasetSource): From 910474a51c7b482d70c5ce32f790cd9c805b0c7c Mon Sep 17 00:00:00 2001 From: Andrew Audibert Date: Thu, 23 Jan 2020 18:03:21 -0800 Subject: [PATCH 142/365] Add section on framework integration --- rfcs/20200113-tf-data-service.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/rfcs/20200113-tf-data-service.md b/rfcs/20200113-tf-data-service.md index 0f8baa37e..9450c409c 100644 --- a/rfcs/20200113-tf-data-service.md +++ b/rfcs/20200113-tf-data-service.md @@ -529,6 +529,18 @@ the tf.data service. generate dataset elements. The most commonly used but unsupported datasets are `from_generator` and `zip`. +#### Framework Integration + +Many users interact with TensorFlow through a framework such as +[TFX](https://www.tensorflow.org/tfx). A framework can make leveraging the +tf.data service as simple as toggling a configuration boolean, triggering the +framework to bring up tf.data service servers and add a +`tf.data.experimental.service.distribute` transformation at the end of the +users' data pipeline. By inspecting the amount of time blocked on the input +pipeline, the framework could dynamically scale the number of input workers up +and down to find the minimum number of workers needed so that the input pipeline +can keep up with the model. + ### Alternatives Considered #### Use Beam for distributed dataset processing. From afec5f9aebd3a4544e5b5a1289eddc992a2dcd5e Mon Sep 17 00:00:00 2001 From: Andrew Audibert Date: Fri, 24 Jan 2020 12:41:39 -0800 Subject: [PATCH 143/365] Improve doc clarity --- rfcs/20200113-tf-data-service.md | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/rfcs/20200113-tf-data-service.md b/rfcs/20200113-tf-data-service.md index 9450c409c..b696f0861 100644 --- a/rfcs/20200113-tf-data-service.md +++ b/rfcs/20200113-tf-data-service.md @@ -5,7 +5,7 @@ | **RFC #** | [195](https://github.com/tensorflow/community/pull/195) | | **Author(s)** | Andrew Audibert (aaudibert@google.com) Rohan Jain (rohanj@google.com) | | **Sponsor** | Jiri Simsa (jsimsa@google.com) | -| **Updated** | 2019-01-09 | +| **Updated** | 2019-01-24 | ## Objective @@ -98,20 +98,20 @@ provides dataset elements to consumers over RPC. **Consumer**: A machine which consumes data from the tf.data service. The consumer may be attached to a GPU or TPU, or use data for on-CPU training. -#### Separate Cluster Architecture +#### Option 1: Separate Cluster Architecture Each server is run on a separate host from the TensorFlow cluster. This configuration gives users a way to provide horizontally scaling CPU for processing their input pipelines and quickly feeding data to accelerators. -#### Embedded Cluster Architecture +#### Option 2: Embedded Cluster Architecture Each TensorFlow server runs the tf.data worker gRPC service, and one server also runs the master gRPC service. This lets users leverage the tf.data service without needing to provision additional compute resources. and gives all the benefits of the tf.data service except for horizontal scaling. -#### Hybrid Architecture +#### Option 3: Hybrid Architecture Users could run tf.data workers embedded in their TensorFlow cluster, and also run additional tf.data workers (and potentially the tf.data master) outside the @@ -136,6 +136,12 @@ code. The steps for distributed iteration over a dataset are 5. Create per-consumer iterators using `make_iterator`, and use these iterators to read data from the tf.data service. +We move away from the idiomatic `for element in dataset` control flow because +there is now an extra step when going from dataset to iterator: creating an +iteration. A higher layer API such as tf.distribute may use the API presented +here to implement datasets which produce per-replica elements, enabling +idiomatic control flow. + ```python def tf.data.experimental.service.distribute(address): """Marks that a dataset should be processed by the tf.data service. @@ -237,7 +243,9 @@ It will be entirely in C++, and we don't currently have any plans to expose splitting through Python. The API focuses on producing and consuming `Split`s. A `Split` is a variant -Tensor that can be subclassed to represent arbitrary types of splitting. +Tensor that can be subclassed to represent arbitrary types of splitting. The +`Split` base class is intentionally general so that subclasses have the +flexibility to define splits however they like. ```cpp class Split { @@ -614,6 +622,8 @@ service. We will also provide a tutorial for using the tf.data service. * How should we communicate that distributing a dataset will change the order in which elements are processed? If users' datasets rely on elements being processed in a certain order, they could face unpleasant surprises. +* Should we support splitting `skip` and `take` by having them operate at a + per-task level (skip or take the first `N` elements within each task)? * Is there a more user-friendly way to share iteration data across consumers? Distribution strategy is well-equipped with collective ops to share the iteration data, but sharing the iteration data could be a heavy burden for From 0dfebbf4f7e2dbd60b455dc5d0e18e7c8ab3fafa Mon Sep 17 00:00:00 2001 From: Ewa Matejska Date: Fri, 24 Jan 2020 12:44:34 -0800 Subject: [PATCH 144/365] Adding a link to Examples --- rfcs/yyyymmdd-rfc-template.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/yyyymmdd-rfc-template.md b/rfcs/yyyymmdd-rfc-template.md index 631fffe2f..313aa77bf 100644 --- a/rfcs/yyyymmdd-rfc-template.md +++ b/rfcs/yyyymmdd-rfc-template.md @@ -61,7 +61,7 @@ Make sure you’ve thought through and addressed the following sections. If a se * Does this proposal change best practices for some aspect of using/developing TensorFlow? How will these changes be communicated/enforced? * If design changes existing API or creates new ones, the design owner should create end-to-end examples (ideally, a tutorial) which reflects how new feature will be used. Some things to consider related to the tutorial: - The minimum requirements for this are to consider how this would be used in a Keras-based workflow, as well as a non-Keras (low-level) workflow. If either isn’t applicable, explain why. - - It should show the usage of the new feature in an end to end example (from data reading to serving, if applicable). Many new features have unexpected effects in parts far away from the place of change that can be found by running through an end-to-end example. + - It should show the usage of the new feature in an end to end example (from data reading to serving, if applicable). Many new features have unexpected effects in parts far away from the place of change that can be found by running through an end-to-end example. TFX [Examples](https://github.com/tensorflow/tfx/tree/master/tfx/examples) have historically been good in identifying such unexpected side-effects and are as such one recommended path for testing things end-to-end. - This should be written as if it is documentation of the new feature, i.e., consumable by a user, not a TensorFlow developer. The code does not need to work (since feature is not implemented yet). ### Compatibility From 42f09868239b0385d3ad9ecdf8e8883cf0e808f3 Mon Sep 17 00:00:00 2001 From: ematejska Date: Fri, 24 Jan 2020 14:54:56 -0800 Subject: [PATCH 145/365] Update for formatting changes --- rfcs/yyyymmdd-rfc-template.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/rfcs/yyyymmdd-rfc-template.md b/rfcs/yyyymmdd-rfc-template.md index 313aa77bf..fb2f5dba2 100644 --- a/rfcs/yyyymmdd-rfc-template.md +++ b/rfcs/yyyymmdd-rfc-template.md @@ -57,12 +57,15 @@ Make sure you’ve thought through and addressed the following sections. If a se * Platforms: does this work on all platforms supported by TensorFlow? If not, why is that ok? Will it work on embedded/mobile? Does it impact automatic code generation or mobile stripping tooling? Will it work with transformation tools? * Execution environments (Cloud services, accelerator hardware): what impact do you expect and how will you confirm? -### Best Practices, Tutorials and Examples +### Best Practices * Does this proposal change best practices for some aspect of using/developing TensorFlow? How will these changes be communicated/enforced? + +### Tutorials and Examples * If design changes existing API or creates new ones, the design owner should create end-to-end examples (ideally, a tutorial) which reflects how new feature will be used. Some things to consider related to the tutorial: - The minimum requirements for this are to consider how this would be used in a Keras-based workflow, as well as a non-Keras (low-level) workflow. If either isn’t applicable, explain why. - It should show the usage of the new feature in an end to end example (from data reading to serving, if applicable). Many new features have unexpected effects in parts far away from the place of change that can be found by running through an end-to-end example. TFX [Examples](https://github.com/tensorflow/tfx/tree/master/tfx/examples) have historically been good in identifying such unexpected side-effects and are as such one recommended path for testing things end-to-end. - - This should be written as if it is documentation of the new feature, i.e., consumable by a user, not a TensorFlow developer. The code does not need to work (since feature is not implemented yet). + - This should be written as if it is documentation of the new feature, i.e., consumable by a user, not a TensorFlow developer. + - The code does not need to work (since the feature is not implemented yet) but the expectation is that the code does work before the feature can be launched or promoted. ### Compatibility * Does the design conform to the backwards & forwards compatibility [requirements](https://www.tensorflow.org/programmers_guide/version_compat)? From 247b19fd86a1c116a8aa0dee20fe510863f4e751 Mon Sep 17 00:00:00 2001 From: ematejska Date: Fri, 24 Jan 2020 15:05:58 -0800 Subject: [PATCH 146/365] Small update to from "launched and promoted" to "merged" --- rfcs/yyyymmdd-rfc-template.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/yyyymmdd-rfc-template.md b/rfcs/yyyymmdd-rfc-template.md index fb2f5dba2..ca386f181 100644 --- a/rfcs/yyyymmdd-rfc-template.md +++ b/rfcs/yyyymmdd-rfc-template.md @@ -65,7 +65,7 @@ Make sure you’ve thought through and addressed the following sections. If a se - The minimum requirements for this are to consider how this would be used in a Keras-based workflow, as well as a non-Keras (low-level) workflow. If either isn’t applicable, explain why. - It should show the usage of the new feature in an end to end example (from data reading to serving, if applicable). Many new features have unexpected effects in parts far away from the place of change that can be found by running through an end-to-end example. TFX [Examples](https://github.com/tensorflow/tfx/tree/master/tfx/examples) have historically been good in identifying such unexpected side-effects and are as such one recommended path for testing things end-to-end. - This should be written as if it is documentation of the new feature, i.e., consumable by a user, not a TensorFlow developer. - - The code does not need to work (since the feature is not implemented yet) but the expectation is that the code does work before the feature can be launched or promoted. + - The code does not need to work (since the feature is not implemented yet) but the expectation is that the code does work before the feature can be merged. ### Compatibility * Does the design conform to the backwards & forwards compatibility [requirements](https://www.tensorflow.org/programmers_guide/version_compat)? From 0b28765eb58e03eeed229c1cca8b6309abeee184 Mon Sep 17 00:00:00 2001 From: Frank Chen Date: Mon, 27 Jan 2020 16:47:01 -0800 Subject: [PATCH 147/365] Revision to the API after TensorFlow Design Review --- rfcs/20200107-tf-data-snapshot.md | 169 +++++++++++++++--------------- 1 file changed, 84 insertions(+), 85 deletions(-) diff --git a/rfcs/20200107-tf-data-snapshot.md b/rfcs/20200107-tf-data-snapshot.md index e370fae33..31868c326 100644 --- a/rfcs/20200107-tf-data-snapshot.md +++ b/rfcs/20200107-tf-data-snapshot.md @@ -70,12 +70,9 @@ We are proposing the following API for the snapshot transformation. ```python def snapshot(path, compression=None, - shard_size_bytes=None, - pending_snapshot_expiry_seconds=None, - num_writer_threads=None, reader_fn=None, - mode=None, - snapshot_name=None): + writer_fn=None, + pending_snapshot_expiry_seconds=None): pass # Implementation goes here. ``` @@ -86,105 +83,107 @@ def snapshot(path, written to disk. This will support `GZIP`, `SNAPPY` or None. Defaults to AUTO. -1. `shard_size_bytes`: Optional. The maximum size of each data file to be - written by the snapshot dataset op. Defaults to AUTO. +1. `reader_fn`: Optional. The input pipeline transformation specified by + `reader_fn` is executed when the snapshot detects that there is an existing, + valid snapshot available. -1. `pending_snapshot_expiry_seconds`: Optional. How long to wait (in seconds) - before the snapshot op considers a previously unfinished snapshot to be - stale and starts writing a snapshot from scratch again. Defaults to 86400 - seconds (1 day). - -1. `num_writer_threads`: Optional. Number of threads to parallelize writing - from snapshot. We'll open up `num_writer_threads` files and write to them in - parallel. Especially useful if compression is turned on since the - compression operation tends to be intensive. If > 1, then - this might introduce non-determinism i.e. the order in which the elements - are read from the upstream iterator are different from the order they're - written. Defaults to AUTO. - -1. `reader_fn`: Optional. A user provided reader function to use when reading - the snapshot back. This allows the user to specify the concurrency and - randomization required when reading from the snapshot. + `reader_fn` is a user specified function that accepts a single argument: + (1) a Dataset of Datasets, each representing a "splits" of elements of the + original dataset. The cardinality of the input dataset matches the + cardinality of the output of `writer_fn` (see below). The function should + return a Dataset of elements of the original dataset. - `reader_fn` should be a function that accepts two arguments: (1) a list of - snapshot file paths, and (2) a reference to a `SnapshotDataset` class. - The function should return a `Dataset` class. + A default `reader_fn` will look like the following: - The `SnapshotReaderDataset` class is a `Dataset` (similar to other source datasets - like `TFRecordDataset` or `TextLineDataset`) with the following constructor: ```python - class SnapshotDataset(dataset_ops.DatasetSource): - def __init__(filenames): - """Creates a `SnapshotDataset`. - - Args: - filenames: A `tf.string` tensor or a `tf.data.Dataset` containing one or - more filenames. - """ - pass + def default_reader_fn(datasets): + # shuffle the datasets splits + datasets = datasets.shuffle(NUM_DATASETS) + # read datasets in parallel and interleave their elements + return dataset.interleave(lambda x: x, num_parallel_calls=AUTOTUNE) ``` - If the `reader_fn` is not specified, a default equivalent to the following - will be used: - ```python - def reader_fn(filenames, SnapshotDataset): - return SnapshotDataset(filenames) - ``` +1. `writer_fn`: Optional. The input pipeline specified by `writer_fn` is + executed when the snapshot op detects that there are no valid snapshots + and no other threads are currently attempting to write a snapshot. + + `writer_fn` is a user specified function that accepts a single argument: + (1) a Dataset of elements to be written out. The function should return + a Dataset of Datasets, each representing "splits" of elements of the + original dataset. The tf.data snapshot implementation will then persist + splits in parallel. + + A default writer_fn will look like the following: - Users can optionally add snapshot file shuffling and parallelism by passing - a `reader_fn` similar to the one here: ```python - def reader_fn(filenames, SnapshotDataset): - file_ds = Dataset.from_tensor_slices(filenames) - file_ds = file_ds.shuffle(1000) - reader_ds = dataset.interleave( - lambda x: SnapshotDataset(x), - cycle_length=32, - num_parallel_calls=32) - return reader_ds + def default_writer_fn(dataset): + # add a component with element index + dataset = dataset.enumerate() + # split input dataset in a round-robin fashion + return dataset.split(num_splits=NUM_CORES, key_fn=lambda i, _: i % NUM_CORE ``` -1. `mode`: Optional. The mode at which snapshot should operate. Valid options - are `auto`, `read`, `write`, and `passthrough`. The default mode is `auto`, - where the snapshot op will automatically determine what mode to operate in. +1. `pending_snapshot_expiry_seconds`: Optional. How long to wait (in seconds) + before the snapshot op considers a previously unfinished snapshot to be + stale and starts writing a snapshot from scratch again. Defaults to 86400 + seconds (1 day). + +#### Achieving Parallelism - 1. `write` mode forces the snapshot transformation to write a new - materialization to disk, regardless of whether a complete and valid - materialization currently exists. In other words, we enter the **WRITE** - state immediately. +`reader_fn` and `writer_fn` will default to passing the dataset through unchanged +by default. In other words, the default implementation will result in +single-threaded reads and writes on snapshots. Parallelism can be achieved in +`writer_fn` by splitting up the dataset into multiple datasets, and using +`num_parallel_calls` in the `interleave` function of the `reader_fn`. - 1. `read` mode forces the snapshot transformation to read from the latest - version of the materialization on disk, regardless of whether the data - stored on disk is complete and valid. In other words, we enter the - **READ** state immediately. +#### Computing Graph Fingerprints - 1. `passthrough` mode turns the snapshot transformation into a no-op. In - other words, we enter the **PASSTHROUGH** state immediately. +Snapshot attempts to determine whether a run of an input pipeline is the same +as a previous run by computing the fingerprint of the nodes within the pipeline. - 1. `auto` retains the default behavior of snapshot. See the "Standard - Kernel Workflow" section for the default behavior. +However, some input pipelines might vary in insignificant ways from run to run +that causes the fingerprinting of them to differ. For instance, consider the +following preprocessing function: -1. `snapshot_name`: Optional. If set, use the supplied string as a named - snapshot name instead of introspecting the data pipeline and automatically - generating a unique identifier for the specific data pipeline. +```python +features_to_multiply = {"feature1", "feature2", "feature3", "feature4"} - 1. Instead of generating a new fingerprint of the input processing graph or - and `run_id` (see the _Detailed Design_ section for details), we will - use the `snapshot_name` to uniquely identify the snapshot. +def preprocessing_fn(value): + keys_to_features = { + "feature1": tf.FixedLenFeature([], tf.float32, 0.0), + "feature2": tf.FixedLenFeature([], tf.float32, 0.0), + "feature3": tf.FixedLenFeature([], tf.float32, 0.0), + "feature4": tf.FixedLenFeature([], tf.float32, 0.0) + } - 1. Multiple concurrent training jobs with the same "snapshot_name" may - result in concurrent write collisions and a potentially invalid snapshot - if the jobs tries to read from and then write to the metadata file at - exactly the same time. + parsed = tf.parse_single_example(value, keys_to_features) + combined_feature = 1.0 + for item in features_to_multiply: + combined_feature *= parsed[item] - The user is expected to handle these cases and explicitly specify `mode`s - to ensure that only one run is set to `write` mode at any point if - collisions are a possibility. + return combined_feature -Note: `AUTO` options above indicates that snapshot will attempt to pick a -reasonable default that is suitable for most use cases. We will eventually add -tf.data autotuning to pick the right parameters for the best performance for -individual workloads. +dataset = ... +dataset = dataset.map(preprocessing_fn) +``` + +In the above example, our `features_to_multiply` variable uses a `set`, which is +not guaranteed to be ordered in Python 2. When we iterate over the set in the +for loop within `preprocessing_fn`, we may get a different graph on each +run (i.e. one run could have us multiplying `feature2` first, then `feature4`, +etc..., while another run may have us multiplying `feature1`, then `feature3`, +and so on). + +In cases like these, we can ask fingerprinting to use a fixed value for the +fingerprint of the map function with a new `set_fingerprint` +transformation, which asks the fingerprinting function to not compute the +fingerprint of the previous node but to use a user-specified value instead: + +```python +dataset = ... +dataset = dataset.map(preprocessing_fn) +dataset = tf.data.set_fingerprint(dataset, fingerprint="my_fixed_fp") +``` ### External API Guarantees From 19f3a62cecbcf1c82a9dfbfc540e046aa9320505 Mon Sep 17 00:00:00 2001 From: Frank Chen Date: Tue, 28 Jan 2020 13:51:47 -0800 Subject: [PATCH 148/365] Change fingerprint function to set_snapshot_fingerprint --- rfcs/20200107-tf-data-snapshot.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/rfcs/20200107-tf-data-snapshot.md b/rfcs/20200107-tf-data-snapshot.md index 31868c326..b266be9e7 100644 --- a/rfcs/20200107-tf-data-snapshot.md +++ b/rfcs/20200107-tf-data-snapshot.md @@ -168,21 +168,22 @@ dataset = dataset.map(preprocessing_fn) ``` In the above example, our `features_to_multiply` variable uses a `set`, which is -not guaranteed to be ordered in Python 2. When we iterate over the set in the +not guaranteed to be ordered in Python. When we iterate over the set in the for loop within `preprocessing_fn`, we may get a different graph on each run (i.e. one run could have us multiplying `feature2` first, then `feature4`, etc..., while another run may have us multiplying `feature1`, then `feature3`, and so on). In cases like these, we can ask fingerprinting to use a fixed value for the -fingerprint of the map function with a new `set_fingerprint` +fingerprint of the map function with a new `set_snapshot_fingerprint` transformation, which asks the fingerprinting function to not compute the fingerprint of the previous node but to use a user-specified value instead: ```python dataset = ... dataset = dataset.map(preprocessing_fn) -dataset = tf.data.set_fingerprint(dataset, fingerprint="my_fixed_fp") +dataset = tf.data.experimental.set_snapshot_fingerprint( + dataset, fingerprint="my_fixed_fp") ``` ### External API Guarantees From 9a13bd427158d7da0b4d6e4c3300b00842eed5c5 Mon Sep 17 00:00:00 2001 From: Frank Chen Date: Tue, 28 Jan 2020 14:39:14 -0800 Subject: [PATCH 149/365] Update set_snapshot_fingerprint to with_snapshot_fingerprint --- rfcs/20200107-tf-data-snapshot.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rfcs/20200107-tf-data-snapshot.md b/rfcs/20200107-tf-data-snapshot.md index b266be9e7..e9b8af3b8 100644 --- a/rfcs/20200107-tf-data-snapshot.md +++ b/rfcs/20200107-tf-data-snapshot.md @@ -175,14 +175,14 @@ etc..., while another run may have us multiplying `feature1`, then `feature3`, and so on). In cases like these, we can ask fingerprinting to use a fixed value for the -fingerprint of the map function with a new `set_snapshot_fingerprint` +fingerprint of the map function with a new `with_snapshot_fingerprint` transformation, which asks the fingerprinting function to not compute the fingerprint of the previous node but to use a user-specified value instead: ```python dataset = ... dataset = dataset.map(preprocessing_fn) -dataset = tf.data.experimental.set_snapshot_fingerprint( +dataset = tf.data.experimental.with_snapshot_fingerprint( dataset, fingerprint="my_fixed_fp") ``` From 4c005e7c203ff3b44226eeac634170f2eec12950 Mon Sep 17 00:00:00 2001 From: Andrew Audibert Date: Thu, 30 Jan 2020 10:36:01 -0800 Subject: [PATCH 150/365] Update discussion topics --- rfcs/20200113-tf-data-service.md | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/rfcs/20200113-tf-data-service.md b/rfcs/20200113-tf-data-service.md index b696f0861..004063f6f 100644 --- a/rfcs/20200113-tf-data-service.md +++ b/rfcs/20200113-tf-data-service.md @@ -622,9 +622,22 @@ service. We will also provide a tutorial for using the tf.data service. * How should we communicate that distributing a dataset will change the order in which elements are processed? If users' datasets rely on elements being processed in a certain order, they could face unpleasant surprises. -* Should we support splitting `skip` and `take` by having them operate at a - per-task level (skip or take the first `N` elements within each task)? -* Is there a more user-friendly way to share iteration data across consumers? + - Current plan is to address this through documentation. +* Should we support splitting `skip`, `take`, and `scan` by having them + operate at a per-task level (e.g. skip or take the first `N` elements within + each task)? + - Leaning towards supporting these operations at a per-task level. This is + consistent with how skip/take/scan behave today when using distribution + strategies to distribute a dataset. +* Is there a more user-friendly way to share iteration ids across consumers? Distribution strategy is well-equipped with collective ops to share the - iteration data, but sharing the iteration data could be a heavy burden for + iteration ids, but sharing the iteration id could be a heavy burden for some users. + - Distributing iteration ids is simple in the common case where a single + process builds the graph. If users are advanced enough to do distributed + training without distribution strategies, they will likely have a + different mechanism available for distributing iteration ids. +* Can `service.distribute` take a `ClusterResolver` so that the master + hostname isn't baked into the dataset definition? + - We can achieve this by having the `distribute` transformation take a + master_address_or_resolver. From 2f698f9b41461cd272840fa0e9190ff11b06bca0 Mon Sep 17 00:00:00 2001 From: Andrew Audibert Date: Thu, 30 Jan 2020 16:20:26 -0800 Subject: [PATCH 151/365] Update doc based on design review --- rfcs/20200113-tf-data-service.md | 35 ++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/rfcs/20200113-tf-data-service.md b/rfcs/20200113-tf-data-service.md index 004063f6f..8e80c6cdc 100644 --- a/rfcs/20200113-tf-data-service.md +++ b/rfcs/20200113-tf-data-service.md @@ -1,11 +1,11 @@ # Distributed tf.data service -| Status | Proposed | +| Status | Accepted | | :------------ | :------------------------------------------------------ | | **RFC #** | [195](https://github.com/tensorflow/community/pull/195) | | **Author(s)** | Andrew Audibert (aaudibert@google.com) Rohan Jain (rohanj@google.com) | | **Sponsor** | Jiri Simsa (jsimsa@google.com) | -| **Updated** | 2019-01-24 | +| **Updated** | 2019-01-30 | ## Objective @@ -143,14 +143,16 @@ here to implement datasets which produce per-replica elements, enabling idiomatic control flow. ```python -def tf.data.experimental.service.distribute(address): +def tf.data.experimental.service.distribute(address_or_resolver): """Marks that a dataset should be processed by the tf.data service. ds = ... # dataset to distribute - ds = ds.apply(tf.data.experimental.service.distribute(address)) + ds = ds.apply( + tf.data.experimental.service.distribute(address_or_resolver)) Args: - address: The address of the tf.data service master. + address_or_resolver: The address of the tf.data service master, or a + cluster resolver that can be used to determine the master address. Returns: A function that can be passed to `dataset.apply()`. @@ -622,22 +624,25 @@ service. We will also provide a tutorial for using the tf.data service. * How should we communicate that distributing a dataset will change the order in which elements are processed? If users' datasets rely on elements being processed in a certain order, they could face unpleasant surprises. - - Current plan is to address this through documentation. + - Final decision: Address this through documentation. * Should we support splitting `skip`, `take`, and `scan` by having them operate at a per-task level (e.g. skip or take the first `N` elements within each task)? - - Leaning towards supporting these operations at a per-task level. This is - consistent with how skip/take/scan behave today when using distribution - strategies to distribute a dataset. + - Final decision: Prohibit distributing these transformations, and tell + users to instead use these transformations *after* applying the + `distribute` transformation. * Is there a more user-friendly way to share iteration ids across consumers? Distribution strategy is well-equipped with collective ops to share the iteration ids, but sharing the iteration id could be a heavy burden for some users. - - Distributing iteration ids is simple in the common case where a single - process builds the graph. If users are advanced enough to do distributed - training without distribution strategies, they will likely have a - different mechanism available for distributing iteration ids. + - Final decision: It is a reasonable expectation for users to either use + distribution strategies, or distribute their own iteration ids. + TensorFlow will soon have public APIs for collective operations that + would make it easy to broadcast iteration ids. * Can `service.distribute` take a `ClusterResolver` so that the master hostname isn't baked into the dataset definition? - - We can achieve this by having the `distribute` transformation take a - master_address_or_resolver. + - Final decision: Accept `master_address_or_resolver`, and wait to resolve + the master address until iteration begins. The `ClusterResolver` will be + stored in the Python `Dataset` object. In the future, we may want C++ + implementations of `ClusterResolver` so that we can represent the + resolver within the dataset graph. From e7626c737fa09f106d81aa72a52f75bcaadffa8d Mon Sep 17 00:00:00 2001 From: genehwung Date: Thu, 30 Jan 2020 18:34:03 -0800 Subject: [PATCH 152/365] RFC: Combining Model Validator with Evaluator --- ...ombining-model-validator-with-evaluator.md | 676 ++++++++++++++++++ .../before-after.png | Bin 0 -> 76131 bytes .../change-CI-threshold-a.png | Bin 0 -> 29130 bytes .../change-CI-threshold-b.png | Bin 0 -> 23724 bytes .../value-CI-threshold-a.png | Bin 0 -> 34727 bytes .../value-CI-threshold-b.png | Bin 0 -> 29082 bytes 6 files changed, 676 insertions(+) create mode 100644 rfcs/20200117-tfx-combining-model-validator-with-evaluator.md create mode 100644 rfcs/20200117-tfx-combining-model-validator-with-evaluator/before-after.png create mode 100644 rfcs/20200117-tfx-combining-model-validator-with-evaluator/change-CI-threshold-a.png create mode 100644 rfcs/20200117-tfx-combining-model-validator-with-evaluator/change-CI-threshold-b.png create mode 100644 rfcs/20200117-tfx-combining-model-validator-with-evaluator/value-CI-threshold-a.png create mode 100644 rfcs/20200117-tfx-combining-model-validator-with-evaluator/value-CI-threshold-b.png diff --git a/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md b/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md new file mode 100644 index 000000000..603c5debe --- /dev/null +++ b/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md @@ -0,0 +1,676 @@ +# Combining ModelValidator with Evaluator + +| Status | Proposed | +| :------------ | :----------------------------------------------------- | +| **Author(s)** | Gene Huang (jinhuang@google.com), Mike Dreves | +: : (mdreves@google.com), Neoklis Polyzotis : +: : (npolyzotis@google.com) : +| **Sponsor** | Konstantinos Katsiapis (katsiapis@google.com), Neoklis | +: : Polyzotis (npolyzotis@google.com) : +| **Updated** | 2020-01-17 | + +## Objective + +This document discusses proposals for the next iteration of TFX Evaluator +design. The design has the following goals: + +1. Fuse the Evaluator and the ModelValidator into a single component, + eliminating redundant evaluation runs. +2. Adding the ModelValidator related configs into Evaluator, streamlining the + configurations for model evaluations and model validations. +3. Enabling new functionality, namely, model-diff metrics, confidence + intervals, more flexible model/data selection, which was difficult in the + previous split Evaluator/Validator design. +4. Backwards compatibility for existing uses of the two components in TFX. + +**Note**: the new Evaluator component will built on the newly released TFMA >= +v0.21. + +## Motivation + +Under the current TFX setup, +[ModelValidator](https://www.tensorflow.org/tfx/guide/modelval) is completely +separated from [Evaluator](https://www.tensorflow.org/tfx/guide/evaluator): they +run in separate binaries, have separate specifications, and do not communicate +with each other at all. This has several drawbacks: + +1. Computational redundancies: a typical use case of Evaluator is to run + evaluation on the latest data with the newly trained model + (Datalatest on Modelslatest). A typical use case of + ModelValidator is to compare the aforementioned evaluation + (Datalatest on Modelslatest) with the evaluation on + the same data with the already blessed model (Datalatest, + Modelblessed). Since, Evaluator and ModelValidator run + separately, one evaluation (Datalatest on + Modelslatest) runs twice. +2. Code redundancies: the separation makes it harder to support a consistent + set of behaviors across the two components. For instance, today + ModelValidator supports only a subset of the metrics computed by Evaluator + and making them consistent would require code duplication between the two + components. This also raises the bar to implement new requested + functionality such as computing model diff-metrics (with confidence + intervals) for both evaluation and validation. +3. Config redundancies: the configurations for both Evaluator and + ModelValidator are both partially redundant and confusing. + +## User Benefits + +We first introduce some terms we will use in the rest of the proposal. + +* A **model** is the conceptual output of a + [Trainer](https://www.tensorflow.org/tfx/guide/trainer) component in the TFX + pipeline. +* A **model artifact** represents a single instance of a model and corresponds + to the output of an execution of the corresponding + [Trainer](https://www.tensorflow.org/tfx/guide/trainer) component. + +Hence, if a TFX pipeline has two distinct trainers we will talk about two +models. Each execution of a Trainer will result in a model artifact. Another way +to think of this is that each model represents the “stream” of model artifacts +that result from the Trainer’s successive executions. + +Henceforth we assume that each model is identified by some unique name (e.g., +the name of the corresponding trainer component, or a trainer-generated handle) +and each model artifact is further identified by a unique id within that name +(e.g., the MLMD-generated artifact id, or trainer-generated version id for the +model). + +We introduce several ways to select model artifacts within the pipeline: + +* Latest output of a model: the last model artifact in the corresponding + “stream”. +* Latest blessed: the last model artifact that was blessed by the TFX pipeline + (i.e., validated by ModelValidator and InfraValidator). +* Latest pushed: the last model artifact that was pushed by the pipeline’s + Pusher component. + +Correspondingly, we also leverage existing ways to select data artifacts within +the pipeline: + +* [Span, Version, and Split](https://www.tensorflow.org/tfx/guide/examplegen#span_version_and_split): + a Span may correspond to a day of data, an hour of data, and so on. There + might be multiple versions of a Span, but in this proposed work, we always + pin on the latest version per Span. Each Span of data can be subdivided into + multiple Splits. A typical use case would be to split a span (and a version) + of data into training, evaluation, and validation data. + +As part of the unification we plan to extend the behaviors supported by the new +component. Here are a few notable examples: + +* Within a TFX pipeline run, evaluation and validation of several models + compared to a baseline (e.g., latest blessed model artifact from the + pipeline). A typical case is evaluation and validation of each new artifact + of a single model compared to the latest blessed model artifact. +* Single component run of the validation of several models to a baseline. This + can be used to: + * Unblock a previously unsuccessful validation + * Experiment or debug two related models. +* More flexible data selection + * Include multiple selections of data (e.g., selecting rolling window of + data and a fixed golden dataset) + * Exclude selections of data (e.g., selecting a rolling window of data + with exclusion of certain spans) + +In general, the new supported behaviors can be described in terms of the +following orthogonal dimensions: + +* Entire pipeline run vs single component run operation. +* Single-model vs multi-model metrics (e.g., AUC of a single model artifact vs + diff of AUCs between a model artifact and a baseline). +* Single-model vs multi-model validation constraints. + +This results in functionality that significantly expands on the available +functionality in TFX. For instance, (one-off, multi-model metrics, multi-model +constraints) is a new behavior that is not possible before. + +### Model comparison and model validation + +With a given evaluation run, we can now import two models: one candidate model +and one baseline model. The evaluation will not only calculate normal metrics +(see +[supported metrics](https://github.com/tensorflow/model-analysis/blob/master/g3doc/metrics.md)), +but also calculate corresponding diff metrics between the two models, optionally +with a confidence interval. + +With the diff metrics, users can then gate the candidate model blessing using +thresholds on the diff metrics. We introduce two ways of thresholding: value +thresholding and diff thresholding. Please see +[this section](#model-validation-config) for more details. + +## Design Proposal + +We propose to merge the Evaluator and ModelValidator component as a single +component. Here is a diagram of what is being changed in terms of data/model +flow: + +

+ +### Executor signature + +**Input**: Input of the Evaluator, which included data, model, and optional data +validation artifacts. + +* Eval dataset artifact(s) + * We assume that the contents of these artifacts will be accessed through + the + [tfx-io](https://github.com/tensorflow/community/blob/master/rfcs/20191017-tfx-standardized-inputs.md) + layer and so do not make assumptions about formats or example payloads. + * Proposed label in the input dict: “examples” +* A list of model artifacts and an optional baseline model artifacts for + evaluation/validation + * The component will support the following formats out of the box: + SavedModel, EvalSavedModel (what is used by TFMA v0.15.x), Keras. There + will also be customization hooks for other model formats, as supported + in TFMA v0.21. + * Proposed label in the input dict: “model” (same as current evaluator) + and/or "baseline_model" if there is a baseline model. The model + artifacts are auto-infered from the topology of the TFX pipeline, and + the baseline model artifact is linked to the + [ModelSpec](https://github.com/tensorflow/model-analysis/blob/1301797060a0e0d099d05eb4994f8879bce400ff/tensorflow_model_analysis/proto/config.proto) + with "is_baseline" being True (see also the section below on + *Configuration*). + * Baseline model is needed to compare different models to a baseline + model. It is specified in the + [ModelSpec](https://github.com/tensorflow/model-analysis/blob/1301797060a0e0d099d05eb4994f8879bce400ff/tensorflow_model_analysis/proto/config.proto) + with a boolean “is_baseline” turned on. +* (optional) A data-validation artifact for each of the eval datasets + * The payload of such artifacts is assumed to be an + [Anomalies](https://github.com/tensorflow/metadata/blob/master/tensorflow_metadata/proto/v0/anomalies.proto) + message. + * Proposed label in the input dict: “data_validation”. Note that in the + current setup of the executor we need to assume that the order of data + validation results matches the order of dataset artifacts. + +**Configuration**: controls which evaluation metrics are computed, slicing, how +to validate models. The fomer two parts (metrics and slicing) are built on the +existing TFMA codebase (and v0.21 adds native support for Keras and TF2 +signatures). In this document, we propose to add the configuations for model +validation. We discuss the details for validation logic at this +[section](#model-validation-config). + +* Model specifications: Specify each + [ModelSpec](https://github.com/tensorflow/model-analysis/blob/1301797060a0e0d099d05eb4994f8879bce400ff/tensorflow_model_analysis/proto/config.proto#L32) + for each model that is linked to a model artifact in the inputs. The spec + also identifies saved model and specifies how to load and run inference. + Please see + [supported model types](https://github.com/tensorflow/model-analysis/blob/master/g3doc/get_started.md#model-types-supported) + for most updated details. +* Evaluation specifications: Specify the + [MetricsConfig](https://github.com/tensorflow/model-analysis/blob/1301797060a0e0d099d05eb4994f8879bce400ff/tensorflow_model_analysis/proto/config.proto#L179), + [SlicingSpec](https://github.com/tensorflow/model-analysis/blob/1301797060a0e0d099d05eb4994f8879bce400ff/tensorflow_model_analysis/proto/config.proto#L75), + [AggregationOptions](https://github.com/tensorflow/model-analysis/blob/1301797060a0e0d099d05eb4994f8879bce400ff/tensorflow_model_analysis/proto/config.proto#L106) + method. Please see the + [TFMA metrics guide](https://github.com/tensorflow/model-analysis/blob/master/g3doc/metrics.md) + for guidance on how to set up model evaluations. Please see + [this](https://github.com/tensorflow/model-analysis/blob/master/g3doc/setup.md#slicing-specs) + for a brief explanation of slicing config. +* **Model validation specifications**: Specify validation thresholds, + including value and diff based thresholding method with or without + confidence interval. +* [Options](https://github.com/tensorflow/model-analysis/blob/1301797060a0e0d099d05eb4994f8879bce400ff/tensorflow_model_analysis/proto/config.proto#L201): + miscellaneous configuration metrics. + +**Output**: model evaluation and validation results. For each model artifact: + +* Evaluation results + * These results comprise the values of configured metrics on the eval + dataset. + * If a baseline is provided, the results will also contain a comparison of + the model to the baseline. +* Validation results + * These include validations on the configured metrics. + * If the data-validation artifact is present, it is also taken into + account for the result of data validation. + +In what follows we describe in more detail the strategies to resolve the inputs, +the model validation configuration (i.e., what validations are possible), and +the information stored in the output artifacts (i.e., the payload for evaluation +and validation). + +### Inputs + +We assume that both pipeline and single component operation is feasible through +TFX’s orchestration subsystem. In the pipeline mode, the driver can trigger the +executor when any of the following conditions hold: + +* new artifact(s) for evaluation data +* new artifact of a model under evaluation (or, latest artifact if several + have been generated since the last component execution) +* new baseline (if configured) +* new data-validation results (if configured) + +Note that users can exclude any of them from the triggering logic, e.g, when +both models and data are specified, user can configure the driver logic so that +only a new model export triggers a new evaluation run, while a new span of data +does not trigger a new evaluation run. + +We now describe possible ways to resolve each one of the inputs, motivated by +existing and upcoming use cases for model analysis and validation. + +#### Data Selection + +We identify the following ways to resolve the eval dataset artifact: + +* a rolling range of input spans (e.g., last N-spans). +* a fixed set or range of input spans. +* use the same span(s) used to train a specific model. + +Different +[Resolvers](https://github.com/tensorflow/community/blob/master/rfcs/20190828-tfx-resolver.md) +will be created to support the use cases above. Users will need to link +different resolvers to the evaluator component for different data selection +strategies. + +#### Model Selection + +We assume that the baseline model is resolved using some identifier and then one +of the following options: + +* latest pushed +* latest blessed +* latest model output +* fixed selection (e.g., by pinning a specific model artifact) + +Each evaluated model is similarly resolved using an identifier and one of the +following options: + +* fixed artifact +* latest artifact + +Similar to data selection, +[Resolvers](https://github.com/tensorflow/community/blob/master/rfcs/20190828-tfx-resolver.md) +of different functionalities should be used to specify model selection +strategies. + +### Model Validation Config + +The configuration primarily controls which metrics to compute per model and +which thresholds over these metrics control validation. The structure of the +proposed configuration protos follows largely from the +[existing config](https://github.com/tensorflow/model-analysis/blob/master/tensorflow_model_analysis/proto/config.proto) +. Here, we propose to add model validation related options in +[MetricConfig](https://github.com/tensorflow/model-analysis/blob/1301797060a0e0d099d05eb4994f8879bce400ff/tensorflow_model_analysis/proto/config.proto#L162) +as follows: + +```proto +message MetricConfig { + // Name of a class derived for either tf.keras.metrics.Metric or + // tfma.metrics.Metric. + string class_name = 1; + // Optional name of module associated with class_name. If not set + // then class will be searched for under tfma.metrics followed + // by tf.keras.metrics. + string module = 2; + // Optional JSON encoded config settings associated with the class. + // + // The config settings will be passed as **kwarg values to + // the __init__ method for the class. + // + // Example: '"name": "my_metric", "thresholds": [0.5]' + string config = 3; + + // If validate_absolute is configured then the metric is used + // for validation based on a threshold. + oneof validate_absolute { + GenericValueThreshold value_threshold = 4; + GenericValueCIthreshold value_ci_threshold = 5; + } + + // If validate_relative is configured then validation uses a comparison + // of the metric between the model and the baseline. + oneof validate_relative { + GenericChangeThreshold change_threshold = 6; + GenericChangeCIthreshold change_ci_threshold = 7; + } +} +``` + +The validation constraints are embedded in metrics_specs and is defined per +metric. If there are no constraints (i.e. an empty validate_absolute and +validate_relative), then the metrics will be computed only for evaluation. + +We also propose to add model validation option based on data validation result, +i.e., if there are anomalies detected by +[ExampleValidator](https://www.tensorflow.org/tfx/guide/exampleval) component, +the Evaluator will not bless the model. + +Model validation succeeds if all of the following conditions are satisfied: + +* All configured validation constraints are true. +* If provided, the data-validation artifacts indicate that there are no data + errors. + +#### Confidence Interval thresholds + +The use of +[confidence intervals](http://www.stat.yale.edu/Courses/1997-98/101/confint.htm) +for validation is an important part of the supported functionality. Compared to +value threshold, confidence interval adds statistical rigor to the parameter +with which the model is validated. Confidence interval is a common method for +model validation. Next, we describe some concepts behind this feature. There are +four types of thresholds: + + | Absolute | Change +----------------------- | ----------------------- | ------------------------ +w/o Confidence Interval | GenericValueThreshold | GenericChangeThreshold +w/ Confidence Interval | GenericValueCIThreshold | GenericChangeCIThreshold + +```proto +message GenericValueThreshold { + double lower_bound = 1; + double higher_bound = 2; +} + +enum Direction { + UNKNOWN = 0; + LOWER_IS_BETTER = 1; + HIGHER_IS_BETTER = 2; +} + +message GenericValueCIThreshold { + double significance_level = 1; + double minimum_lower_end = 2; + double maximum_upper_end = 3; + double maximum_spread_when_insignificant = 4; + Direction direction = 5; +} + +message GenericChangeThreshold { + double absolute = 1; + double relative = 2; + Direction direction = 3; +} + +message GenericChangeCIThreshold { + // The significance level used for hypothesis testing. Verification + // will fail if the probability that the candidate model metric + // equals the baseline model metric is less than the significance + // level. + double significance_level = 1; + // The maximum width of the confidence interval (on the difference) + // for a verification to succeed. Set this to avoid verifying + // models based on unreliable metrics. + double maximum_spread_when_insignificant = 2; + // How to use the confidence interval on the relative difference + // between new and old metrics ((new - old) / old) in verification. + // For a CI on the relative diff with bounds, diff_upper and + // diff_lower: + // - ABSOLUTE => fail if (diff_lower > 0) or (diff_upper < 0) + // - HIGHER_IS_BETTER => fail if diff_upper < 0 + // - LOWER_IS_BETTER => fail if diff_lower > 0 + Direction direction = 3; +} +``` + +##### Value CI thresholds + +Consider a metric that is validated based on an absolute value using confidence +intervals (see `GenericValueCIthreshold` above). There are two ways to set the +value CI thresholds: `minimal_lower_end` or `maximum_upper_end` which can +coexist. + +* If the lower end of the interval is larger than `minimal_lower_end`, we + consider this metric is significantly above a threshold; this is useful for + uptrend-favored metrics like accuracy. + +
+ +* On the other hand, if the upper end of the interval is smaller than + `maximum_upper_end`, we consider the metric below a threshold, this is + useful for downtrend-favored metrics like loss. + +
+ +##### Change CI thresholds + +In the case of relative validation constraints, the user can still set a +significance level for the confidence intervals on the difference between old +and new metrics. There are three ways to use the change CI thresholds, +corresponding to the direction enum in the `GenericChangeCIThreshold` message: + +* `HIGHER_IS_BETTER` +* `LOWER_IS_BETTER` +* `ABSOLUTE` + +For each metric, a validation will compute the value on the two models, and a +confidence interval on the difference between the two metrics (computed as new - +old). + +* HIGHER_IS_BETTER + + * PASS: If the lower end of the interval is larger than 0.0, the + validation will pass, regardless of whether the CI width is larger than + the maximum_spread_when_insignificant. This is useful for + uptrend-favored metrics like accuracy. A passing validation result might + look like the result below. + +
+ + * FAIL: **If the CI upper endpoint is _below _zero**, this means that the + new model is significantly worse than the previous model, and a + validation error will be raised, regardless of whether the CI width is + larger than the `maximum_spread_when_insignificant`. + * PASS: If the CI contains zero and the CI width is less than + `maximum_spread_when_insignificant`, then the validation will also + pass. 4. FAIL: If the CI contains zero and the CI width is larger than + `maximum_spread_when_insignificant`, regardless of whether the CI + includes zero or not, a validation error will be raised. + +* LOWER_IS_BETTER + + * PASS: If the upper end of the interval is smaller than + `maximum_upper_end`, regardless of whether the CI width is larger than + the `maximum_spread_when_insignificant`, we consider the metric + significantly negative, this is useful for downtrend-favored metrics + like loss. + +
+ + * FAIL: **If the CI lowerendpoint is _above _zero,** this means that the + new model metric is significantly higher than the previous model, and + thus this represents a regression. A validation error will be raised + regardless of whether the CI width is larger than the + `maximum_spread_when_insignificant`. + * PASS: If the CI contains zero and the CI width is less than + `maximum_spread_when_insignificant` then the validation will also + pass. 8. FAIL: If the CI contains zero and the CI width is larger than + `maximum_spread_when_insignificant` then a validation error will be + raised. + +* ABSOLUTE + + * FAIL: If the CI lower endpoint is above zero, or the upper endpoint is + below zero a validation error will be raised, regardless of whether the + CI width is larger than the `maximum_spread_when_insignificant`. + + * PASS: If the CI contains zero and the CI width is less than + `maximum_spread_when_insignificant` then the validation will also pass. + + * FAIL: If the CI contains zero and the CI width is larger than + `maximum_spread_when_insignificant` then a validation error will be + raised. + +### Output + +The component will output the following artifacts per model: + +* A validation artifact with a [VerifierResult](#VerifierResult) payload that + explains which metric is blocking the bless of the model. +* A metrics artifact for all slices with a payload that allows indexing per + slice key into a + [MetricsForSlice](https://github.com/tensorflow/model-analysis/blob/1301797060a0e0d099d05eb4994f8879bce400ff/tensorflow_model_analysis/proto/metrics_for_slice.proto#L240) + payload. +* A BLESSED artifact when the model passes all the specified thresholds. + +The last two outputs could be conceptually merged into a single artifact. +However, they remain separate in this proposal to help with backward +compatibility. Each output artifact is expected to carry a “model” property that +links it back to the input model. + +**Note**: an alternative to the “model” property would be to record fine-grained +lineage relationships between the output artifacts and the input models. This +can be done in two ways in MLMD: by breaking up a single component execution +into multiple “smaller” executions per model; or, by using special Contexts to +associate outputs with specific inputs. One disadvantage of this approach is +that it may dramatically increase the amount of paths to be tracked by MLMD, +making the linage query for TFMA special. Currently, we do not have plan to +follow this approach so that Evaluator can be consistent with other TFX +components. + +### VerifierResult + +We propose the VerifierResult that contains the result of model verification run +on a pair of models, which reports the following: + +* Any runtime error during the Evaluator run (runtime_status) +* Passing of verification (verification_ok) +* The specifc model anomaly if verification is not passed + (per_head_verifer_results) +* The specifc data anomaly if verification is not passed (data_anomaly). Note + that there is also anomaly detected by Example Validator, which is in a + separate payload provided by Example Validator. + +```proto +message VerifierResult { + + message MetricsValidationForSlice { + message Failure { + MetricKey metric_key = 1; + // Textual error message about which threshold is failing. + string message = 2; + } + SliceKey slice_key = 2; + repeated Failure failures = 3; + } + + message DataAnomaly { + // True if there is no input for Model Validator. This is mostly likely caused + // by empty example files. + bool input_is_empty = 1; + } + + // Any metrics validation failure or data anomaly will fail overall verifcation. + bool verificaton_ok = 1; + + // Details about which threshold is blocking which metric. + repeated MetricsValidationForSlice metric_validation_failures = 2; + // All data related anomaly will be here. + DataAnomaly data_anomaly = 3; +} +``` + +### Compatibility + +With the proposed Evaluator that has combined functionalities of Model +Validator, the current Model Validator will be deprecated. The current Model +Validator takes the latest exported model, compares it against the latest +blessed model on the eval split of the examples. The only metric being used for +gating the blessing is overall accuracy. To migrate it to the proposed +Evaluator, we can deploy the Evaluator as in +[Deployment Example](#Deployment-Example), and with the following setup: + +```python + model_analyzer_with_diff = Evaluator( + examples=example_gen.outputs['examples'], + model=trainer.outputs['model'], + baseline_model=latest_blessed_model_resolver.outputs['latest_blessed_model'], + tfma_config=tfma.Config( + model_specs=[ + tfma.ModelSpec(name="candidate", ...), + tfma.ModelSpec(name="baseline", ..., baseline=True) + ], + metric_specs=[ + tfma.MetricSpec( + model_name="candidate", + metrics=[tfma.MetricConfig( + class_name="tf.keras.metrics.Accuracy", + value_threshold=tfma.GenericValueThreshold(lower_bound=0))]) + ], + ...) + ) +``` + +## Deployment Examples + +The following shows a proposed way to configure the new component in a TFX +pipeline: + +```python +def _create_pipeline(pipeline_name: Text, pipeline_root: Text, data_root: Text, + module_file: Text, serving_model_dir: Text, + metadata_path: Text, + direct_num_workers: int) -> pipeline.Pipeline: + + """Implements the chicago taxi pipeline with TFX.""" + examples = external_input(data_root) + + # Brings data into the pipeline or otherwise joins/converts training data. + example_gen = CsvExampleGen(input=examples) + + # Computes statistics over data for visualization and example validation. + statistics_gen = StatisticsGen(examples=example_gen.outputs['examples']) + + # Generates schema based on statistics files. + infer_schema = SchemaGen( + statistics=statistics_gen.outputs['statistics'], + infer_feature_shape=False) + + # Performs anomaly detection based on statistics and data schema. + validate_stats = ExampleValidator( + statistics=statistics_gen.outputs['statistics'], + schema=infer_schema.outputs['schema']) + + # Performs transformations and feature engineering in training and serving. + transform = Transform( + examples=example_gen.outputs['examples'], + schema=infer_schema.outputs['schema'], + module_file=module_file) + + # Get the latest model so that we can warm start from the model. + latest_model_resolver = ResolverNode( + instance_name='latest_model_resolver', + resolver_class=latest_artifacts_resolver.LatestArtifactsResolver, + latest_model=Channel(type=Model)) + + # Uses user-provided Python function that implements a model using TF-Learn. + trainer = Trainer( + module_file=module_file, + transformed_examples=transform.outputs['transformed_examples'], + schema=infer_schema.outputs['schema'], + base_model=latest_model_resolver.outputs['latest_model'], + transform_graph=transform.outputs['transform_graph'], + train_args=trainer_pb2.TrainArgs(num_steps=10000), + eval_args=trainer_pb2.EvalArgs(num_steps=5000)) + + # Get the latest blessed model. + latest_blessed_model_resolver = ResolverNode( + instance_name='latest_blessed_model_resolver', + resolver_class=latest_artifacts_resolver.LatestArtifactsResolver, + latest_model=Channel(type=Model)) + + # Performs model evaluations and model validations. + model_analyzer_with_diff = Evaluator( + examples=example_gen.outputs['examples'], + model=trainer.outputs['model'], + baseline_model=latest_blessed_model_resolver.outputs['latest_blessed_model'], + tfma_config=tfma.Config( + model_specs=[ + tfma.ModelSpec(name="candidate", ...), + tfma.ModelSpec(name="baseline", ..., baseline=True) + ] + ...) + ) + + return pipeline.Pipeline( + pipeline_name=pipeline_name, + pipeline_root=pipeline_root, + components=[ + example_gen, statistics_gen, infer_schema, validate_stats, transform, + latest_model_resolver, latest_blessed_model_resolver, trainer, model_analyzer, + model_validator, pusher + ], + enable_cache=True, + metadata_connection_config=metadata.sqlite_metadata_connection_config( + metadata_path), + beam_pipeline_args=['--direct_num_workers=%d' % direct_num_workers]) +``` diff --git a/rfcs/20200117-tfx-combining-model-validator-with-evaluator/before-after.png b/rfcs/20200117-tfx-combining-model-validator-with-evaluator/before-after.png new file mode 100644 index 0000000000000000000000000000000000000000..a4578ad42d0be03d6e2f59370a953fff254912b7 GIT binary patch literal 76131 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�jZ`Uisv?y8i*t%g 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 z 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 K{_?z?kNiLHdNdUP literal 0 HcmV?d00001 diff --git a/rfcs/20200117-tfx-combining-model-validator-with-evaluator/value-CI-threshold-a.png b/rfcs/20200117-tfx-combining-model-validator-with-evaluator/value-CI-threshold-a.png new file mode 100644 index 0000000000000000000000000000000000000000..f6a0b7eca8b64692484751843ce7ef47a7064547 GIT binary patch literal 34727 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 literal 0 HcmV?d00001 diff --git a/rfcs/20200117-tfx-combining-model-validator-with-evaluator/value-CI-threshold-b.png b/rfcs/20200117-tfx-combining-model-validator-with-evaluator/value-CI-threshold-b.png new file mode 100644 index 0000000000000000000000000000000000000000..c746f35fe99c3a4c1f12b9ae1793ea1b9e5ed61d GIT binary patch literal 29082 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 CkzL6E literal 0 HcmV?d00001 From a35ccf6411b691e7a75e879de330cec10b589424 Mon Sep 17 00:00:00 2001 From: genehwung Date: Thu, 30 Jan 2020 18:45:51 -0800 Subject: [PATCH 153/365] Update 20200117-tfx-combining-model-validator-with-evaluator.md Try to fix the table. --- ...-tfx-combining-model-validator-with-evaluator.md | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md b/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md index 603c5debe..e2c2e7522 100644 --- a/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md +++ b/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md @@ -2,11 +2,8 @@ | Status | Proposed | | :------------ | :----------------------------------------------------- | -| **Author(s)** | Gene Huang (jinhuang@google.com), Mike Dreves | -: : (mdreves@google.com), Neoklis Polyzotis : -: : (npolyzotis@google.com) : -| **Sponsor** | Konstantinos Katsiapis (katsiapis@google.com), Neoklis | -: : Polyzotis (npolyzotis@google.com) : +| **Author(s)** | Gene Huang (jinhuang@google.com), Mike Dreves (mdreves@google.com), Neoklis Polyzotis (npolyzotis@google.com) | +| **Sponsor** | Konstantinos Katsiapis (katsiapis@google.com), Neoklis Polyzotis (npolyzotis@google.com) | | **Updated** | 2020-01-17 | ## Objective @@ -351,9 +348,9 @@ model validation. Next, we describe some concepts behind this feature. There are four types of thresholds: | Absolute | Change ------------------------ | ----------------------- | ------------------------ -w/o Confidence Interval | GenericValueThreshold | GenericChangeThreshold -w/ Confidence Interval | GenericValueCIThreshold | GenericChangeCIThreshold +:-------------- |:--------------------------------- |:------------------- | +| w/o Confidence Interval | GenericValueThreshold | GenericChangeThreshold | +| w/ Confidence Interval | GenericValueCIThreshold | GenericChangeCIThreshold | ```proto message GenericValueThreshold { From 8bea282b86d8e3d6dcf153dcf3e1a46768cf6354 Mon Sep 17 00:00:00 2001 From: genehwung Date: Thu, 30 Jan 2020 18:47:24 -0800 Subject: [PATCH 154/365] Update 20200117-tfx-combining-model-validator-with-evaluator.md --- rfcs/20200117-tfx-combining-model-validator-with-evaluator.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md b/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md index e2c2e7522..d4da69c48 100644 --- a/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md +++ b/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md @@ -347,8 +347,8 @@ with which the model is validated. Confidence interval is a common method for model validation. Next, we describe some concepts behind this feature. There are four types of thresholds: - | Absolute | Change -:-------------- |:--------------------------------- |:------------------- | +| | Absolute | Change | +| :-------------- |:--------------------------------- |:------------------- | | w/o Confidence Interval | GenericValueThreshold | GenericChangeThreshold | | w/ Confidence Interval | GenericValueCIThreshold | GenericChangeCIThreshold | From 6cb13bd957954809a8838d87acc2d966b8e47a7e Mon Sep 17 00:00:00 2001 From: genehwung Date: Thu, 30 Jan 2020 18:50:54 -0800 Subject: [PATCH 155/365] Add RFC number --- rfcs/20200117-tfx-combining-model-validator-with-evaluator.md | 1 + 1 file changed, 1 insertion(+) diff --git a/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md b/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md index d4da69c48..deb9c15c6 100644 --- a/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md +++ b/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md @@ -2,6 +2,7 @@ | Status | Proposed | | :------------ | :----------------------------------------------------- | +| **RFC #** | | | **Author(s)** | Gene Huang (jinhuang@google.com), Mike Dreves (mdreves@google.com), Neoklis Polyzotis (npolyzotis@google.com) | | **Sponsor** | Konstantinos Katsiapis (katsiapis@google.com), Neoklis Polyzotis (npolyzotis@google.com) | | **Updated** | 2020-01-17 | From 0839fa577e1b162e14454c1f8b82e9d59be90b7d Mon Sep 17 00:00:00 2001 From: Edd Wilder-James Date: Fri, 31 Jan 2020 09:08:34 -0800 Subject: [PATCH 156/365] Update CODEOWNERS remove Brijesh from RFC code owners --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index 4196105c3..b80e0c1e4 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -19,4 +19,4 @@ sigs/testing/ @ewilderj @dynamicwebpaige # RFCs -rfcs/ @ewilderj @martinwicke @theadactyl @brijk7 @ematejska +rfcs/ @ewilderj @martinwicke @theadactyl @ematejska From 55ed96bc92b17cb4647b4c1a440f47d0590ff8ed Mon Sep 17 00:00:00 2001 From: Anna R Date: Tue, 4 Feb 2020 00:47:22 -0800 Subject: [PATCH 157/365] Mark long term plan as optional, minor changes --- rfcs/20191127-pip-structure.md | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/rfcs/20191127-pip-structure.md b/rfcs/20191127-pip-structure.md index f577e7578..92093ffd6 100644 --- a/rfcs/20191127-pip-structure.md +++ b/rfcs/20191127-pip-structure.md @@ -5,7 +5,7 @@ | **RFC #** | [182](https://github.com/tensorflow/community/pull/182)| | **Author(s)** | Anna Revinskaya (annarev@google.com) | | **Sponsor** | Alex Passos (apassos@tensorflow.org) | -| **Updated** | 2019-11-27 | +| **Updated** | 2020-02-04 | ## Objective @@ -107,8 +107,6 @@ Primary purpose of keeping the virtual pip package is to workaround circular estimator imports. Alternatively, we can resolve this issue by lazy loading estimator. -Lazy loading by itself would mean that we no longer have autocomplete for estimator. As a workaround, we can import estimator in the stub *.pyi* file. - Estimator import in root *\_\_init\_\_.py* file: ```python from tensorflow.python.util.lazy_loader import LazyLoader as _LazyLoader @@ -118,12 +116,7 @@ estimator = _LazyLoader( setattr(_current_module, "estimator", estimator) ``` -Estimator import in root *\_\_init\_\_.pyi* file: -```python -from tensorflow_estimator.python.estimator.api._v2 import estimator as estimator -``` -In Python 3, we don't even need the *.pyi* file and instead can import estimator -without lazy loading if `typing.TYPE_CHECKING` is `True`. +Lazy loading by itself would mean that we no longer have autocomplete for estimator. As a workaround, we can import estimator without lazy loading if `typing.TYPE_CHECKING` is `True`. After building a pip package with this change all of the following work in PyCharms (both released and EAP) and VS Code: @@ -137,7 +130,7 @@ To support the TensorFlow Metapackage plans we could add a new pip package that ![alt_text](https://github.com/annarev/community/blob/pip_structure_rfc/rfcs/20191127-pip-structure/new_modular_structure.png "New proposed modular TensorFlow structure.") -### Long term: Import from external package directly +### Long term (optional): Import from external package directly Short term would fix IDE issues, but the package structure is still not as clean as it could be. We resolve cycles with lazy loading but it would be even better not to have this circular structure at all. Therefore, I propose that we don’t import external packages into TensorFlow 3.0. Users who want to use estimator, tensorboard summaries or keras could import them separately: @@ -164,7 +157,7 @@ Rationale for this change: * One way dependencies (estimator depends on tensorflow and not vise-versa). * Minimal overhead for users. Adding an extra import is easy. -Note that this change cannot be done in TensorFlow 2.x due to API guarantees. However, we can keep `tf.estimator`, `tf.keras` (once it is moved out of TensorFlow), `tf.summary` available while encouraging users to import from tensorflow\_estimator, tensorflow\_keras (once available) and tensorboard instead. This would require some work to make sure these packages contain the right API (for e.g. tensorflow\_estimator.estimator currently always contains V1 API). +Note that this change cannot be done in TensorFlow 2.x due to API guarantees. Also, accessing these packages from `tf.` would match familiar workflows. Therefore, we can keep `tf.estimator`, `tf.keras` (once it is moved out of TensorFlow), `tf.summary` available as an alternative to importing pip package directly. This would require some work to make sure these packages contain the right API (for e.g. tensorflow\_estimator.estimator currently always contains V1 API). ### Alternatives Considered From 8532aba8761278e4a9544c666f4c8f2c988acb11 Mon Sep 17 00:00:00 2001 From: Jiayi Zhao <46733165+1025KB@users.noreply.github.com> Date: Wed, 5 Feb 2020 11:17:40 -0800 Subject: [PATCH 158/365] RFC: TFX Generic Trainer --- rfcs/20200117-tfx-generic-trainer.md | 253 +++++++++++++++++++++++++++ 1 file changed, 253 insertions(+) create mode 100644 rfcs/20200117-tfx-generic-trainer.md diff --git a/rfcs/20200117-tfx-generic-trainer.md b/rfcs/20200117-tfx-generic-trainer.md new file mode 100644 index 000000000..a8d3efa1c --- /dev/null +++ b/rfcs/20200117-tfx-generic-trainer.md @@ -0,0 +1,253 @@ +# TFX Generic Trainer + +| Status | Proposed | +| :------------ | :-------------------------------------------------------- | +| **Author(s)** | Jiayi Zhao (jyzhao@google.com) | +| **Sponsor** | Konstantinos Katsiapis (katsiapis@google.com), Zhitao Li | +: : (zhitaoli@google.com), Karmel Allison (karmel@google.com) : +| **Updated** | 2020-01-17 | + +## Objective + +### Goal + +* Support any TensorFlow Training loop in TFX Trainer in addition to + tf.estimator, primarily focused on native Keras model. + +### Non Goal + +* Natively support multi-worker distributed training by the system. +* Non-TF training that generates savedmodel. + +## Background and Motivation + +In current TFX Trainer component, only tf.estimator is supported for training +and generating models. User provides a module file which contains a +`trainer_fn`, trainer will call the function to get the estimator model and +related spec for training, and generate a saved model by +`tf.estimator.train_and_evaluate`. + +[tf.keras](https://www.tensorflow.org/guide/keras) is TensorFlow's high-level +API for building and training models. It’s currently supported in TFX by using +`tf.keras.estimator.model_to_estimator` in module file. User can create keras +model in their `trainer_fn` but need to convert it to estimator for return (for +example, +[cifar10](https://github.com/tensorflow/tfx/blob/r0.15/tfx/examples/cifar10/cifar10_utils.py)). + +This doc will focus on native Keras support (without model_to_estimator) in TFX. +We propose changing the user facing API to be more generic so that users can do +(single node) native Keras model training within TFX. + +## User Benefit + +* Allows non estimator based training, especially Keras as TensorFlow is + establishing Keras as the + [Standardized high-level API](https://medium.com/tensorflow/standardizing-on-keras-guidance-on-high-level-apis-in-tensorflow-2-0-bad2b04c819a). +* Allows + [custom training](https://www.tensorflow.org/tutorials/customization/custom_training) + for customization of training loop. + +## Detailed Design + +Below shows the pseudo code for current TFX Trainer’s executor: + +```python +class Executor(base_executor.BaseExecutor): + + def Do(self, input_dict: Dict[Text, List[types.Artifact]], + output_dict: Dict[Text, List[types.Artifact]], + exec_properties: Dict[Text, Any]) -> None: + """Uses a user-supplied tf.estimator to train a tf model locally.""" + trainer_fn = self._GetFn(exec_properties) # load from module file + trainer_fn_args = self._GetFnArgs( + input_dict, output_dict, exec_properties) + + training_spec = trainer_fn(trainer_fn_args) + tf.estimator.train_and_evaluate(training_spec['estimator'], ...) + # For TFMA (downstream evaluator and model validator component). + tfma.export.export_eval_savedmodel(training_spec['estimator'], ...) +``` + +And the user supplied module file contains a function called `trainer_fn` which +returns an estimator: + +```python +def _build_keras_model() -> tf.keras.Model: + model = keras.XXX + model.compile(...) + return model + +def trainer_fn( + trainer_fn_args: trainer.executor.TrainerFnArgs) -> Dict[Text, Any]: + """Build the estimator using the high level API. + + Args: + trainer_fn_args: Holds args used to train the model as name/value pairs. + + Returns: + A dict of the following: + - estimator: The estimator that will be used for training and eval. + - train_spec: Spec for training. + - eval_spec: Spec for eval. + - eval_input_receiver_fn: Input function for eval. + """ + ... + + estimator = tf.keras.estimator.model_to_estimator( + keras_model=_build_keras_model(), ...) + + return { + 'estimator': estimator, + 'train_spec': ..., + 'eval_spec': ..., + 'eval_input_receiver_fn': ... + } + +``` + +We propose that in generic trainer's module file, user not only need to provide +the model, but also control how the model is trained (`train_and_evaluate` for +estimator and `model.fit` for keras will be in user module file instead of in +executor), thus executor can be generic to model, and users can customize the +[training loop](https://www.tensorflow.org/tutorials/customization/custom_training_walkthrough#training_loop). +The executor pseudo code would look like below: + +```python +class Executor(base_executor.BaseExecutor): + + def Do(self, input_dict: Dict[Text, List[types.Artifact]], + output_dict: Dict[Text, List[types.Artifact]], + exec_properties: Dict[Text, Any]) -> None: + """Train a user-supplied tf model.""" + run_fn = self._GetRunFn(exec_properties) # load from module file + + # run_fn_args contains + # 1. input train and eval data path. + # 2. desired output model path for the trained savedmodel. + # 3. training args, e.g., train/eval steps. + # 4. optional base model. + # 5. optional tuning result (kerastuner.HyperParameters config). + # 6. optional custom config for passing params from component. + run_fn_args = self._GetRunFnArgs( + input_dict, output_dict, exec_properties) + + run_fn(run_fn_args) + # Validates the existence of run_fn's output savedmodel. + ... +``` + +In module file, user needs to provide `run_fn` instead of previous `trainer_fn`. +The `trainer_fn` was responsible for creating the model, in addition to that, +`run_fn` also needs to handle training part and output the trained model to a +desired location given by run args: + +```python +def run_fn(args: trainer.executor.TrainerFnArgs) -> None: + """Build the TF model and train it.""" + model = _build_keras_model() + model.fit(...) + model.save(...) +``` + +In generic trainer, executor is mainly for handling the +[artifact](https://github.com/tensorflow/tfx/blob/r0.21/docs/guide/index.md#artifacts) +(a unit of data that is passed between components), all model related logic is +user supplied. + +A separate GenericExecutor will be created, and the existing trainer executor +will be sunsetted. We plan to keep estimator based executor for one more version +and then deprecate it. + +### How to convert current estimator based module file + +To convert the current estimator based module file (e.g., +[iris](https://github.com/tensorflow/tfx/blob/r0.15/tfx/examples/iris/iris_utils.py)) +for generic trainer, simply add a run_fn that calls the trainer_fn and train the +returned model (code that used to be in the trainer.executor.Do). + +```python +def run_fn(fn_args: executor.TrainerFnArgs): + """Train the model based on given args. + + Args: + fn_args: Holds args used to train the model as name/value pairs. + """ + schema = io_utils.parse_pbtxt_file(fn_args.schema_file, schema_pb2.Schema()) + + # Reuse the trainer_fn. + training_spec = trainer_fn(fn_args, schema) + + # Train the model + absl.logging.info('Training model.') + tf.estimator.train_and_evaluate(training_spec['estimator'], + training_spec['train_spec'], + training_spec['eval_spec']) + absl.logging.info('Training complete. Model written to %s', + fn_args.serving_model_dir) + + # Export an eval savedmodel for TFMA, note that for keras, eval savedmodel is + # not needed as TFMA2 can use serving model for evaluation. + absl.logging.info('Exporting eval_savedmodel for TFMA.') + tfma.export.export_eval_savedmodel( + estimator=training_spec['estimator'], + export_dir_base=fn_args.eval_model_dir, + eval_input_receiver_fn=training_spec['eval_input_receiver_fn']) + + absl.logging.info('Exported eval_savedmodel to %s.', fn_args.eval_model_dir) +``` + +### tf.distribute.Strategy + +Distribute strategy will be user module's responsibilty with the new generic +trainer interface. To use it, user needs to modify the `run_fn()` in the module +file, below shows the pseudo code example for single worker and multi-worker +distribute strategy. + +For single worker distribute strategy, you need to create an appropriate +[tf.distribute.Strategy](https://www.tensorflow.org/api_docs/python/tf/distribute/Strategy), +and move the creation and compiling of Keras model inside `strategy.scope`: + +```python +def run_fn(args: trainer.executor.TrainerFnArgs) -> None: + """Build the TF model and train it.""" + mirrored_strategy = tf.distribute.MirroredStrategy() + with mirrored_strategy.scope(): + model = _build_keras_model() + model.fit(...) + model.save(...) +``` + +For multi-worker distribution strategy, the TFX Trainer does not have ability to +spawn multi-worker cluster by +[current executor](https://github.com/tensorflow/tfx/blob/r0.21/tfx/components/trainer/executor.py), +hence not covered in the scope of this RFC. If the execution environment of an +implementation of TFX Trainer has the ability to bring up the cluster of worker +machines, and execute user funtion in the workers with correct +[TF_CONFIG setup](https://www.tensorflow.org/guide/distributed_training#setting_up_tf_config_environment_variable), +such as GCP AI Platform Training service via +[extensions/google_cloud_ai_platform/trainer/executor.py](https://github.com/tensorflow/tfx/blob/r0.21/tfx/extensions/google_cloud_ai_platform/trainer/executor.py), +the `run_fn()` would look like below: + +```python +def _is_chief() -> bool: + """Decide whether the current worker's role is chief.""" + # Check TF_CONFIG (set by TFX when bring up the worker) in execution env. + ... + +def run_fn(args: trainer.executor.TrainerFnArgs) -> None: + """Build the TF model and train it.""" + ps_strategy = tf.distribute.experimental.ParameterServerStrategy() + with ps_strategy.scope(): + model = _build_keras_model() + model.fit(...) + if _is_chief(): + model.save(...) +``` + +For details about `tf.distribute.Strategy`, please refer to +[here](https://www.tensorflow.org/guide/distributed_training). + +## Future work + +* Examples for custom training loop. +* Native support for multi-worker distribution. From afdba42f2f5fc400c3c0dd9ea04402f0df6cfaba Mon Sep 17 00:00:00 2001 From: Jiayi Zhao <46733165+1025KB@users.noreply.github.com> Date: Wed, 5 Feb 2020 11:22:35 -0800 Subject: [PATCH 159/365] Update 20200117-tfx-generic-trainer.md --- rfcs/20200117-tfx-generic-trainer.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200117-tfx-generic-trainer.md b/rfcs/20200117-tfx-generic-trainer.md index a8d3efa1c..50e7c7de6 100644 --- a/rfcs/20200117-tfx-generic-trainer.md +++ b/rfcs/20200117-tfx-generic-trainer.md @@ -4,7 +4,7 @@ | :------------ | :-------------------------------------------------------- | | **Author(s)** | Jiayi Zhao (jyzhao@google.com) | | **Sponsor** | Konstantinos Katsiapis (katsiapis@google.com), Zhitao Li | -: : (zhitaoli@google.com), Karmel Allison (karmel@google.com) : +| | (zhitaoli@google.com), Karmel Allison (karmel@google.com) | | **Updated** | 2020-01-17 | ## Objective From 67c6bcb4990c68b58a140efc83d82bcef6e50ecb Mon Sep 17 00:00:00 2001 From: Jiayi Zhao <46733165+1025KB@users.noreply.github.com> Date: Wed, 5 Feb 2020 11:23:49 -0800 Subject: [PATCH 160/365] Update 20200117-tfx-generic-trainer.md --- rfcs/20200117-tfx-generic-trainer.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rfcs/20200117-tfx-generic-trainer.md b/rfcs/20200117-tfx-generic-trainer.md index 50e7c7de6..2f914b16d 100644 --- a/rfcs/20200117-tfx-generic-trainer.md +++ b/rfcs/20200117-tfx-generic-trainer.md @@ -3,8 +3,7 @@ | Status | Proposed | | :------------ | :-------------------------------------------------------- | | **Author(s)** | Jiayi Zhao (jyzhao@google.com) | -| **Sponsor** | Konstantinos Katsiapis (katsiapis@google.com), Zhitao Li | -| | (zhitaoli@google.com), Karmel Allison (karmel@google.com) | +| **Sponsor** | Konstantinos Katsiapis (katsiapis@google.com), Zhitao Li (zhitaoli@google.com), Karmel Allison (karmel@google.com) | | **Updated** | 2020-01-17 | ## Objective From b269f1326e5235e65327d29b10ac9a548d86c604 Mon Sep 17 00:00:00 2001 From: Zhuoran Liu <49047362+lzr-google@users.noreply.github.com> Date: Wed, 5 Feb 2020 11:38:49 -0800 Subject: [PATCH 161/365] Update 20191106-tf2-tpu-savedmodel.md Since this API change has been approved and checked in, I now update this doc with the final accepted design and switch status to 'accepted'. --- rfcs/20191106-tf2-tpu-savedmodel.md | 60 +++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 3 deletions(-) diff --git a/rfcs/20191106-tf2-tpu-savedmodel.md b/rfcs/20191106-tf2-tpu-savedmodel.md index 2064b7728..5a738ab6c 100644 --- a/rfcs/20191106-tf2-tpu-savedmodel.md +++ b/rfcs/20191106-tf2-tpu-savedmodel.md @@ -1,11 +1,11 @@ # TPU SavedModel Export API for TF2.x -Status | Proposed +Status | Accepted :------------ | :----------------------------------------------------------- **RFC #** | [171](https://github.com/tensorflow/community/pull/171) **Author(s)** | Zhuoran Liu (lzr@google.com), Youlong Cheng (ylc@google.com) **Sponsor** | Jonathan Hseu (jhseu@google.com) -**Updated** | 2019-11-06 +**Updated** | 2020-11-06 ## Objective @@ -82,7 +82,61 @@ whatever reason, e.g. CPU computations can be parallelized, users don’t have enough TPU resources, etc. In this case, there has to be a way for them to tell SavedModel that only ‘dense’ is to run on TPU. -## Design Proposal +## Design + +The general idea is to allow users to store a function-alias mapping during +model saving, so that they can refer to the function they want to rewrite for +TPU inference when they use downstream graph transformation tools to rewrite +their models for TPU serving. + +This alias mapping mechanism is because a single tf.function can generate many +ConcreteFunctions. If a downstream tool wants to refer to all concrete functions +generated by a single tf.function, it can use the `function_aliases` argument to +store a map from the alias name to all concrete function names. + +### Major changes + ++ For `tf.saved_model.SaveOptions`: A new slot `function_aliases` is added, to + allow users specify alias of functions they potentially wish to be rewritten + by external graph transformation tools (TPU Inference Converter in this + case); ++ For `MetaInfoDef` in `MetaGraphDef` in `SavedModel`: A new field + `functions_aliases` is added, to store names of FunctionDef mapping to their + aliases. + +### User facing API + +Users can give `FunctionDef`s they potentially want to rewrite for TPU inference +an alias when saving model: + +```python +class MyModel: + @tf.function + def func(): + ... + @tf.function + def serve(): + ... + func() + +model = MyModel() +signatures = { + 'serving_default': model.serve.get_concrete_function(), +} +options = tf.saved_model.SaveOptions(function_aliases={ + 'my_func': model.func, +}) +tf.saved_model.save(model, export_dir, signatures, options) +``` + +And leverage some model conversion tool to convert their CPU model for TPU +serving: + +```python +MyModelConversionTool(input_saved_model, output_saved_model, function_alias='my_func') +``` + +## Alternative Design Considered ### Caveat From f0999ed44432a9909bc8d16f8d96b12cc32f2dc4 Mon Sep 17 00:00:00 2001 From: Zhuoran Liu <49047362+lzr-google@users.noreply.github.com> Date: Wed, 5 Feb 2020 11:41:51 -0800 Subject: [PATCH 162/365] Update 20191106-tf2-tpu-savedmodel.md --- rfcs/20191106-tf2-tpu-savedmodel.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20191106-tf2-tpu-savedmodel.md b/rfcs/20191106-tf2-tpu-savedmodel.md index 5a738ab6c..097f655ef 100644 --- a/rfcs/20191106-tf2-tpu-savedmodel.md +++ b/rfcs/20191106-tf2-tpu-savedmodel.md @@ -5,7 +5,7 @@ Status | Accepted **RFC #** | [171](https://github.com/tensorflow/community/pull/171) **Author(s)** | Zhuoran Liu (lzr@google.com), Youlong Cheng (ylc@google.com) **Sponsor** | Jonathan Hseu (jhseu@google.com) -**Updated** | 2020-11-06 +**Updated** | 2020-02-04 ## Objective From e4865fd54871edb6c73695381e248b9beb2eb050 Mon Sep 17 00:00:00 2001 From: Jiayi Zhao <46733165+1025KB@users.noreply.github.com> Date: Wed, 5 Feb 2020 14:19:48 -0800 Subject: [PATCH 163/365] Update 20200117-tfx-generic-trainer.md --- rfcs/20200117-tfx-generic-trainer.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rfcs/20200117-tfx-generic-trainer.md b/rfcs/20200117-tfx-generic-trainer.md index 2f914b16d..9b9843fa0 100644 --- a/rfcs/20200117-tfx-generic-trainer.md +++ b/rfcs/20200117-tfx-generic-trainer.md @@ -3,7 +3,7 @@ | Status | Proposed | | :------------ | :-------------------------------------------------------- | | **Author(s)** | Jiayi Zhao (jyzhao@google.com) | -| **Sponsor** | Konstantinos Katsiapis (katsiapis@google.com), Zhitao Li (zhitaoli@google.com), Karmel Allison (karmel@google.com) | +| **Sponsor** | Konstantinos Katsiapis (katsiapis@google.com), Zhitao Li (zhitaoli@google.com), Karmel Allison (karmel@google.com) | | **Updated** | 2020-01-17 | ## Objective @@ -197,7 +197,7 @@ def run_fn(fn_args: executor.TrainerFnArgs): ### tf.distribute.Strategy -Distribute strategy will be user module's responsibilty with the new generic +Distribution strategy will be user module's responsibilty with the new generic trainer interface. To use it, user needs to modify the `run_fn()` in the module file, below shows the pseudo code example for single worker and multi-worker distribute strategy. From 7af3f0b67f091ed7108944cd0255cd57543d5995 Mon Sep 17 00:00:00 2001 From: qlzh727 Date: Thu, 6 Feb 2020 10:15:10 -0800 Subject: [PATCH 164/365] Initial commit for RFC standalone Keras repository --- rfcs/20200205-standalone-keras-repository.md | 323 +++++++++++++++++++ 1 file changed, 323 insertions(+) create mode 100644 rfcs/20200205-standalone-keras-repository.md diff --git a/rfcs/20200205-standalone-keras-repository.md b/rfcs/20200205-standalone-keras-repository.md new file mode 100644 index 000000000..4a3242ceb --- /dev/null +++ b/rfcs/20200205-standalone-keras-repository.md @@ -0,0 +1,323 @@ +# Standalone Keras Repository + +| Status | Proposed | +:-------------- |:---------------------------------------------------- | +| **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) (update when you have community PR #)| +| **Author(s)** | Qianli Zhu (scottzhu@google.com), Francois Chollet (fchollet@google.com) | +| **Sponsor** | Francois Chollet (fchollet@google.com), Karmel Allison (karmel@google.com) | +| **Updated** | 2020-02-05 | + +## Objective + +Split the Keras code from Tensorflow main Github repository to its own +repository, and use Tensorflow as a public dependency. + +Currently any contribution to Keras code will require building entire +Tensorflow, which is quite expensive to do with normal hardware and toolset +setting. Having a separate repository will allow Keras to just build its own +code without building Tensorflow. This should greatly improve the external +developer velocity when they contribute to Keras code. + +On the TensorFlow side, the split should increase maintainability and greater +modularity by ensuring that the TensorFlow high-level API can be built entirely +on top of public TensorFlow low-level APIs. + +## Motivation + +Building open source Tensorflow project end to end is an extensive exercise. +With a standard GCP instance, it might take more than 1 hour to finish the whole +build process, it might take longer with a mac laptop. Although the local build +cache might help speed up the follow up builds, the initial time cost is too +high for normal software development. Internally Google has a distributed build +and caching service, which we heavily rely on, and can finish all Keras tests +within 5 mins, sadly we can't expose this to external contributors. + +This lead to a few issues: + +* Discourage contribution since external developers can't test their change and +make sure it is correct. +* External developers send unverified PR and Google reviewers spend time back +and forth, fixing the PR. Sometimes PR is just not moving forward because of the +lengthy feedback loop. + +There are other side benefits if we split the repository. Keras, as the high +level API, probably should have similar access level as end user for low level +API. When splitting the repository, Keras will have to import Tensorflow and +rely on TF public APIs. If Keras ends up using many TF private functions, it +might be an indication of tight coupling of implementation details, or if some +certain functions is used extensively, we might want to consider exposing them +as public low level API. + +This design is also aligned with design for [Modular Tensorflow](https://github.com/tensorflow/community/blob/master/rfcs/20190305-modular-tensorflow.md), +which splits the Tensorflow into smaller components, and not tightly coupled +together. + +## User Benefit + +External contributors should experience much shorter turn-around time when +building/testing Keras since they don't need to build TF anymore. This should +have a positive effect for developer engagement. + +## Design Proposal + +### New location of the code + +Github: the code will live at [keras-team/keras](https://github.com/keras-team/keras), +joining the other Keras SIG projects and replacing the current external Keras +codebase. tf.Keras will also replace Keras on PyPI. + +Also considered: tensorflow/keras. + +| keras-team/keras | tensorflow/keras | +:------------------- |:------------------------------------------- | +|Under the umbrella of Keras SIG, which hosts all other Keras related projects like keras-application, KerasTuner etc.|Under the umbrella of tensorflow, which also hosts other TF related projects.| +|Lots of existing followers on keras-team, who may not be easily migrated to TF project.|No cross org repo management cost on Github. Could rely on a lot of existing setup in Tensorflow.| +|Can't easily delete keras project, which already have tons of stars and incoming reference links. Continued existence of external Keras code will create confusion ("why is there tensorflow/keras AND keras-team/keras?")|Issue/PR under the same org can be transferred easily, but not cross the different org. See here| + +### Source of Truth +Tensorflow uses Google internal code repository as the source of truth. Every PR +is converted to Google internal change first, submitted in internal system, and +then copied to Github as commits. At the same time, PR is marked as merged with +the corresponding commit hash. + +For Keras, since we are trying to promote user engagement, we hope it will use +Github as a source of truth. This will have the following implications: + +* We expect the majority of the code development/contribution from Github +and the devtools/tests/scripts should focus on the Github development use +case. See more details below. +* Keras CI/presubmit build for Github repo is targeting tf-nightly pip +package as dependency. This means any change to TF will take at most 24 +hours to be reflected to Keras. +* Code will be mirrored to Google internal code repository via Google internal +tools within a very short time window. The Google internal CI tests will run on +HEAD for both Keras and TF code. +* CI build for Github might break when it sees a new version of tf-nightly, if +certain behavior has been changed and didn't caught by unit tests. We have +observed a few similar cases on [tf/addons] +(https://github.com/tensorflow/addons). We hope this can be reduced by stronger +unit test coverage by Google internel sysmte, when both TF and Keras code are +tested on HEAD. +* PIP package management. Keras will now follow the tf-estimator approach. +"pip install tensorflow" should also install keras as well. There are more +details for the PIP package in the [Improved pip package structure] +(https://github.com/tensorflow/community/pull/182). + +### Dependency Cleanup +As the high level API, Keras should have the direct dependency to TF low level +API, but not the other way around. Unfortunately there is some existing reverse +dependency in the TF code that relies on Keras, which we should update/remove +when we split the repository. + +The current usage of Keras from Tensorflow are: +* Unit tests, which should be converted to integration tests, or port the tests +to Keras repository. +* feature_column. +* Legacy tf.layers in v1 API. +* legacy RNN cells. +* TPU support code for optimizer_v2. +* SavedModel. +* TF Lite. + +All the imports can be changed to use dynamic import like below: + +```python +try: + from tensorflow.python.keras.engine import base_layer +except ImportError: + tf.logging.error('keras is not installed, please pip install keras') + base_layer = None +``` + +### Use Keras to use public TF API symbol + +The current Keras code will still work if they still do: +```python +from tensorflow.python.ops import array_ops + +ones = array_ops.ones([2, 3]) +``` + +On the other hand, since Keras is a separate repository, having it only use TF +public API symbol will heavily reduce the chance of breakage because of relying +on private methods or implementation details. We think this is a item that is +critial to the health of the repository. This also allows TF to change without +breaking Keras. + +The converted code should look like: + +```python +import tensorflow as tf + +ones = tf.ones([2, 3]) +``` + +During this conversion, we might notice that certain functions used in Keras are +not public API. Decision should be made on a case by case base for whether: + +* Copy the function to Keras +* Replace the usage with other alternative public API +* Make the function a new TF public API. + +Note that this work can be contributed by the open source community. + +### Two stage change process + +For any change that is changing both Tensorflow and Keras, they will need to be +split into two, one as a PR to TF, and the other one as PR to Keras. Here is +some common scenario to split the change. + +1. Adding a new behavior to Tensorflow, and let Keras rely on it. Note that the +TF change needs to be submitted first, and keras PR needs to wait for the new TF +nightly PIP. Also note that the rollback of TF PR will cause Keras to break, the +rollback sequence should be PR 33333 and then PR 22222. The Google internal test +for TF should catch this. + +```python +# Existing scenario. +# PR 11111 (2 files updated) +# +++ tensorflow/python/ops/array_ops.py +def some_new_function(inputs): + ... + +# +++ tensorflow/python/keras/layers/core.py + +class new_layer(Layer): + + def call(inputs): + array_ops.some_new_function(inputs) + ... +``` + +```python +# New scenario. +# PR 22222 (1 file updated) +# +++ tensorflow/python/ops/array_ops.py +@tf.export('some_new_function') +def some_new_function(inputs): + ... + +================================== +# PR 33333 (1 file updated) +# +++ tensorflow/python/keras/layers/core.py + +class new_layer(Layer): + + def call(inputs): + tf.some_new_function(inputs) + ... +``` + +2. Changing an existing behavior of TF function signature. +Note that the PR 22222 needs to submit with both new and old function since +Google internal CI is still testing from HEAD. The existing_function can be +deleted after PR 33333 is submitted. Also note that this issue is caused by +Keras not using public TF API but the implementation details. Moving towards +public API should reduce the chance of this kind of change. + +```python +# Existing scenario. +# PR 11111 (2 files updated) +# tensorflow/python/ops/array_ops.py +<<< +def existing_function(inputs): + ... +>>> +def new_function(inputs, knob1=False, knob2=1): + ... +# tensorflow/python/keras/layers/core.py + +class existing_layer(Layer): + + def call(inputs): +<<< + array_ops.existing_function(inputs) +>>> + array_ops.new_function( + inputs, + knob1=True, + knob2=3) +``` + +```python +# New scenario. +# PR 22222 (1 file updated) +# tensorflow/python/ops/array_ops.py +<<< +def existing_function(inputs): + ... +>>> +def existing_function(inputs): + return new_function( + inputs, + knob1=False, + knob2=1) + +def new_function(inputs, knob1, knob2=1): + ... + +================================== +# PR 33333 (1 file updated) +# tensorflow/python/keras/layers/core.py +class existing_layer(Layer): + + def call(inputs): +<<< + array_ops.existing_function(inputs) + ... +>>> + array_ops.new_function( + inputs, + knob1=True, + knob2=3) +``` + + +### Performance Implications +Probably will have some performance implications on python if we change to use +public APIs. Need some benchmark to ensure the status quo. + +### Dependencies +Tensorflow PIP package will auto install keras package, which shouldn't cause +any difference on end user side. Under the hood, Keras will be a different +package imported by tf_core, same as we do for TF estimator. + +### Engineering Impact +* The build and test time locally should be greatly reduced, since compiling TF +is no longer needed, and also Keras is pure python which doesn't need any +complication. +* The cross boundary change will require some extra handling since the change +needs to be split into two or more. Same as the rollback. +* Tooling on Github side is not as good as the Google internal tool. This will +impact the engineer velocity for existing Keras team members. + +### Best Practices, Tutorials and Examples +* The new Keras repository should have a new contribution guide about how to +setup a local test environment and iterate based on that. Similar one in +tf/addons can be used as an example. +* The existing TF doc needs to be updated to advocate that Keras code now lives +in a different repository, and the new process of sending PR etc. +* When filing an issue, people might need to consider where to send the issue, +eg if it is a Keras issue or an issue caused by TF but surfaced by Keras. The +different ownership of the repository will also cause difficulties for +transferring the issue. + +### User Impact +* No end user facing change for current TF user, only affecting the developer, +eg in flight PR during the transition period. +* For current Keras PIP package users, they will get the new TF keras package +when they update their PIP, which should have more features than the current +Keras-team version. + +## Questions and Discussion Topics + +1. Tools for issue tracking: We can't rely on Google internal bug tracking tool +since it's not publicly visible, also if managing Github issues across the ong +is hard, we might need to find some alternatives for tracking bugs/features etc. +2. OSS test for TPU related code. Since the TPU is not available during local +test, The verification will have to be done when the PR is mirror to Google +internal. +3. Transition period for moving the Keras code from tensorflow/tensorflow to +keras-team/keras. All the inflight PR/issue will be affected, either they need +to be copied to keras-team/keras, and if they also touch tensorflow, then they +need to split into two. \ No newline at end of file From 0145eea24e3a7d37d411caae1aba11f074d95875 Mon Sep 17 00:00:00 2001 From: qlzh727 Date: Thu, 6 Feb 2020 10:58:24 -0800 Subject: [PATCH 165/365] Update wording and nits. --- rfcs/20200205-standalone-keras-repository.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/rfcs/20200205-standalone-keras-repository.md b/rfcs/20200205-standalone-keras-repository.md index 4a3242ceb..92b50aa0c 100644 --- a/rfcs/20200205-standalone-keras-repository.md +++ b/rfcs/20200205-standalone-keras-repository.md @@ -129,7 +129,7 @@ except ImportError: base_layer = None ``` -### Use Keras to use public TF API symbol +### Update Keras to use public TF API symbol The current Keras code will still work if they still do: ```python @@ -139,10 +139,10 @@ ones = array_ops.ones([2, 3]) ``` On the other hand, since Keras is a separate repository, having it only use TF -public API symbol will heavily reduce the chance of breakage because of relying +public API symbol will heavily reduce the chance of breakage caused by relying on private methods or implementation details. We think this is a item that is -critial to the health of the repository. This also allows TF to change without -breaking Keras. +critial to the health of the project. This also allows TF to change internal +implementation without worrying breaking Keras. The converted code should look like: @@ -155,23 +155,23 @@ ones = tf.ones([2, 3]) During this conversion, we might notice that certain functions used in Keras are not public API. Decision should be made on a case by case base for whether: -* Copy the function to Keras -* Replace the usage with other alternative public API -* Make the function a new TF public API. +* Copy the functionality from TF to Keras. +* Replace the usage with other alternative TF public API. +* Make the functionality a new TF public API. Note that this work can be contributed by the open source community. ### Two stage change process For any change that is changing both Tensorflow and Keras, they will need to be -split into two, one as a PR to TF, and the other one as PR to Keras. Here is +split into two, one as a PR to TF, and the other PR to Keras. Here is some common scenario to split the change. 1. Adding a new behavior to Tensorflow, and let Keras rely on it. Note that the TF change needs to be submitted first, and keras PR needs to wait for the new TF nightly PIP. Also note that the rollback of TF PR will cause Keras to break, the rollback sequence should be PR 33333 and then PR 22222. The Google internal test -for TF should catch this. +for TF should catch the error if the rollback sequence is not correct. ```python # Existing scenario. From 0405d803912771e21eec0590cb70fb9d63fdc421 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Chollet?= Date: Thu, 6 Feb 2020 12:06:45 -0800 Subject: [PATCH 166/365] Update 20200205-standalone-keras-repository.md --- rfcs/20200205-standalone-keras-repository.md | 292 ++++++++++--------- 1 file changed, 160 insertions(+), 132 deletions(-) diff --git a/rfcs/20200205-standalone-keras-repository.md b/rfcs/20200205-standalone-keras-repository.md index 92b50aa0c..69eb2466e 100644 --- a/rfcs/20200205-standalone-keras-repository.md +++ b/rfcs/20200205-standalone-keras-repository.md @@ -4,122 +4,139 @@ :-------------- |:---------------------------------------------------- | | **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) (update when you have community PR #)| | **Author(s)** | Qianli Zhu (scottzhu@google.com), Francois Chollet (fchollet@google.com) | -| **Sponsor** | Francois Chollet (fchollet@google.com), Karmel Allison (karmel@google.com) | -| **Updated** | 2020-02-05 | +| **Sponsor** | Karmel Allison (karmel@google.com) | +| **Updated** | 2020-02-05 | ## Objective -Split the Keras code from Tensorflow main Github repository to its own -repository, and use Tensorflow as a public dependency. +Move the Keras code from the TensorFlow main GitHub repository to its own +repository, with TensorFlow as a dependency. -Currently any contribution to Keras code will require building entire -Tensorflow, which is quite expensive to do with normal hardware and toolset -setting. Having a separate repository will allow Keras to just build its own -code without building Tensorflow. This should greatly improve the external -developer velocity when they contribute to Keras code. +## Motivation -On the TensorFlow side, the split should increase maintainability and greater -modularity by ensuring that the TensorFlow high-level API can be built entirely -on top of public TensorFlow low-level APIs. +### Build times -## Motivation +Building the open-source TensorFlow project end-to-end is an extensive exercise. +With a standard GCP instance, it might take more than one hour to finish the whole +build process (it might take longer with a Mac laptop). Although the local build +cache might help speed up the follow-up builds, the initial time cost is too +high for regular software development workflows. Internally, Google has a +distributed build and caching service, which Googlers heavily rely on, +that can build TensorFlow and run all Keras tests within 5 mins. Sadly, +we can't expose this to external contributors. + +Currently, any contribution to Keras code will require building all of +TensorFlow, which is quite expensive to do for average users. +Having a separate repository will allow the Keras package to be built +without building TensorFlow. This should greatly improve the +velocity of open-source developers when they contribute to Keras code. -Building open source Tensorflow project end to end is an extensive exercise. -With a standard GCP instance, it might take more than 1 hour to finish the whole -build process, it might take longer with a mac laptop. Although the local build -cache might help speed up the follow up builds, the initial time cost is too -high for normal software development. Internally Google has a distributed build -and caching service, which we heavily rely on, and can finish all Keras tests -within 5 mins, sadly we can't expose this to external contributors. +### Community Benefit -This lead to a few issues: +The difficulty of building TensorFlow from scratch in order to make a PR +to Keras code has been a significant source of issues: -* Discourage contribution since external developers can't test their change and -make sure it is correct. -* External developers send unverified PR and Google reviewers spend time back +* It discouraged contributions, since many external developers couldn't test +their changes and make sure they were correct. +* External developers would send unverified PRs, and Google reviewers spend time back and forth, fixing the PR. Sometimes PR is just not moving forward because of the lengthy feedback loop. -There are other side benefits if we split the repository. Keras, as the high -level API, probably should have similar access level as end user for low level -API. When splitting the repository, Keras will have to import Tensorflow and -rely on TF public APIs. If Keras ends up using many TF private functions, it -might be an indication of tight coupling of implementation details, or if some -certain functions is used extensively, we might want to consider exposing them -as public low level API. +With the new standalone Keras repository, external contributors +should experience much shorter turn-around time when +building/testing Keras, since they don't need to build TensorFlow anymore. +This should have a positive impact on building a vibrant open-source +developer community. + +In addition, by getting the Keras team at Google to start developing Keras +using the same public tools and infrastructure as third-party developers, +we make the development process more transparent and more community-oriented. + +### TensorFlow API modularity -This design is also aligned with design for [Modular Tensorflow](https://github.com/tensorflow/community/blob/master/rfcs/20190305-modular-tensorflow.md), -which splits the Tensorflow into smaller components, and not tightly coupled -together. +There are other side-benefits if we split the repository. Currently, Keras +has to rely on a number of private TensorFlow APIs. However, a litmus test +of the quality of the public TensorFlow low-level APIs is that they should +be strictly sufficient to a higher-level API like Keras. +After splitting the repository, Keras will have to import TensorFlow and +rely exclusively on public APIs. If Keras still ends up using TensorFlow +private features, it might be an indication of tight coupling of +implementation details. If certain private features are extensively used, +we might want to consider exposing them as public low level API. -## User Benefit +This design is also aligned with thee design for +[Modular TensorFlow](https://github.com/tensorflow/community/blob/master/rfcs/20190305-modular-tensorflow.md), +which splits the TensorFlow project into smaller components that are not +tightly coupled together. -External contributors should experience much shorter turn-around time when -building/testing Keras since they don't need to build TF anymore. This should -have a positive effect for developer engagement. ## Design Proposal ### New location of the code -Github: the code will live at [keras-team/keras](https://github.com/keras-team/keras), +GitHub: the code will live at [keras-team/keras](https://github.com/keras-team/keras), joining the other Keras SIG projects and replacing the current external Keras -codebase. tf.Keras will also replace Keras on PyPI. +codebase. `tf.Keras` will also replace Keras on PyPI. -Also considered: tensorflow/keras. +Also considered: `tensorflow/keras`. | keras-team/keras | tensorflow/keras | :------------------- |:------------------------------------------- | |Under the umbrella of Keras SIG, which hosts all other Keras related projects like keras-application, KerasTuner etc.|Under the umbrella of tensorflow, which also hosts other TF related projects.| -|Lots of existing followers on keras-team, who may not be easily migrated to TF project.|No cross org repo management cost on Github. Could rely on a lot of existing setup in Tensorflow.| +|Lots of existing followers on keras-team, who may not be easily migrated to TF project.|No cross org repo management cost on GitHub. Could rely on a lot of existing setup in TensorFlow.| |Can't easily delete keras project, which already have tons of stars and incoming reference links. Continued existence of external Keras code will create confusion ("why is there tensorflow/keras AND keras-team/keras?")|Issue/PR under the same org can be transferred easily, but not cross the different org. See here| ### Source of Truth -Tensorflow uses Google internal code repository as the source of truth. Every PR -is converted to Google internal change first, submitted in internal system, and -then copied to Github as commits. At the same time, PR is marked as merged with -the corresponding commit hash. - -For Keras, since we are trying to promote user engagement, we hope it will use -Github as a source of truth. This will have the following implications: - -* We expect the majority of the code development/contribution from Github -and the devtools/tests/scripts should focus on the Github development use -case. See more details below. -* Keras CI/presubmit build for Github repo is targeting tf-nightly pip + +TensorFlow uses a Google-internal code repository as its source of truth. Every PR +submitted though GitHub is converted to a Google-internal change first, +submitted through the internal system, and then copied to GitHub as commits. +At the same time, PR is marked as merged with the corresponding commit hash. + +Likewise, issue tracking and code review takes place through Google-internal tools. + +For Keras, since we are trying to promote community engagement, we hope to use +GitHub as source of truth. This will have the following implications: + +* We expect the majority of the code development/contribution from GitHub +and the dev tools / tests / scripts should focus on the GitHub development use +case. See below for more details. +* Keras CI/presubmit build for the GitHub repo should target the `tf-nightly` pip package as dependency. This means any change to TF will take at most 24 -hours to be reflected to Keras. -* Code will be mirrored to Google internal code repository via Google internal -tools within a very short time window. The Google internal CI tests will run on -HEAD for both Keras and TF code. -* CI build for Github might break when it sees a new version of tf-nightly, if -certain behavior has been changed and didn't caught by unit tests. We have -observed a few similar cases on [tf/addons] -(https://github.com/tensorflow/addons). We hope this can be reduced by stronger -unit test coverage by Google internel sysmte, when both TF and Keras code are -tested on HEAD. -* PIP package management. Keras will now follow the tf-estimator approach. -"pip install tensorflow" should also install keras as well. There are more -details for the PIP package in the [Improved pip package structure] -(https://github.com/tensorflow/community/pull/182). +hours to be reflected on the Keras side. +* The Keras code will be mirrored to a Google-internal code repository via Google-internal +tools within a very short time window after each change. +The Google-internal CI tests will run on HEAD for both Keras and TF code. +* The CI build for the repository on GitHub might break when it sees a +new version of `tf-nightly`, if certain behavior has been changed and wasn't +caught by unit tests. We have observed a few similar cases with +[tf/addons](https://github.com/tensorflow/addons). +We hope this can be reduced by stronger +unit test coverage by Google internel systems, when both TF and Keras code are +tested at HEAD. +* pip package management. Keras will now follow the `tf-estimator` approach. +"pip install tensorflow" should also install Keras (from PyPI) as well. +There are more details for the pip package in the +[Improved pip package structure](https://github.com/tensorflow/community/pull/182) RFC. ### Dependency Cleanup -As the high level API, Keras should have the direct dependency to TF low level -API, but not the other way around. Unfortunately there is some existing reverse -dependency in the TF code that relies on Keras, which we should update/remove + +As the high-level API of TensorFlow, Keras should have a direct dependency on +TF low-level APIs, but not the other way around. Unfortunately, there is some existing reverse +logic in the TF code that relies on Keras, which we should update/remove when we split the repository. -The current usage of Keras from Tensorflow are: +The current usage of Keras from TensorFlow are: * Unit tests, which should be converted to integration tests, or port the tests to Keras repository. -* feature_column. -* Legacy tf.layers in v1 API. +* `feature_column`. +* Legacy `tf.layers` in v1 API. * legacy RNN cells. -* TPU support code for optimizer_v2. +* TPU support code for `optimizer_v2`. * SavedModel. * TF Lite. -All the imports can be changed to use dynamic import like below: +All Keras imports in integration tests can be changed to use dynamic import like below: ```python try: @@ -129,22 +146,22 @@ except ImportError: base_layer = None ``` -### Update Keras to use public TF API symbol +### Update Keras to only use public TF APIs -The current Keras code will still work if they still do: +The current Keras code will still work if we do e.g.: ```python from tensorflow.python.ops import array_ops ones = array_ops.ones([2, 3]) ``` -On the other hand, since Keras is a separate repository, having it only use TF -public API symbol will heavily reduce the chance of breakage caused by relying -on private methods or implementation details. We think this is a item that is +However, since Keras is a separate repository, having it only use TF +public APIs will heavily reduce the chance of breakage caused by relying +on private methods or implementation details. We think this point is critial to the health of the project. This also allows TF to change internal -implementation without worrying breaking Keras. +implementation details without worrying about breaking Keras. -The converted code should look like: +The converted code should look like e.g.: ```python import tensorflow as tf @@ -152,26 +169,29 @@ import tensorflow as tf ones = tf.ones([2, 3]) ``` -During this conversion, we might notice that certain functions used in Keras are -not public API. Decision should be made on a case by case base for whether: +During this conversion, we might notice that certain TF features used in Keras are +not public. A decision should be made on a case-by-case basis: * Copy the functionality from TF to Keras. -* Replace the usage with other alternative TF public API. +* Replace the usage with another alternative TF public API. * Make the functionality a new TF public API. -Note that this work can be contributed by the open source community. +**Note that the open-source community is encouraged to contribute to this effort.** + +### Two-stage change process -### Two stage change process +For any change that is affecting both TensorFlow and Keras, the change +will need to be split into two, one as a PR to the TF repo, +and the other as a PR to the Keras repo. Here are some common scenarios: -For any change that is changing both Tensorflow and Keras, they will need to be -split into two, one as a PR to TF, and the other PR to Keras. Here is -some common scenario to split the change. +1. Adding a new feature to TensorFlow, and having Keras rely on it. Note that the +TF change needs to be submitted first, and the Keras PR needs to wait for the new TF +nightly to become available on PyPI. -1. Adding a new behavior to Tensorflow, and let Keras rely on it. Note that the -TF change needs to be submitted first, and keras PR needs to wait for the new TF -nightly PIP. Also note that the rollback of TF PR will cause Keras to break, the -rollback sequence should be PR 33333 and then PR 22222. The Google internal test -for TF should catch the error if the rollback sequence is not correct. +Also note that any rollback of the TF PR will cause Keras to break, the +rollback sequence should be PR 33333 and then PR 22222 (see example below). +The Google-internal test for TF should catch the error if the rollback sequence +is not correct. ```python # Existing scenario. @@ -208,12 +228,14 @@ class new_layer(Layer): ... ``` -2. Changing an existing behavior of TF function signature. -Note that the PR 22222 needs to submit with both new and old function since -Google internal CI is still testing from HEAD. The existing_function can be +2. Changing the behavior of an existing TF API. + +Note that the PR 22222 needs to be submitted with both the new and old +function since Google internal CI is still testing from HEAD. +The previous function can be deleted after PR 33333 is submitted. Also note that this issue is caused by -Keras not using public TF API but the implementation details. Moving towards -public API should reduce the chance of this kind of change. +Keras not using exclusively public TF API, but relying on TF implementation details. +Moving towards only using public APIs should reduce the likelihood of this kind of issue. ```python # Existing scenario. @@ -274,50 +296,56 @@ class existing_layer(Layer): ### Performance Implications -Probably will have some performance implications on python if we change to use -public APIs. Need some benchmark to ensure the status quo. + +There may be some performance implications as we move towards only using +public TF APIs. We need to maintain a benchmark to ensure that there +is no performance regression. ### Dependencies -Tensorflow PIP package will auto install keras package, which shouldn't cause -any difference on end user side. Under the hood, Keras will be a different -package imported by tf_core, same as we do for TF estimator. - -### Engineering Impact -* The build and test time locally should be greatly reduced, since compiling TF -is no longer needed, and also Keras is pure python which doesn't need any -complication. -* The cross boundary change will require some extra handling since the change -needs to be split into two or more. Same as the rollback. -* Tooling on Github side is not as good as the Google internal tool. This will -impact the engineer velocity for existing Keras team members. + +The TensorFlow pip package will auto-install the Keras package, which shouldn't make +any difference on the end-user side. Under the hood, Keras will be a different +package imported by `tf_core`, like what we do for TF estimator. + +### Developer experience Impact + +* The local build and test times should be greatly reduced, since compiling TF +is no longer needed, and Keras is a pure-Python project. +* Cross-boundary changes will require some extra handling since such changes +needs to be split into two or more PRs. Same for rollbacks. +* Tooling on the GitHub side (for code review, etc.) is not as good as +Google-internal tools. This may impact the develoment velocity for +Keras team members at Google. ### Best Practices, Tutorials and Examples + * The new Keras repository should have a new contribution guide about how to -setup a local test environment and iterate based on that. Similar one in +setup a local test environment and iterate based on that. A similar one in tf/addons can be used as an example. -* The existing TF doc needs to be updated to advocate that Keras code now lives -in a different repository, and the new process of sending PR etc. +* The existing TF docs needs to be updated to highlight that Keras code now lives +in a different repository, with a new process for sending PRs, etc. * When filing an issue, people might need to consider where to send the issue, -eg if it is a Keras issue or an issue caused by TF but surfaced by Keras. The +e.g. is it a Keras issue or an issue caused by TF but surfaced by Keras. The different ownership of the repository will also cause difficulties for transferring the issue. ### User Impact -* No end user facing change for current TF user, only affecting the developer, -eg in flight PR during the transition period. -* For current Keras PIP package users, they will get the new TF keras package -when they update their PIP, which should have more features than the current + +* No end-user facing change for current TF users; the split would only affect +developers, e.g. in-flight PRs during the transition period. +* For current Keras pip package users, they will get the new TF keras package +when they update their pip, which should have more features than the current Keras-team version. ## Questions and Discussion Topics -1. Tools for issue tracking: We can't rely on Google internal bug tracking tool -since it's not publicly visible, also if managing Github issues across the ong +1. Tools for issue tracking: we can't rely on Google-internal bug tracking tool +since it's not publicly visible, also if managing GitHub issues across the orgs is hard, we might need to find some alternatives for tracking bugs/features etc. -2. OSS test for TPU related code. Since the TPU is not available during local -test, The verification will have to be done when the PR is mirror to Google -internal. -3. Transition period for moving the Keras code from tensorflow/tensorflow to -keras-team/keras. All the inflight PR/issue will be affected, either they need -to be copied to keras-team/keras, and if they also touch tensorflow, then they -need to split into two. \ No newline at end of file +2. OSS tests for TPU-related code. Since TPUs are not available during local +testing, the verification will have to be done when the PR is mirrored to Google's +internal systems. +3. Transition period for moving the Keras code from `tensorflow/tensorflow` to +`keras-team/keras`. All in-flight PRs / issues will be affected: they need +to be copied to `keras-team/keras`, or if they also touch TensorFlow, then they +need to split into two. From 3cce978931330e9b01347d4f970c66e670fd148c Mon Sep 17 00:00:00 2001 From: qlzh727 Date: Thu, 6 Feb 2020 12:20:45 -0800 Subject: [PATCH 167/365] Update the RFC nubmer --- rfcs/20200205-standalone-keras-repository.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200205-standalone-keras-repository.md b/rfcs/20200205-standalone-keras-repository.md index 69eb2466e..1a8765efa 100644 --- a/rfcs/20200205-standalone-keras-repository.md +++ b/rfcs/20200205-standalone-keras-repository.md @@ -2,7 +2,7 @@ | Status | Proposed | :-------------- |:---------------------------------------------------- | -| **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) (update when you have community PR #)| +| **RFC #** | [202](https://github.com/tensorflow/community/pull/202) | | **Author(s)** | Qianli Zhu (scottzhu@google.com), Francois Chollet (fchollet@google.com) | | **Sponsor** | Karmel Allison (karmel@google.com) | | **Updated** | 2020-02-05 | From c43366e9d646dd8598987ab299fdcc0a9af11562 Mon Sep 17 00:00:00 2001 From: Jiayi Zhao <46733165+1025KB@users.noreply.github.com> Date: Thu, 6 Feb 2020 13:10:10 -0800 Subject: [PATCH 168/365] Update 20200117-tfx-generic-trainer.md --- rfcs/20200117-tfx-generic-trainer.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rfcs/20200117-tfx-generic-trainer.md b/rfcs/20200117-tfx-generic-trainer.md index 9b9843fa0..2200af433 100644 --- a/rfcs/20200117-tfx-generic-trainer.md +++ b/rfcs/20200117-tfx-generic-trainer.md @@ -237,8 +237,10 @@ def run_fn(args: trainer.executor.TrainerFnArgs) -> None: """Build the TF model and train it.""" ps_strategy = tf.distribute.experimental.ParameterServerStrategy() with ps_strategy.scope(): + train_dataset = _create_dataset(args.train_files, ...) + eval_dataset = _create_dataset(args.eval_files, ...) model = _build_keras_model() - model.fit(...) + model.fit(train_dataset, validation_data=eval_dataset, ...) if _is_chief(): model.save(...) ``` From 0e7981a08c9daf5d3d2dd348eeb475ca5914fb05 Mon Sep 17 00:00:00 2001 From: Jiayi Zhao <46733165+1025KB@users.noreply.github.com> Date: Fri, 7 Feb 2020 14:57:39 -0800 Subject: [PATCH 169/365] Update 20200117-tfx-generic-trainer.md --- rfcs/20200117-tfx-generic-trainer.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/rfcs/20200117-tfx-generic-trainer.md b/rfcs/20200117-tfx-generic-trainer.md index 2200af433..9b9843fa0 100644 --- a/rfcs/20200117-tfx-generic-trainer.md +++ b/rfcs/20200117-tfx-generic-trainer.md @@ -237,10 +237,8 @@ def run_fn(args: trainer.executor.TrainerFnArgs) -> None: """Build the TF model and train it.""" ps_strategy = tf.distribute.experimental.ParameterServerStrategy() with ps_strategy.scope(): - train_dataset = _create_dataset(args.train_files, ...) - eval_dataset = _create_dataset(args.eval_files, ...) model = _build_keras_model() - model.fit(train_dataset, validation_data=eval_dataset, ...) + model.fit(...) if _is_chief(): model.save(...) ``` From 3f0dc9276eb4f287120aa3ac60ee37fd605098d6 Mon Sep 17 00:00:00 2001 From: Qianli Scott Zhu Date: Mon, 10 Feb 2020 10:50:17 -0800 Subject: [PATCH 170/365] Update rfcs/20200205-standalone-keras-repository.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Frédéric Branchaud-Charron --- rfcs/20200205-standalone-keras-repository.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200205-standalone-keras-repository.md b/rfcs/20200205-standalone-keras-repository.md index 1a8765efa..e4da10510 100644 --- a/rfcs/20200205-standalone-keras-repository.md +++ b/rfcs/20200205-standalone-keras-repository.md @@ -64,7 +64,7 @@ private features, it might be an indication of tight coupling of implementation details. If certain private features are extensively used, we might want to consider exposing them as public low level API. -This design is also aligned with thee design for +This design is also aligned with the design for [Modular TensorFlow](https://github.com/tensorflow/community/blob/master/rfcs/20190305-modular-tensorflow.md), which splits the TensorFlow project into smaller components that are not tightly coupled together. From 0109f0f81f9920f6e11c608d2e89e63a95f184e1 Mon Sep 17 00:00:00 2001 From: Qianli Scott Zhu Date: Mon, 10 Feb 2020 10:59:51 -0800 Subject: [PATCH 171/365] Update rfcs/20200205-standalone-keras-repository.md Co-Authored-By: Gabriel de Marmiesse --- rfcs/20200205-standalone-keras-repository.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200205-standalone-keras-repository.md b/rfcs/20200205-standalone-keras-repository.md index e4da10510..da332e1ce 100644 --- a/rfcs/20200205-standalone-keras-repository.md +++ b/rfcs/20200205-standalone-keras-repository.md @@ -84,7 +84,7 @@ Also considered: `tensorflow/keras`. :------------------- |:------------------------------------------- | |Under the umbrella of Keras SIG, which hosts all other Keras related projects like keras-application, KerasTuner etc.|Under the umbrella of tensorflow, which also hosts other TF related projects.| |Lots of existing followers on keras-team, who may not be easily migrated to TF project.|No cross org repo management cost on GitHub. Could rely on a lot of existing setup in TensorFlow.| -|Can't easily delete keras project, which already have tons of stars and incoming reference links. Continued existence of external Keras code will create confusion ("why is there tensorflow/keras AND keras-team/keras?")|Issue/PR under the same org can be transferred easily, but not cross the different org. See here| +|Can't easily delete keras project, which already have tons of stars and incoming reference links. Continued existence of external Keras code will create confusion ("why is there tensorflow/keras AND keras-team/keras?")|Issue/PR under the same org can be transferred easily, but not cross the different org. See [here](https://help.github.com/en/github/managing-your-work-on-github/transferring-an-issue-to-another-repository)| ### Source of Truth From b654b44ea14f07090d841efc37690790b92bed5c Mon Sep 17 00:00:00 2001 From: qlzh727 Date: Mon, 10 Feb 2020 11:22:15 -0800 Subject: [PATCH 172/365] Update tf to Keras usage with more details. --- rfcs/20200205-standalone-keras-repository.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/rfcs/20200205-standalone-keras-repository.md b/rfcs/20200205-standalone-keras-repository.md index da332e1ce..5df82e840 100644 --- a/rfcs/20200205-standalone-keras-repository.md +++ b/rfcs/20200205-standalone-keras-repository.md @@ -129,12 +129,12 @@ when we split the repository. The current usage of Keras from TensorFlow are: * Unit tests, which should be converted to integration tests, or port the tests to Keras repository. -* `feature_column`. -* Legacy `tf.layers` in v1 API. -* legacy RNN cells. +* `feature_column`, which uses Keras base layer and model. +* Legacy `tf.layers` in v1 API, which uses Keras base layer as base class. +* legacy RNN cells, which uses Keras serialization and deserialization. * TPU support code for `optimizer_v2`. -* SavedModel. -* TF Lite. +* TF Lite for keras model saving utils. +* Aliases from tf.losses/metrics/initializers/optimizers in tf.compat.v1. All Keras imports in integration tests can be changed to use dynamic import like below: From 7c57540a428d0b3c3e1fa0ac727580545396175f Mon Sep 17 00:00:00 2001 From: qlzh727 Date: Mon, 10 Feb 2020 11:29:21 -0800 Subject: [PATCH 173/365] Change to use the list view for comparison. Make it easy for comment to point to the exact place. --- rfcs/20200205-standalone-keras-repository.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/rfcs/20200205-standalone-keras-repository.md b/rfcs/20200205-standalone-keras-repository.md index 5df82e840..50fd90513 100644 --- a/rfcs/20200205-standalone-keras-repository.md +++ b/rfcs/20200205-standalone-keras-repository.md @@ -80,11 +80,19 @@ codebase. `tf.Keras` will also replace Keras on PyPI. Also considered: `tensorflow/keras`. -| keras-team/keras | tensorflow/keras | -:------------------- |:------------------------------------------- | -|Under the umbrella of Keras SIG, which hosts all other Keras related projects like keras-application, KerasTuner etc.|Under the umbrella of tensorflow, which also hosts other TF related projects.| -|Lots of existing followers on keras-team, who may not be easily migrated to TF project.|No cross org repo management cost on GitHub. Could rely on a lot of existing setup in TensorFlow.| -|Can't easily delete keras project, which already have tons of stars and incoming reference links. Continued existence of external Keras code will create confusion ("why is there tensorflow/keras AND keras-team/keras?")|Issue/PR under the same org can be transferred easily, but not cross the different org. See [here](https://help.github.com/en/github/managing-your-work-on-github/transferring-an-issue-to-another-repository)| +Pros: +1. Under the umbrella of Keras SIG, which hosts all other Keras related projects +like keras-application, KerasTuner etc. +1. Lots of existing followers on keras-team, who may not be easily migrated to +TF project. +1. Can't easily delete keras project, which already have tons of stars and +incoming reference links. Continued existence of external Keras code will create +confusion ("why is there tensorflow/keras AND keras-team/keras?"). + +Cons: +1. The repo isn't under the same organization as tensorflow, which makes it hard +to manage issues/PRs and references across the organization. +1. Existing issue/PR under the same org can be transferred easily, but not cross the different org. See [here](https://help.github.com/en/github/managing-your-work-on-github/transferring-an-issue-to-another-repository). ### Source of Truth From 86d2c3737ba5f285e486494196a3de17383148a7 Mon Sep 17 00:00:00 2001 From: qlzh727 Date: Mon, 10 Feb 2020 11:37:08 -0800 Subject: [PATCH 174/365] Update the section for PIP package dependency. Intake the suggestion from @gabrieldemarmiesse based on the tf-addons. --- rfcs/20200205-standalone-keras-repository.md | 24 +++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/rfcs/20200205-standalone-keras-repository.md b/rfcs/20200205-standalone-keras-repository.md index 50fd90513..d6fee7f3d 100644 --- a/rfcs/20200205-standalone-keras-repository.md +++ b/rfcs/20200205-standalone-keras-repository.md @@ -109,19 +109,21 @@ GitHub as source of truth. This will have the following implications: * We expect the majority of the code development/contribution from GitHub and the dev tools / tests / scripts should focus on the GitHub development use case. See below for more details. -* Keras CI/presubmit build for the GitHub repo should target the `tf-nightly` pip -package as dependency. This means any change to TF will take at most 24 -hours to be reflected on the Keras side. -* The Keras code will be mirrored to a Google-internal code repository via Google-internal -tools within a very short time window after each change. +* Keras CI/presubmit build for the GitHub repo should target a stable PIP +version of tensorflow package as dependency. It could either be a `tf-nightly` +with explicit version, or a release candidate version, or a stable version. +Depend on a floating `tf-nightly` could cause CI build to be instable, which has +been observed in other repository +[like tf-addons](https://github.com/tensorflow/addons/pull/912). +* The Keras code will be mirrored to a Google-internal code repository via +Google-internal tools within a very short time window after each change. The Google-internal CI tests will run on HEAD for both Keras and TF code. -* The CI build for the repository on GitHub might break when it sees a -new version of `tf-nightly`, if certain behavior has been changed and wasn't -caught by unit tests. We have observed a few similar cases with +* The CI build for the repository on GitHub might break when it points to a +new version of `tf-nightly`, if certain behavior has been changed and wasn't +caught by unit tests. We have observed a few similar cases with [tf/addons](https://github.com/tensorflow/addons). -We hope this can be reduced by stronger -unit test coverage by Google internel systems, when both TF and Keras code are -tested at HEAD. +We hope this can be reduced by stronger unit test coverage by Google internel +systems, when both TF and Keras code are tested at HEAD. * pip package management. Keras will now follow the `tf-estimator` approach. "pip install tensorflow" should also install Keras (from PyPI) as well. There are more details for the pip package in the From 1504e525f8819adc4e81259bffed69e97b17a187 Mon Sep 17 00:00:00 2001 From: qlzh727 Date: Mon, 10 Feb 2020 13:08:20 -0800 Subject: [PATCH 175/365] Update the preferred PIP package version. --- rfcs/20200205-standalone-keras-repository.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/rfcs/20200205-standalone-keras-repository.md b/rfcs/20200205-standalone-keras-repository.md index d6fee7f3d..afe6d3607 100644 --- a/rfcs/20200205-standalone-keras-repository.md +++ b/rfcs/20200205-standalone-keras-repository.md @@ -110,8 +110,13 @@ GitHub as source of truth. This will have the following implications: and the dev tools / tests / scripts should focus on the GitHub development use case. See below for more details. * Keras CI/presubmit build for the GitHub repo should target a stable PIP -version of tensorflow package as dependency. It could either be a `tf-nightly` -with explicit version, or a release candidate version, or a stable version. +version of tensorflow package as dependency. It could either be (preferably in +this order): + * a stable version + * a release candidate version + * a `tf-nightly` with explicit version. +Using a nightly version for testing should be motivated by the usage of a API +feature not present in the stable or pre-release version. Depend on a floating `tf-nightly` could cause CI build to be instable, which has been observed in other repository [like tf-addons](https://github.com/tensorflow/addons/pull/912). From f4af07b21f59f9a163287b2fd2b2d6772f9e7349 Mon Sep 17 00:00:00 2001 From: qlzh727 Date: Mon, 10 Feb 2020 13:30:17 -0800 Subject: [PATCH 176/365] Update more details about the Github migration. --- rfcs/20200205-standalone-keras-repository.md | 28 ++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/rfcs/20200205-standalone-keras-repository.md b/rfcs/20200205-standalone-keras-repository.md index afe6d3607..5722323bb 100644 --- a/rfcs/20200205-standalone-keras-repository.md +++ b/rfcs/20200205-standalone-keras-repository.md @@ -309,6 +309,34 @@ class existing_layer(Layer): knob2=3) ``` +### Github Repository Migration + +* For any open Github PR/issue in Keras-team/keras, it need to be copied to +Tensorflow if the content is still relevant in Tensorflow. Otherwise it will +be closed as obsolete. We intend to have a clean keras-team/keras repository +before we copy any issue or PR from TF side. +* For any opening PR in Tensorflow for Keras, team will try to merge them as +much as possible before the migration. For any open PR that hasn't been merged, +we will check if it is still relevant/active, and will be copied to +keras-team/keras. +* The permission of keras-team/keras need to be updated as the codebase is new. +The access level for the repository need to be reestablished. +From least access to most access, the permission levels for an organization repository are: + + * Read: Recommended for non-code contributors who want to view or discuss the project. + * Triage: Recommended for contributors who need to proactively manage issues + and pull requests without write access. + * Write: Recommended for contributors who actively push to your project. + * Maintain: Recommended for project managers who need to manage the repository without access to sensitive or destructive actions. + * Admin: Recommended for people who need full access to the project, including sensitive and destructive actions like managing security or deleting a + repository. + +Any existing Keras-team active member should get `Triage` level for now, and +more permission will be granted once we identified active contributers. In the +meantime, Keras team in Google will manage the repository initially, and will +share more permissions with the community member. + +See more details about the project permission in https://help.github.com/en/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization. ### Performance Implications From 41396e8ce17b89d712a8bbda51c009ff8ca8475c Mon Sep 17 00:00:00 2001 From: Frank Chen Date: Mon, 10 Feb 2020 16:49:42 -0800 Subject: [PATCH 177/365] Update status to accepted. --- rfcs/20200107-tf-data-snapshot.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rfcs/20200107-tf-data-snapshot.md b/rfcs/20200107-tf-data-snapshot.md index e9b8af3b8..a0f6c3358 100644 --- a/rfcs/20200107-tf-data-snapshot.md +++ b/rfcs/20200107-tf-data-snapshot.md @@ -1,12 +1,12 @@ # tf.data Snapshot -| Status | Proposed | +| Status | Accepted | | :------------ | :------------------------------------------------------ | | **RFC #** | [193](https://github.com/tensorflow/community/pull/193) | | **Author(s)** | Frank Chen (frankchn@google.com), Rohan Jain | | | (rohanj@google.com) | | **Sponsor** | Jiri Simsa (jsimsa@google.com) | -| **Updated** | 2020-01-07 | +| **Updated** | 2020-02-10 | ## Objective From 039544096bcbdc7c07496d88d829454e09cc3e60 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Tue, 11 Feb 2020 16:54:24 +0000 Subject: [PATCH 178/365] Clone draft template for new tf-types RFC. --- rfcs/20200211-tf-types.md | 90 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 rfcs/20200211-tf-types.md diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md new file mode 100644 index 000000000..ca386f181 --- /dev/null +++ b/rfcs/20200211-tf-types.md @@ -0,0 +1,90 @@ +# Title of RFC + +| Status | (Proposed / Accepted / Implemented / Obsolete) | +:-------------- |:---------------------------------------------------- | +| **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) (update when you have community PR #)| +| **Author(s)** | My Name (me@example.org), AN Other (you@example.org) | +| **Sponsor** | A N Expert (whomever@tensorflow.org) | +| **Updated** | YYYY-MM-DD | +| **Obsoletes** | TF-RFC it replaces, else remove this header | + +## Objective + +What are we doing and why? What problem will this solve? What are the goals and +non-goals? This is your executive summary; keep it short, elaborate below. + +## Motivation + +Why this is a valuable problem to solve? What background information is needed +to show how this design addresses the problem? + +Which users are affected by the problem? Why is it a problem? What data supports +this? What related work exists? + +## User Benefit + +How will users (or other contributors) benefit from this work? What would be the +headline in the release notes or blog post? + +## Design Proposal + +This is the meat of the document, where you explain your proposal. If you have +multiple alternatives, be sure to use sub-sections for better separation of the +idea, and list pros/cons to each approach. If there are alternatives that you +have eliminated, you should also list those here, and explain why you believe +your chosen approach is superior. + +Make sure you’ve thought through and addressed the following sections. If a section is not relevant to your specific proposal, please explain why, e.g. your RFC addresses a convention or process, not an API. + + +### Alternatives Considered +* Make sure to discuss the relative merits of alternatives to your proposal. + +### Performance Implications +* Do you expect any (speed / memory)? How will you confirm? +* There should be microbenchmarks. Are there? +* There should be end-to-end tests and benchmarks. If there are not (since this is still a design), how will you track that these will be created? + +### Dependencies +* Dependencies: does this proposal add any new dependencies to TensorFlow? +* Dependent projects: are there other areas of TensorFlow or things that use TensorFlow (TFX/pipelines, TensorBoard, etc.) that this affects? How have you identified these dependencies and are you sure they are complete? If there are dependencies, how are you managing those changes? + +### Engineering Impact +* Do you expect changes to binary size / startup time / build time / test times? +* Who will maintain this code? Is this code in its own buildable unit? Can this code be tested in its own? Is visibility suitably restricted to only a small API surface for others to use? + +### Platforms and Environments +* Platforms: does this work on all platforms supported by TensorFlow? If not, why is that ok? Will it work on embedded/mobile? Does it impact automatic code generation or mobile stripping tooling? Will it work with transformation tools? +* Execution environments (Cloud services, accelerator hardware): what impact do you expect and how will you confirm? + +### Best Practices +* Does this proposal change best practices for some aspect of using/developing TensorFlow? How will these changes be communicated/enforced? + +### Tutorials and Examples +* If design changes existing API or creates new ones, the design owner should create end-to-end examples (ideally, a tutorial) which reflects how new feature will be used. Some things to consider related to the tutorial: + - The minimum requirements for this are to consider how this would be used in a Keras-based workflow, as well as a non-Keras (low-level) workflow. If either isn’t applicable, explain why. + - It should show the usage of the new feature in an end to end example (from data reading to serving, if applicable). Many new features have unexpected effects in parts far away from the place of change that can be found by running through an end-to-end example. TFX [Examples](https://github.com/tensorflow/tfx/tree/master/tfx/examples) have historically been good in identifying such unexpected side-effects and are as such one recommended path for testing things end-to-end. + - This should be written as if it is documentation of the new feature, i.e., consumable by a user, not a TensorFlow developer. + - The code does not need to work (since the feature is not implemented yet) but the expectation is that the code does work before the feature can be merged. + +### Compatibility +* Does the design conform to the backwards & forwards compatibility [requirements](https://www.tensorflow.org/programmers_guide/version_compat)? +* How will this proposal interact with other parts of the TensorFlow Ecosystem? + - How will it work with TFLite? + - How will it work with distribution strategies? + - How will it interact with tf.function? + - Will this work on GPU/TPU? + - How will it serialize to a SavedModel? + +### User Impact +* What are the user-facing changes? How will this feature be rolled out? + +## Detailed Design + +This section is optional. Elaborate on details if they’re important to +understanding the design, but would make it hard to read the proposal section +above. + +## Questions and Discussion Topics + +Seed this with open questions you require feedback on from the RFC process. From 4e58ec3f2f0fcc62dedb4866b153690a2284ce25 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Tue, 11 Feb 2020 12:56:56 -0500 Subject: [PATCH 179/365] Initial commit. --- rfcs/20200211-tf-types.md | 127 +++++++++++++++++++++++--------------- 1 file changed, 78 insertions(+), 49 deletions(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index ca386f181..7ecb0ad2e 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -1,90 +1,119 @@ -# Title of RFC +# TensorFlow Canonical Type System -| Status | (Proposed / Accepted / Implemented / Obsolete) | +| Status | Proposed | :-------------- |:---------------------------------------------------- | | **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) (update when you have community PR #)| -| **Author(s)** | My Name (me@example.org), AN Other (you@example.org) | +| **Author(s)** | Dan Moldovan (mdan@google.com) | | **Sponsor** | A N Expert (whomever@tensorflow.org) | -| **Updated** | YYYY-MM-DD | -| **Obsoletes** | TF-RFC it replaces, else remove this header | +| **Updated** | 2020-02-11 | ## Objective -What are we doing and why? What problem will this solve? What are the goals and -non-goals? This is your executive summary; keep it short, elaborate below. +Creation of a new TensorFlow module and namespace (`tf.types`) dedicated to storing implementation-free type definitions. This module has no other dependencies inside TensorFlow, so any other module can depend on it to ensure interoperability without the risk of creating circular dependencies. ## Motivation -Why this is a valuable problem to solve? What background information is needed -to show how this design addresses the problem? +**Interoperability and composability**. A set of stand types that formalize an interface and decouples it from implementation ensures composability between components, especially when multiple implementations are involved. -Which users are affected by the problem? Why is it a problem? What data supports -this? What related work exists? +**Supports the [acyclic dependencies principle](https://en.wikipedia.org/wiki/Acyclic_dependencies_principle)**. In many instances, circular dependencies are caused between low-level complex components that need to compose (e.g. autograph needs to recognize datasets, and datasets need to use autograph). Interface extraction is a common pattern for breaking such cycles. + +**Supports pytype**. A set of static types that is consistent under Python’s isinstance/issubclass is required to support pytype in TensorFlow. This module can serve as the basis for that. + +**Helps formalize requirements for new APIs**. Having a formal, implementation-independent definition for things such as tensors, variables, iterables, iterators makes it easy to document and test compatibility between APIs. ## User Benefit -How will users (or other contributors) benefit from this work? What would be the -headline in the release notes or blog post? +Application developers may use these canonical definitions for pytype annotations. + +Library developers can more easily define their API interfaces by referring to this namespace. + +Developers of modules internal to TensorFlow can use this module to avoid creating circular dependencies. ## Design Proposal -This is the meat of the document, where you explain your proposal. If you have -multiple alternatives, be sure to use sub-sections for better separation of the -idea, and list pros/cons to each approach. If there are alternatives that you -have eliminated, you should also list those here, and explain why you believe -your chosen approach is superior. +### The `tf.types` namespace / module +All the declarations exposed under the `tf.types` namespace reside in the `python/types/*.py` module. These are [abstract base classes](https://docs.python.org/3.7/library/abc.html) with a bare minimum of method definitions and minimal or no implementation, which serve to formalize and document the contract of common types such as `Tensor`, `Variable`, etc. + +These definitions may be used as [PEP 484](https://www.python.org/dev/peps/pep-0484/) type hints, although in some cases they may be type-erased (for example, `tf.types.Tensor` may not necessarily be parametrized by `dtype` or `shape`). + +The type definitions are also consistent with `isinstance` and `issubclass` checks. So for example `isinstance(tf.Tensor, tf.types.Tensor) == True`. + +### General principles +The `tf.types` module may depend on external packages (such as `numpy`) strictly for the purpose of defining type annotations and documentation. No dependencies to other TensorFlow interfaces are allowed. Any dependencies on external packages which themselves depend on TensorFlow are expressly forbidden. + +Changes definitions inside `tf.types` must be approved by TensorFlow leads, and typically should be accompanied by an RFC. + +All type declarations are compatible with [pytype](https://github.com/google/pytype). + +It is recommended that internal and external type annotations, `isinstance` and `issubclass` checks use these types, eventually deprecating helpers like `tf.is_tensor`. However, concrete types continue to exist - for example, variables are still created using `tf.Variable`, which is now a subclass of `tf.types.Variable`. -Make sure you’ve thought through and addressed the following sections. If a section is not relevant to your specific proposal, please explain why, e.g. your RFC addresses a convention or process, not an API. +### Support for `tf.function`'s `input_signature` +The type system listed here can be expanded to allow input signatures using type annotations, see for instance [this thread](https://github.com/tensorflow/tensorflow/issues/31579). +### Initial type hierarchy +The list is extensible, any types included in the list are subject to normal backward compatibility rules, which means they are unlikely to change in the future. It is therefore preferable to maintain a strict minimum of orthogonal declarations and carefully vet any additions. + +* Core types + + * `DType` + * `Shape` + * `Tensor` - generic dense tensor + + * `Symbol` - the regular graph tensor + * `Value` - eager tensors + + * `Variable` + +* Container types + + * `Composite` - low-level static structure + * `Module` - builder for structures of Variables + * `Optional` + * `List` - superclass for `TensorArray` + +* Higher-level types + * `Dataset` + * `Iterator` + * `Iterable` + * `Function` + * `Error` + + * Distributed types + * `DistributedDataset` + * `DistributedIterator` ### Alternatives Considered -* Make sure to discuss the relative merits of alternatives to your proposal. +* N/A ### Performance Implications -* Do you expect any (speed / memory)? How will you confirm? -* There should be microbenchmarks. Are there? -* There should be end-to-end tests and benchmarks. If there are not (since this is still a design), how will you track that these will be created? +* No performance implications expected. At most, we are adding a small number of levels to the class tree of some objects. ### Dependencies -* Dependencies: does this proposal add any new dependencies to TensorFlow? -* Dependent projects: are there other areas of TensorFlow or things that use TensorFlow (TFX/pipelines, TensorBoard, etc.) that this affects? How have you identified these dependencies and are you sure they are complete? If there are dependencies, how are you managing those changes? +* None, by definition. ### Engineering Impact -* Do you expect changes to binary size / startup time / build time / test times? -* Who will maintain this code? Is this code in its own buildable unit? Can this code be tested in its own? Is visibility suitably restricted to only a small API surface for others to use? +* Engineering impact: Separate interfaces allow for faster loading times by reducing coupling between modules. +* Maintenance: Minimal maintenance overhead since there is no functionality involved. The TensorFlow team and contributors will maintain the documentation up to date. Changes should be reviewed and approved by the TensorFlow team leads. ### Platforms and Environments -* Platforms: does this work on all platforms supported by TensorFlow? If not, why is that ok? Will it work on embedded/mobile? Does it impact automatic code generation or mobile stripping tooling? Will it work with transformation tools? -* Execution environments (Cloud services, accelerator hardware): what impact do you expect and how will you confirm? +* Platforms: Python only, in the first stage. However, the type system should be aligned as much as possible with the core types in the TensorFlow runtime, and be language-independent as much as possible. +* Execution environments: The type system is independent of platform. This also implies that no platform-specific types (such as `TPUTensor`) exist. ### Best Practices -* Does this proposal change best practices for some aspect of using/developing TensorFlow? How will these changes be communicated/enforced? +* This set of type definitions support the acyclic dependencies principle, by requiring that implementations avoid lateral dependencies (e.g. with a linter rule). ### Tutorials and Examples -* If design changes existing API or creates new ones, the design owner should create end-to-end examples (ideally, a tutorial) which reflects how new feature will be used. Some things to consider related to the tutorial: - - The minimum requirements for this are to consider how this would be used in a Keras-based workflow, as well as a non-Keras (low-level) workflow. If either isn’t applicable, explain why. - - It should show the usage of the new feature in an end to end example (from data reading to serving, if applicable). Many new features have unexpected effects in parts far away from the place of change that can be found by running through an end-to-end example. TFX [Examples](https://github.com/tensorflow/tfx/tree/master/tfx/examples) have historically been good in identifying such unexpected side-effects and are as such one recommended path for testing things end-to-end. - - This should be written as if it is documentation of the new feature, i.e., consumable by a user, not a TensorFlow developer. - - The code does not need to work (since the feature is not implemented yet) but the expectation is that the code does work before the feature can be merged. +* N/A ### Compatibility -* Does the design conform to the backwards & forwards compatibility [requirements](https://www.tensorflow.org/programmers_guide/version_compat)? -* How will this proposal interact with other parts of the TensorFlow Ecosystem? - - How will it work with TFLite? - - How will it work with distribution strategies? - - How will it interact with tf.function? - - Will this work on GPU/TPU? - - How will it serialize to a SavedModel? +* Minor version requirement. Existing classes (tf.Tensor) will become subclasses of the new type interfaces. +* Most subcomponents of TF (Lite, distributed, function, SavedModel) will depend on this new module, although their functionality is not impacted. +* Libraries which depend on TensorFlow are encouraged to refer to `tf.types` definitions, rather than the concrete implementations for better future compatibility. ### User Impact -* What are the user-facing changes? How will this feature be rolled out? - -## Detailed Design +* Users will see a new `tf.types` module, that may be referenced from documentation and type annotations. -This section is optional. Elaborate on details if they’re important to -understanding the design, but would make it hard to read the proposal section -above. ## Questions and Discussion Topics -Seed this with open questions you require feedback on from the RFC process. +N/A From 455362657adb78f419135c325fa2c760a1f4dd53 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Tue, 11 Feb 2020 12:57:50 -0500 Subject: [PATCH 180/365] Capitalization --- rfcs/20200211-tf-types.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index 7ecb0ad2e..2183d1b5e 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -31,14 +31,14 @@ Developers of modules internal to TensorFlow can use this module to avoid creati ## Design Proposal -### The `tf.types` namespace / module +### The `tf.types` Namespace / Module All the declarations exposed under the `tf.types` namespace reside in the `python/types/*.py` module. These are [abstract base classes](https://docs.python.org/3.7/library/abc.html) with a bare minimum of method definitions and minimal or no implementation, which serve to formalize and document the contract of common types such as `Tensor`, `Variable`, etc. These definitions may be used as [PEP 484](https://www.python.org/dev/peps/pep-0484/) type hints, although in some cases they may be type-erased (for example, `tf.types.Tensor` may not necessarily be parametrized by `dtype` or `shape`). The type definitions are also consistent with `isinstance` and `issubclass` checks. So for example `isinstance(tf.Tensor, tf.types.Tensor) == True`. -### General principles +### General Principles The `tf.types` module may depend on external packages (such as `numpy`) strictly for the purpose of defining type annotations and documentation. No dependencies to other TensorFlow interfaces are allowed. Any dependencies on external packages which themselves depend on TensorFlow are expressly forbidden. Changes definitions inside `tf.types` must be approved by TensorFlow leads, and typically should be accompanied by an RFC. @@ -50,7 +50,7 @@ It is recommended that internal and external type annotations, `isinstance` and ### Support for `tf.function`'s `input_signature` The type system listed here can be expanded to allow input signatures using type annotations, see for instance [this thread](https://github.com/tensorflow/tensorflow/issues/31579). -### Initial type hierarchy +### Initial Type Hierarchy The list is extensible, any types included in the list are subject to normal backward compatibility rules, which means they are unlikely to change in the future. It is therefore preferable to maintain a strict minimum of orthogonal declarations and carefully vet any additions. * Core types From 6c8eb85efc547f04656639df85f3dc4eb844ebf3 Mon Sep 17 00:00:00 2001 From: Anna Revinskaya Date: Tue, 11 Feb 2020 10:06:29 -0800 Subject: [PATCH 181/365] Update rfcs/20191127-pip-structure.md Co-Authored-By: Gabriel de Marmiesse --- rfcs/20191127-pip-structure.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20191127-pip-structure.md b/rfcs/20191127-pip-structure.md index 92093ffd6..60044f674 100644 --- a/rfcs/20191127-pip-structure.md +++ b/rfcs/20191127-pip-structure.md @@ -148,7 +148,7 @@ Would be changed to: ```python import tensorflow as tf import tensorflow_estimator as estimator -import tensorflow_keras as keras +import keras from tenosorboard import summaries ``` From 001efcc9cf33f8bd22951e6255f92c1cbf680bc5 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Tue, 11 Feb 2020 13:07:22 -0500 Subject: [PATCH 182/365] Update 20200211-tf-types.md --- rfcs/20200211-tf-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index 2183d1b5e..b50467bf2 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -9,7 +9,7 @@ ## Objective -Creation of a new TensorFlow module and namespace (`tf.types`) dedicated to storing implementation-free type definitions. This module has no other dependencies inside TensorFlow, so any other module can depend on it to ensure interoperability without the risk of creating circular dependencies. +This RFC proposed a new TensorFlow module and namespace (`tf.types`) dedicated to storing implementation-free type definitions. This module has no other dependencies inside TensorFlow, so any other module can depend on it to ensure interoperability without the risk of creating circular dependencies. ## Motivation From 71a5164810d878ae05892245e40d35117f4f6045 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Tue, 11 Feb 2020 13:30:10 -0500 Subject: [PATCH 183/365] Update 20200211-tf-types.md --- rfcs/20200211-tf-types.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index b50467bf2..a698ead67 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -39,6 +39,8 @@ These definitions may be used as [PEP 484](https://www.python.org/dev/peps/pep-0 The type definitions are also consistent with `isinstance` and `issubclass` checks. So for example `isinstance(tf.Tensor, tf.types.Tensor) == True`. ### General Principles +This module should not contain any implementation code. An advantage of that is that users exploring the implementation of specific types will not need to inspect this module. However, users who do not wish to inspect the code may visit the documentation of these generic types to better understand specifically what are the concrete subclasses of this type expected to do. + The `tf.types` module may depend on external packages (such as `numpy`) strictly for the purpose of defining type annotations and documentation. No dependencies to other TensorFlow interfaces are allowed. Any dependencies on external packages which themselves depend on TensorFlow are expressly forbidden. Changes definitions inside `tf.types` must be approved by TensorFlow leads, and typically should be accompanied by an RFC. From 0842a2fbf134e37e9bfcca9f144bc609b89b67ee Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Tue, 11 Feb 2020 13:32:21 -0500 Subject: [PATCH 184/365] Update 20200211-tf-types.md --- rfcs/20200211-tf-types.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index a698ead67..1f86d764e 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -83,6 +83,10 @@ The list is extensible, any types included in the list are subject to normal bac * Distributed types * `DistributedDataset` * `DistributedIterator` + + * Low-level execution primitives + * Graph + * FunctionGraph ### Alternatives Considered * N/A From e4fd7fad83760cca5f4c0f8df63d92548b74a67f Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Tue, 11 Feb 2020 13:33:59 -0500 Subject: [PATCH 185/365] Update 20200211-tf-types.md --- rfcs/20200211-tf-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index 1f86d764e..1107f24c4 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -112,7 +112,7 @@ The list is extensible, any types included in the list are subject to normal bac * N/A ### Compatibility -* Minor version requirement. Existing classes (tf.Tensor) will become subclasses of the new type interfaces. +* Minor new version. Existing classes (tf.Tensor) will become subclasses of the new type interfaces. * Most subcomponents of TF (Lite, distributed, function, SavedModel) will depend on this new module, although their functionality is not impacted. * Libraries which depend on TensorFlow are encouraged to refer to `tf.types` definitions, rather than the concrete implementations for better future compatibility. From 4666892b1a80087d48c89c5d1b2d6d31c96797f6 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Tue, 11 Feb 2020 13:34:22 -0500 Subject: [PATCH 186/365] Update 20200211-tf-types.md --- rfcs/20200211-tf-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index 1107f24c4..e4b5a2183 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -112,7 +112,7 @@ The list is extensible, any types included in the list are subject to normal bac * N/A ### Compatibility -* Minor new version. Existing classes (tf.Tensor) will become subclasses of the new type interfaces. +* New minor version. Existing classes (tf.Tensor) will become subclasses of the new type interfaces. * Most subcomponents of TF (Lite, distributed, function, SavedModel) will depend on this new module, although their functionality is not impacted. * Libraries which depend on TensorFlow are encouraged to refer to `tf.types` definitions, rather than the concrete implementations for better future compatibility. From de72ac5a759b3ebd4d268fbfbb148dbafffc4d87 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Tue, 11 Feb 2020 13:35:42 -0500 Subject: [PATCH 187/365] Update 20200211-tf-types.md --- rfcs/20200211-tf-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index e4b5a2183..2e6be8749 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -122,4 +122,4 @@ The list is extensible, any types included in the list are subject to normal bac ## Questions and Discussion Topics -N/A +* Single flat vs. hierararchical namespace - for example: `tf.types.distribute.Dataset`, or `tf.types.DistributedDataset`? From e9720c1bda4cd3eaf25bc4566652f0c1579f400f Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Wed, 12 Feb 2020 11:53:14 -0500 Subject: [PATCH 188/365] Update 20200211-tf-types.md --- rfcs/20200211-tf-types.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index 2e6be8749..702e39f35 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -55,6 +55,8 @@ The type system listed here can be expanded to allow input signatures using type ### Initial Type Hierarchy The list is extensible, any types included in the list are subject to normal backward compatibility rules, which means they are unlikely to change in the future. It is therefore preferable to maintain a strict minimum of orthogonal declarations and carefully vet any additions. +Most of these symbols will not be initially exported as public symbols, meaning that only internal su-mbodules will be able to use them. As the need for external symbols arises, they will be gradually exposed under `tf.types`. + * Core types * `DType` From d436dc6097cec9c3e0656d91cd68e8ce393f8d41 Mon Sep 17 00:00:00 2001 From: Jiayi Zhao <46733165+1025KB@users.noreply.github.com> Date: Thu, 13 Feb 2020 14:37:39 -0800 Subject: [PATCH 189/365] Update 20200117-tfx-generic-trainer.md --- rfcs/20200117-tfx-generic-trainer.md | 1 + 1 file changed, 1 insertion(+) diff --git a/rfcs/20200117-tfx-generic-trainer.md b/rfcs/20200117-tfx-generic-trainer.md index 9b9843fa0..f479a1e00 100644 --- a/rfcs/20200117-tfx-generic-trainer.md +++ b/rfcs/20200117-tfx-generic-trainer.md @@ -145,6 +145,7 @@ def run_fn(args: trainer.executor.TrainerFnArgs) -> None: """Build the TF model and train it.""" model = _build_keras_model() model.fit(...) + # Save model to args.serving_model_dir. model.save(...) ``` From e3224da4030f8c197a7c2c56beef8f141a0774b9 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Tue, 18 Feb 2020 08:47:56 -0500 Subject: [PATCH 190/365] Update 20200211-tf-types.md --- rfcs/20200211-tf-types.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index 702e39f35..3056e0d6c 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -57,6 +57,8 @@ The list is extensible, any types included in the list are subject to normal bac Most of these symbols will not be initially exported as public symbols, meaning that only internal su-mbodules will be able to use them. As the need for external symbols arises, they will be gradually exposed under `tf.types`. +The initial type hierarchy is focused on V2 symbols; we expect few places where these symbols would not be compatible with V1 code, though. + * Core types * `DType` From 6872453f36b5025804d6f426543189d5c0913bdf Mon Sep 17 00:00:00 2001 From: qlzh727 Date: Tue, 18 Feb 2020 10:04:20 -0800 Subject: [PATCH 191/365] Update wording wrt to pure python project. --- rfcs/20200205-standalone-keras-repository.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rfcs/20200205-standalone-keras-repository.md b/rfcs/20200205-standalone-keras-repository.md index 5722323bb..dac3d8bbe 100644 --- a/rfcs/20200205-standalone-keras-repository.md +++ b/rfcs/20200205-standalone-keras-repository.md @@ -353,7 +353,8 @@ package imported by `tf_core`, like what we do for TF estimator. ### Developer experience Impact * The local build and test times should be greatly reduced, since compiling TF -is no longer needed, and Keras is a pure-Python project. +is no longer needed, and Keras is so far a pure-Python project (this might +change in future when custom c ops are added to Keras). * Cross-boundary changes will require some extra handling since such changes needs to be split into two or more PRs. Same for rollbacks. * Tooling on the GitHub side (for code review, etc.) is not as good as From 7144521f783d8dc12b85f2f949e31978766c804e Mon Sep 17 00:00:00 2001 From: qlzh727 Date: Tue, 18 Feb 2020 11:20:48 -0800 Subject: [PATCH 192/365] Update the sectoin for TF to keras dependency. --- rfcs/20200205-standalone-keras-repository.md | 29 ++++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/rfcs/20200205-standalone-keras-repository.md b/rfcs/20200205-standalone-keras-repository.md index dac3d8bbe..984d4ecb8 100644 --- a/rfcs/20200205-standalone-keras-repository.md +++ b/rfcs/20200205-standalone-keras-repository.md @@ -137,9 +137,9 @@ There are more details for the pip package in the ### Dependency Cleanup As the high-level API of TensorFlow, Keras should have a direct dependency on -TF low-level APIs, but not the other way around. Unfortunately, there is some existing reverse -logic in the TF code that relies on Keras, which we should update/remove -when we split the repository. +TF low-level APIs, but not the other way around. Unfortunately, there is some +existing reverse logic in the TF code that relies on Keras, which we should +update/remove when we split the repository. The current usage of Keras from TensorFlow are: * Unit tests, which should be converted to integration tests, or port the tests @@ -150,17 +150,28 @@ to Keras repository. * TPU support code for `optimizer_v2`. * TF Lite for keras model saving utils. * Aliases from tf.losses/metrics/initializers/optimizers in tf.compat.v1. +* Symoblic/eager tensor logic for ops that is tightly coupled with Keras due to + current implementation of functional API and TF Ops layers. -All Keras imports in integration tests can be changed to use dynamic import like below: +For usage like tf.layers to keras.layers, it can't be removed due to the API +contract and guarantee. We should use LasyLoader to walk around the cyclic +dependency issue. ```python -try: - from tensorflow.python.keras.engine import base_layer -except ImportError: - tf.logging.error('keras is not installed, please pip install keras') - base_layer = None +from tensorflow.python.util.lasy_loader import LasyLoader + +BaseLayer = LasyLoader( + 'BaseLayer', globals(), 'keras.layers.Layer') +if not BaseLayer: + raise ImportError('Keras is not installed, please pip install keras.') ``` +Other dependency should be removed as much as possible, eg move the util/code +from Keras to TF, or rework the implementation detail. + +**Note that this is a key point to prevent Keras accidentally break Tensorflow.** + + ### Update Keras to only use public TF APIs The current Keras code will still work if we do e.g.: From 53680e54820a8e0a974db7ab9ea420430fe1d912 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Wed, 19 Feb 2020 09:43:07 -0500 Subject: [PATCH 193/365] Update 20200211-tf-types.md --- rfcs/20200211-tf-types.md | 68 ++++++++++++++++++++++++--------------- 1 file changed, 42 insertions(+), 26 deletions(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index 3056e0d6c..4062c5ba4 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -9,15 +9,16 @@ ## Objective -This RFC proposed a new TensorFlow module and namespace (`tf.types`) dedicated to storing implementation-free type definitions. This module has no other dependencies inside TensorFlow, so any other module can depend on it to ensure interoperability without the risk of creating circular dependencies. +This RFC proposes a new TensorFlow module and namespace (`tf.types`) dedicated to storing implementation-free type definitions, similar to C++ header files. This module has no other dependencies inside TensorFlow, so any other module can depend on it to ensure interoperability without the risk of creating circular dependencies. +The RFC focuses on the Python API, however the design should be reviewed with cross-language consistency in mind. ## Motivation -**Interoperability and composability**. A set of stand types that formalize an interface and decouples it from implementation ensures composability between components, especially when multiple implementations are involved. +**Interoperability and composability**. A set of standard types that formalize an interface and decouples it from implementation ensures composability between components, especially when multiple implementations are involved. **Supports the [acyclic dependencies principle](https://en.wikipedia.org/wiki/Acyclic_dependencies_principle)**. In many instances, circular dependencies are caused between low-level complex components that need to compose (e.g. autograph needs to recognize datasets, and datasets need to use autograph). Interface extraction is a common pattern for breaking such cycles. -**Supports pytype**. A set of static types that is consistent under Python’s isinstance/issubclass is required to support pytype in TensorFlow. This module can serve as the basis for that. +**Supports pytype**. A set of static types that is consistent under Python’s `isinstance`/`issubclass` is required to support [PEP-484 type annotations](https://www.python.org/dev/peps/pep-0484/) in TensorFlow. This module can serve as the basis for that. **Helps formalize requirements for new APIs**. Having a formal, implementation-independent definition for things such as tensors, variables, iterables, iterators makes it easy to document and test compatibility between APIs. @@ -34,32 +35,40 @@ Developers of modules internal to TensorFlow can use this module to avoid creati ### The `tf.types` Namespace / Module All the declarations exposed under the `tf.types` namespace reside in the `python/types/*.py` module. These are [abstract base classes](https://docs.python.org/3.7/library/abc.html) with a bare minimum of method definitions and minimal or no implementation, which serve to formalize and document the contract of common types such as `Tensor`, `Variable`, etc. -These definitions may be used as [PEP 484](https://www.python.org/dev/peps/pep-0484/) type hints, although in some cases they may be type-erased (for example, `tf.types.Tensor` may not necessarily be parametrized by `dtype` or `shape`). +These definitions may be used as PEP 484 type hints, although in some cases they may be type- or shape- erased (for example, `tf.types.Tensor` may not necessarily be parametrized by `dtype` or `shape`). Note however that designs which parametrize on shape do exist, see for instance [tensorflow#31579](https://github.com/tensorflow/tensorflow/issues/31579). -The type definitions are also consistent with `isinstance` and `issubclass` checks. So for example `isinstance(tf.Tensor, tf.types.Tensor) == True`. +The type definitions are consistent with `isinstance` and `issubclass`. For example, `isinstance(tf.Tensor, tf.types.Tensor) == True`. ### General Principles This module should not contain any implementation code. An advantage of that is that users exploring the implementation of specific types will not need to inspect this module. However, users who do not wish to inspect the code may visit the documentation of these generic types to better understand specifically what are the concrete subclasses of this type expected to do. -The `tf.types` module may depend on external packages (such as `numpy`) strictly for the purpose of defining type annotations and documentation. No dependencies to other TensorFlow interfaces are allowed. Any dependencies on external packages which themselves depend on TensorFlow are expressly forbidden. +The `tf.types` module may depend on external packages (such as `numpy`) _strictly for the purpose of defining type annotations and documentation_. No dependencies to other TensorFlow interfaces are allowed. Any dependencies on external packages which themselves depend on TensorFlow are expressly forbidden. Changes definitions inside `tf.types` must be approved by TensorFlow leads, and typically should be accompanied by an RFC. All type declarations are compatible with [pytype](https://github.com/google/pytype). -It is recommended that internal and external type annotations, `isinstance` and `issubclass` checks use these types, eventually deprecating helpers like `tf.is_tensor`. However, concrete types continue to exist - for example, variables are still created using `tf.Variable`, which is now a subclass of `tf.types.Variable`. +It is recommended that internal and external type annotations, `isinstance` and `issubclass` checks use these types, eventually deprecating helpers like `tf.is_tensor`. However, concrete types continue to exist - for example, variables are instances of `tf.Variable`, which is now a subclass of `tf.types.Variable`. + +Class type definitions define a minimum of abstract methods and properties which are required for pytype compatibility. ### Support for `tf.function`'s `input_signature` The type system listed here can be expanded to allow input signatures using type annotations, see for instance [this thread](https://github.com/tensorflow/tensorflow/issues/31579). ### Initial Type Hierarchy -The list is extensible, any types included in the list are subject to normal backward compatibility rules, which means they are unlikely to change in the future. It is therefore preferable to maintain a strict minimum of orthogonal declarations and carefully vet any additions. +TensorFlow generally adopts an incremental development method. This RFC aims to remain consistent with that. + +Below are listed the major types presently used in TensorFlow. All types included in this list are subject to [normal compatibility rules](https://www.tensorflow.org/guide/versions), so they are unlikely to change in the future. It is therefore preferable to maintain a strict minimum of orthogonal declarations and carefully vet any additions. + +Most of these symbols will not be initially exported as public symbols. Only internal submodules will be able to use unexported types. The unexported types may be gradually exposed under `tf.types` or under `tf.types.experimental`. + +The initial type hierarchy is focused on V2 symbols. We expect to encounter places where these symbols would not be compatible with V1 code; in such cases, the V1 symbols will not be affected. -Most of these symbols will not be initially exported as public symbols, meaning that only internal su-mbodules will be able to use them. As the need for external symbols arises, they will be gradually exposed under `tf.types`. +#### Types created by this RFC -The initial type hierarchy is focused on V2 symbols; we expect few places where these symbols would not be compatible with V1 code, though. +These types will be added with the initial creation of the `tf.types` namespace. -* Core types +* Core tensor types * `DType` * `Shape` @@ -70,27 +79,33 @@ The initial type hierarchy is focused on V2 symbols; we expect few places where * `Variable` +#### Potential types for subsequent implementation + +These types are raised for discussion by this RFC, but are not part of the original implementation, unless they are strictly required for consistency (to be determined during the initial submission). + +Many of these are expected to be required when breaking the cyclic dependencies that currently exist between submodules. However, it is hoped that opening them up for discussion early can help create a more coherent type system. + * Container types - * `Composite` - low-level static structure - * `Module` - builder for structures of Variables - * `Optional` - * `List` - superclass for `TensorArray` + * `Composite` - low-level static structure (opaque to GraphDef/IR) + * `Module` - builder for structures of `Variables` (invisible to GraphDef/IR) + * `Optional` - basic programming construct + * `List` - superclass for `TensorArray`, `Queue`, etc. (opaque to GraphDef/IR) * Higher-level types - * `Dataset` - * `Iterator` - * `Iterable` - * `Function` - * `Error` + * `Dataset` - ETL pipeline + * `Iterator` - basic stateful programming construct + * `Iterable` - basic stateless programming construct + * `Function` - basic programming construct + * `Error` - superclass of all TF-specific errors * Distributed types - * `DistributedDataset` - * `DistributedIterator` + * `DistributedDataset` - collective ETL + * `DistributedIterator` - collective iterator * Low-level execution primitives - * Graph - * FunctionGraph + * `Graph` - GraphDef/IR program + * `FunctionGraph` - IR of a single concrete function ### Alternatives Considered * N/A @@ -116,7 +131,7 @@ The initial type hierarchy is focused on V2 symbols; we expect few places where * N/A ### Compatibility -* New minor version. Existing classes (tf.Tensor) will become subclasses of the new type interfaces. +* New minor version. Existing classes (`tf.Tensor`) will become subclasses of the new type interfaces. * Most subcomponents of TF (Lite, distributed, function, SavedModel) will depend on this new module, although their functionality is not impacted. * Libraries which depend on TensorFlow are encouraged to refer to `tf.types` definitions, rather than the concrete implementations for better future compatibility. @@ -126,4 +141,5 @@ The initial type hierarchy is focused on V2 symbols; we expect few places where ## Questions and Discussion Topics -* Single flat vs. hierararchical namespace - for example: `tf.types.distribute.Dataset`, or `tf.types.DistributedDataset`? +* Single flat vs. hierarchical namespace - for example: `tf.types.distribute.Dataset`, or `tf.types.DistributedDataset`? +* The inclusion of more specialized `Graph` types, such as `FuncGraph`, `CondBranchFuncGraph`, `WhileCondFuncGraph`, `WhileBodyFuncGraph`. It’s unclear where these should be defined, however internal submodules needs these subtypes to maintain acyclic dependencies. From 7b21bf79ac25e8c6391836c8f045ec8dca161bf4 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Wed, 19 Feb 2020 09:44:12 -0500 Subject: [PATCH 194/365] Update 20200211-tf-types.md --- rfcs/20200211-tf-types.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index 4062c5ba4..a1ec4a508 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -4,8 +4,8 @@ :-------------- |:---------------------------------------------------- | | **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) (update when you have community PR #)| | **Author(s)** | Dan Moldovan (mdan@google.com) | -| **Sponsor** | A N Expert (whomever@tensorflow.org) | -| **Updated** | 2020-02-11 | +| **Sponsor** | Gaurav Jain (gjn@google.com) | +| **Updated** | 2020-02-19 | ## Objective From c951112b66a183c2beb2d6329c622f6d6115b8d7 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Wed, 19 Feb 2020 09:44:28 -0500 Subject: [PATCH 195/365] Update 20200211-tf-types.md --- rfcs/20200211-tf-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index a1ec4a508..f796eef7f 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -1,6 +1,6 @@ # TensorFlow Canonical Type System -| Status | Proposed | +| Status | Draft | :-------------- |:---------------------------------------------------- | | **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) (update when you have community PR #)| | **Author(s)** | Dan Moldovan (mdan@google.com) | From 3cd6062ac8b199823c42da2abcf8623ab7bc1415 Mon Sep 17 00:00:00 2001 From: genehwung Date: Wed, 19 Feb 2020 14:26:37 -0800 Subject: [PATCH 196/365] Update 20200117-tfx-combining-model-validator-with-evaluator.md --- rfcs/20200117-tfx-combining-model-validator-with-evaluator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md b/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md index deb9c15c6..03cdb1fef 100644 --- a/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md +++ b/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md @@ -2,7 +2,7 @@ | Status | Proposed | | :------------ | :----------------------------------------------------- | -| **RFC #** | | +| **RFC #** | 200 | | **Author(s)** | Gene Huang (jinhuang@google.com), Mike Dreves (mdreves@google.com), Neoklis Polyzotis (npolyzotis@google.com) | | **Sponsor** | Konstantinos Katsiapis (katsiapis@google.com), Neoklis Polyzotis (npolyzotis@google.com) | | **Updated** | 2020-01-17 | From aae458f6a1ce1fedca21f2cdb2cc059c9f9f454f Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Thu, 20 Feb 2020 11:14:18 -0500 Subject: [PATCH 197/365] Update 20200211-tf-types.md --- rfcs/20200211-tf-types.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index f796eef7f..2bbd0e795 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -128,7 +128,8 @@ Many of these are expected to be required when breaking the cyclic dependencies * This set of type definitions support the acyclic dependencies principle, by requiring that implementations avoid lateral dependencies (e.g. with a linter rule). ### Tutorials and Examples -* N/A +* As the design matures, we plan to showcase libraries that leverage this pattern. +* Type annotations will be included in existing tutorials as definitions become final. ### Compatibility * New minor version. Existing classes (`tf.Tensor`) will become subclasses of the new type interfaces. From f92370583365dafd7035e7052a89ae87da1578ee Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Thu, 20 Feb 2020 11:31:17 -0500 Subject: [PATCH 198/365] Update 20200211-tf-types.md --- rfcs/20200211-tf-types.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index 2bbd0e795..f82d02508 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -9,9 +9,8 @@ ## Objective -This RFC proposes a new TensorFlow module and namespace (`tf.types`) dedicated to storing implementation-free type definitions, similar to C++ header files. This module has no other dependencies inside TensorFlow, so any other module can depend on it to ensure interoperability without the risk of creating circular dependencies. +This RFC proposes a new TensorFlow module and namespace (`tf.types`) dedicated to storing implementation-free type definitions, similar to C++ header files. This module has no other dependencies inside TensorFlow, so any other internal module can depend on it to ensure interoperability without the risk of creating circular dependencies. These definitions can also be used by external users, for example in pytype annotations. The RFC focuses on the Python API, however the design should be reviewed with cross-language consistency in mind. - ## Motivation **Interoperability and composability**. A set of standard types that formalize an interface and decouples it from implementation ensures composability between components, especially when multiple implementations are involved. From dc924a7685f07a24d1154149f2d37bbb405591a0 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Thu, 20 Feb 2020 13:52:07 -0500 Subject: [PATCH 199/365] Update PR number. --- rfcs/20200211-tf-types.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index f82d02508..915a76ec0 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -1,8 +1,8 @@ # TensorFlow Canonical Type System -| Status | Draft | +| Status | Proposed | :-------------- |:---------------------------------------------------- | -| **RFC #** | [NNN](https://github.com/tensorflow/community/pull/NNN) (update when you have community PR #)| +| **RFC #** | [208](https://github.com/tensorflow/community/pull/208) | **Author(s)** | Dan Moldovan (mdan@google.com) | | **Sponsor** | Gaurav Jain (gjn@google.com) | | **Updated** | 2020-02-19 | From 5d4ce1d00423d14a273c31c40c736ccebe7d93f9 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Thu, 20 Feb 2020 13:55:42 -0500 Subject: [PATCH 200/365] Add `TensorLike` to core types. --- rfcs/20200211-tf-types.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index 915a76ec0..f4c3e5aeb 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -76,6 +76,8 @@ These types will be added with the initial creation of the `tf.types` namespace. * `Symbol` - the regular graph tensor * `Value` - eager tensors + * `TensorLike` - any type that can be implicitly converted to `Tensor` (see for example https://github.com/tensorflow/addons/blob/master/tensorflow_addons/utils/types.py) + * `Variable` #### Potential types for subsequent implementation From fb3e2f22c0a308b4e361d34401d8046c70c4ed5b Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Thu, 20 Feb 2020 18:49:16 -0500 Subject: [PATCH 201/365] Clarify note about static checkers. --- rfcs/20200211-tf-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index f4c3e5aeb..d92a9f719 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -45,7 +45,7 @@ The `tf.types` module may depend on external packages (such as `numpy`) _strictl Changes definitions inside `tf.types` must be approved by TensorFlow leads, and typically should be accompanied by an RFC. -All type declarations are compatible with [pytype](https://github.com/google/pytype). +All type declarations are based on PEP-484 and related specifications, and defined using [typing](https://docs.python.org/3/library/typing.html), with the aim of being compatible with static type checkers like [pytype](https://github.com/google/pytype), [mypy](http://mypy-lang.org/), [pyre](https://pyre-check.org/). It is recommended that internal and external type annotations, `isinstance` and `issubclass` checks use these types, eventually deprecating helpers like `tf.is_tensor`. However, concrete types continue to exist - for example, variables are instances of `tf.Variable`, which is now a subclass of `tf.types.Variable`. From c42f292ce08fbf8c640b963745679c6e77b7a717 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Fri, 21 Feb 2020 11:07:33 -0500 Subject: [PATCH 202/365] Add note about ABC performance concerns --- rfcs/20200211-tf-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index d92a9f719..9aa02c33d 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -112,7 +112,7 @@ Many of these are expected to be required when breaking the cyclic dependencies * N/A ### Performance Implications -* No performance implications expected. At most, we are adding a small number of levels to the class tree of some objects. +* There is a potential performance concern if using `abc` for the abstract base types, which are about an order of magnitude slower for `isinstance` checks. The cost of `isinstance` may be non-negligible for eager execution or scaling to large graphs. In such cases, we may want to avoid using `abc`. See https://github.com/tensorflow/community/pull/208#discussion_r382494902. ### Dependencies * None, by definition. From 198a1d0488ba875ee31f3b6cb73f0565b1cb83ea Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Fri, 21 Feb 2020 11:11:05 -0500 Subject: [PATCH 203/365] Clarify semantics of `Optional` --- rfcs/20200211-tf-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index 9aa02c33d..767ad7d83 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -90,7 +90,7 @@ Many of these are expected to be required when breaking the cyclic dependencies * `Composite` - low-level static structure (opaque to GraphDef/IR) * `Module` - builder for structures of `Variables` (invisible to GraphDef/IR) - * `Optional` - basic programming construct + * `Optional` - basic programming construct, currently prototyped in `tf.data.experimental.Optional`; unlike `typing.Optional`, it doesn't include `None` * `List` - superclass for `TensorArray`, `Queue`, etc. (opaque to GraphDef/IR) * Higher-level types From 5bf02fbd63e0bc6771d24616f3f5e38d536b6d96 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Fri, 21 Feb 2020 11:30:31 -0500 Subject: [PATCH 204/365] Add details and example for `Optional` --- rfcs/20200211-tf-types.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index 767ad7d83..e349b40f1 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -107,6 +107,24 @@ Many of these are expected to be required when breaking the cyclic dependencies * Low-level execution primitives * `Graph` - GraphDef/IR program * `FunctionGraph` - IR of a single concrete function + +#### Detailed notes + +##### Optional + +`tf.types.Optional` is the [nullable type](https://en.wikipedia.org/wiki/Nullable_type) in TensorFlow. + +Example graph code: + +``` + >>> ds = tf.data.Dataset.range(3) + >>> itr = iter(ds) + >>> opt_next = tf.data.experimental.get_next_as_optional(itr) + >>> tf.print(opt_next.has_value(), opt_next.get_value()) + 1 0 +``` + +It is not fully equivalent with `typing.Optional`, as TensorFlow has no explicit type or value for `None`. ### Alternatives Considered * N/A From 2f4d14d004dedfb0cc8e37f05534d390fb2e282c Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Fri, 21 Feb 2020 18:03:38 -0500 Subject: [PATCH 205/365] Fix typo. --- rfcs/20200211-tf-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index e349b40f1..fff0944c3 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -43,7 +43,7 @@ This module should not contain any implementation code. An advantage of that is The `tf.types` module may depend on external packages (such as `numpy`) _strictly for the purpose of defining type annotations and documentation_. No dependencies to other TensorFlow interfaces are allowed. Any dependencies on external packages which themselves depend on TensorFlow are expressly forbidden. -Changes definitions inside `tf.types` must be approved by TensorFlow leads, and typically should be accompanied by an RFC. +Changes to definitions inside `tf.types` must be approved by TensorFlow leads, and typically should be accompanied by an RFC. All type declarations are based on PEP-484 and related specifications, and defined using [typing](https://docs.python.org/3/library/typing.html), with the aim of being compatible with static type checkers like [pytype](https://github.com/google/pytype), [mypy](http://mypy-lang.org/), [pyre](https://pyre-check.org/). From 52d5617dbc5cd835e95e2065707f3129ce435971 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Fri, 21 Feb 2020 18:06:56 -0500 Subject: [PATCH 206/365] Update 20200211-tf-types.md --- rfcs/20200211-tf-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index fff0944c3..8e8bda6fa 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -9,7 +9,7 @@ ## Objective -This RFC proposes a new TensorFlow module and namespace (`tf.types`) dedicated to storing implementation-free type definitions, similar to C++ header files. This module has no other dependencies inside TensorFlow, so any other internal module can depend on it to ensure interoperability without the risk of creating circular dependencies. These definitions can also be used by external users, for example in pytype annotations. +This RFC proposes a new TensorFlow module and namespace (`tf.types`) dedicated to storing implementation-free type definitions, similar to Java interfaces or C++ forward declarations. This module has no other dependencies inside TensorFlow, so any other internal module can depend on it to ensure interoperability without the risk of creating circular dependencies. These definitions can also be used by external users, for example in pytype annotations. The RFC focuses on the Python API, however the design should be reviewed with cross-language consistency in mind. ## Motivation From 591cdec9791c3b360b4ef85b875b27f012afc800 Mon Sep 17 00:00:00 2001 From: tanzhenyu Date: Sat, 22 Feb 2020 19:31:36 -0800 Subject: [PATCH 207/365] Finalize design reviews for Keras categorical inputs. Finalize design reviews. --- rfcs/20191212-keras-categorical-inputs.md | 401 ++++++++++++++++++++++ 1 file changed, 401 insertions(+) create mode 100644 rfcs/20191212-keras-categorical-inputs.md diff --git a/rfcs/20191212-keras-categorical-inputs.md b/rfcs/20191212-keras-categorical-inputs.md new file mode 100644 index 000000000..dd2b7aed2 --- /dev/null +++ b/rfcs/20191212-keras-categorical-inputs.md @@ -0,0 +1,401 @@ +# Keras categorical inputs + +| Status | Reviewed | +:-------------- |:---------------------------------------------------- | +| **Author(s)** | Zhenyu Tan (tanzheny@google.com), Francois Chollet (fchollet@google.com)| +| **Sponsor** | Karmel Allison (karmel@google.com), Martin Wicke (wicke@google.com) | +| **Updated** | 2019-02-22 | + +## Objective + +This document proposes 4 new preprocessing Keras layers (`IndexLookup`, `CategoryCrossing`, `CategoricalEncoding`, `Hashing`), and an extension to existing op (`tf.sparse.from_dense`) to allow users to: +* Perform feature engineering for categorical inputs +* Replace feature columns and `tf.keras.layers.DenseFeatures` with proposed layers +* Introduce sparse inputs that work with Keras linear models and other layers that support sparsity + +Other proposed layers for replacement of feature columns such as `tf.feature_column.bucketized_column` and `tf.feature_column.numeric_column` has been discussed [here](https://github.com/keras-team/governance/blob/master/rfcs/20190502-preprocessing-layers.md). + +The proposed layers should support ragged tensors. + +## Motivation + +Specifically, by introducing the 4 layers, we aim to address these pain points: +* Users have to define both feature columns and Keras Inputs for the model, resulting in code duplication and deviation from DRY (Do not repeat yourself) principle. See this [Github issue](https://github.com/tensorflow/tensorflow/issues/27416). +* Users with large dimension categorical inputs will incur large memory footprint and computation cost, if wrapped with indicator column through `tf.keras.layers.DenseFeatures`. +* Currently there is no way to correctly feed Keras linear model or dense layer with multivalent categorical inputs or weighted categorical inputs. + +## User Benefit + +We expect to get rid of the user painpoints once migrating off feature columns. + +## Example Workflows + +Two example workflows are presented below. These workflows can be found at this [colab](https://colab.sandbox.google.com/drive/1cEJhSYLcc2MKH7itwcDvue4PfvrLN-OR#scrollTo=22sa0D19kxXY). + +### Workflow 1 + +The first example gives an equivalent code snippet to canned `LinearEstimator` [tutorial](https://www.tensorflow.org/tutorials/estimator/linear) on the Titanic dataset: + +```python +dftrain = pd.read_csv('https://storage.googleapis.com/tf-datasets/titanic/train.csv') +y_train = dftrain.pop('survived') + +CATEGORICAL_COLUMNS = ['sex', 'n_siblings_spouses', 'parch', 'class', 'deck', 'embark_town', 'alone'] +NUMERICAL_COLUMNS = ['age', 'fare'] +# input list to create functional model. +model_inputs = [] +# input list to feed linear model. +linear_inputs = [] +for feature_name in CATEGORICAL_COLUMNS: + feature_input = tf.keras.Input(shape=(1,), dtype=tf.string, name=feature_name, sparse=True) + vocab_list = sorted(dftrain[feature_name].unique()) + # Map string values to indices + x = tf.keras.layers.IndexLookup(vocabulary=vocab_list, name=feature_name)(feature_input) + x = tf.keras.layers.CategoricalEncoding(num_categories=len(vocab_list))(x) + linear_inputs.append(x) + model_inputs.append(feature_input) + +for feature_name in NUMERICAL_COLUMNS: + feature_input = tf.keras.Input(shape=(1,), name=feature_name) + linear_inputs.append(feature_input) + model_inputs.append(feature_input) + +linear_model = tf.keras.experimental.LinearModel(units=1) +linear_logits = linear_model(linear_inputs) +model = tf.keras.Model(model_inputs, linear_logits) + +model.compile('sgd', loss=tf.keras.losses.BinaryCrossEntropy(from_logits=True), metrics=['accuracy']) + +dataset = tf.data.Dataset.from_tensor_slices(( + (tf.sparse.from_dense(dftrain.sex, "Unknown"), tf.sparse.from_dense(dftrain.n_siblings_spouses, -1), + tf.sparse.from_dense(dftrain.parch, -1), tf.sparse.from_dense(dftrain['class'], "Unknown"), tf.sparse.from_dense(dftrain.deck, "Unknown"), + tf.expand_dims(dftrain.age, axis=1), tf.expand_dims(dftrain.fare, axis=1)), + y_train)).batch(bach_size).repeat(n_epochs) + +model.fit(dataset) +``` + +### Workflow 2 + +The second example gives an instruction on how to transition from categorical feature columns to the proposed layers. Note that one difference for vocab categorical column is that, instead of providing a pair of mutually exclusive `default_value` and `num_oov_buckets` where `default_value` represents the value to map input to given out-of-vocab value, and `num_oov_buckets` represents value range of [len(vocab), len(vocab)+num_oov_buckets) to map input to from a hashing function given out-of-vocab value. In practice, we believe out-of-vocab values should be mapped to the head, i.e., [0, num_oov_tokens), and in-vocab values should be mapped to [num_oov_tokens, num_oov_tokens+len(vocab)). + +1. Categorical vocab list column + +Original: +```python +fc = tf.feature_column.categorical_feature_column_with_vocabulary_list( + key, vocabulary_list, dtype, default_value, num_oov_buckets) +``` +Proposed: +```python +x = tf.keras.Input(shape=(1,), name=key, dtype=dtype) +layer = tf.keras.layers.IndexLookup( + vocabulary=vocabulary_list, num_oov_tokens=num_oov_buckets) +out = layer(x) +``` + +2. categorical vocab file column + +Original: +```python +fc = tf.feature_column.categorical_column_with_vocab_file( + key, vocabulary_file, vocabulary_size, dtype, + default_value, num_oov_buckets) +``` +Proposed: +```python +x = tf.keras.Input(shape=(1,), name=key, dtype=dtype) +layer = tf.keras.layers.IndexLookup( + vocabulary=vocabulary_file, num_oov_tokens=num_oov_buckets) +out = layer(x) +``` +Note: `vocabulary_size` is only valid if `adapt` is called. Otherwise if user desires to lookup for the first K vocabularies in vocab file, then shrink the vocab file by only having the first K lines. + +3. categorical hash column + +Original: +```python +fc = tf.feature_column.categorical_column_with_hash_bucket( + key, hash_bucket_size, dtype) +``` +Proposed: +```python +x = tf.keras.Input(shape=(1,), name=key, dtype=dtype) +layer = tf.keras.layers.Hashing(num_bins=hash_bucket_size) +out = layer(x) +``` + +4. categorical identity column + +Original: +```python +fc = tf.feature_column.categorical_column_with_identity( + key, num_buckets, default_value) +``` +Proposed: +```python +x = tf.keras.Input(shape=(1,), name=key, dtype=dtype) +layer = tf.keras.layers.Lambda(lambda x: tf.where(tf.logical_or(x < 0, x > num_buckets), tf.fill(dims=tf.shape(x), value=default_value), x)) +out = layer(x) +``` + +5. cross column + +Original: +```python +fc_1 = tf.feature_column.categorical_column_with_vocabulary_list(key_1, vocabulary_list, + dtype, default_value, num_oov_buckets) +fc_2 = tf.feature_column.categorical_column_with_hash_bucket(key_2, hash_bucket_size, + dtype) +fc = tf.feature_column.crossed_column([fc_1, fc_2], hash_bucket_size, hash_key) +``` +Proposed: +```python +x1 = tf.keras.Input(shape=(1,), name=key_1, dtype=dtype) +x2 = tf.keras.Input(shape=(1,), name=key_2, dtype=dtype) +layer1 = tf.keras.layers.IndexLookup( + vocabulary=vocabulary_list, + num_oov_tokens=num_oov_buckets) +x1 = layer1(x1) +layer2 = tf.keras.layers.Hashing( + num_bins=hash_bucket_size) +x2 = layer2(x2) +layer = tf.keras.layers.CategoryCrossing(num_bins=hash_bucket_size) +out = layer([x1, x2]) +``` + +6. weighted categorical column + +Original: +```python +fc = tf.feature_column.categorical_column_with_vocab_list(key, vocabulary_list, + dtype, default_value, num_oov_buckets) +weight_fc = tf.feature_column.weighted_categorical_column(fc, weight_feature_key, + dtype=weight_dtype) +linear_model = tf.estimator.LinearClassifier(units, feature_columns=[weight_fc]) +``` +Proposed: +```python +x1 = tf.keras.Input(shape=(1,), name=key, dtype=dtype) +x2 = tf.keras.Input(shape=(1,), name=weight_feature_key, dtype=weight_dtype) +layer = tf.keras.layers.IndexLookup( + vocabulary=vocabulary_list, + num_oov_tokens=num_oov_buckets) +x1 = layer(x1) +x = tf.keras.layers.CategoricalEncoding(num_categories=len(vocabulary_list)+num_oov_buckets)([x1, x2]) +linear_model = tf.keras.premade.LinearModel(units) +linear_logits = linear_model(x) +``` + +## Design Proposal +We propose a `IndexLookup` layer to replace `tf.feature_column.categorical_column_with_vocabulary_list` and `tf.feature_column.categorical_column_with_vocabulary_file`, a `Hashing` layer to replace `tf.feature_column.categorical_column_with_hash_bucket`, a `CategoryCrossing` layer to replace `tf.feature_column.crossed_column`, and another `CategoricalEncoding` layer to convert the sparse input to the format required by linear models. + +```python +`tf.keras.layers.IndexLookup` +IndexLookup(PreprocessingLayer): +"""This layer transforms categorical inputs to index space. + If input is dense/sparse, then output is dense/sparse.""" + + def __init__(self, max_tokens=None, num_oov_tokens=1, vocabulary=None, + name=None, **kwargs): + """Constructs a IndexLookup layer. + + Args: + max_tokens: The maximum size of the vocabulary for this layer. If None, + there is no cap on the size of the vocabulary. This is used when `adapt` + is called. + num_oov_tokens: Non-negative integer. The number of out-of-vocab tokens. + All out-of-vocab inputs will be assigned IDs in the range of + [0, num_oov_tokens) based on a hash. When + `vocabulary` is None, it will convert inputs in [0, num_oov_tokens) + vocabulary: the vocabulary to Lookup the input. If it is a file, specify the file + path to represent the source vocab file, example 'tmp/vocab_file.txt'; + If it is a list/tuple, it represents the source vocab list, example '[A, B, C]'; + If it is None, the vocabulary can later be set. + name: Name to give to the layer. + **kwargs: Keyword arguments to construct a layer. + + Input: a string or int tensor of shape `[batch_size, d1, ..., dm]` + Output: an int tensor of shape `[batch_size, d1, ..., dm]` + + Example: + If one input sample is `["a", "c", "d", "a", "x"]` and the vocabulary is ["a", "b", "c", "d"], + and a single OOV token is used (`num_oov_tokens=1`), then the corresponding output sample is + `[1, 3, 4, 1, 0]`. 0 stands for an OOV token. + """ + pass + +`tf.keras.layers.CategoryCrossing` +CategoryCrossing(PreprocessingLayer): +"""This layer transforms multiple categorical inputs to categorical outputs + by Cartesian product, and hash the output if necessary. + If any of the inputs is sparse, then all outputs will be sparse. Otherwise, all outputs will be dense.""" + + def __init__(self, depth=None, num_bins=None, name=None, **kwargs): + """Constructs a CategoryCrossing layer. + Args: + depth: depth of input crossing. By default None, all inputs are crossed + into one output. It can be an int or tuple/list of ints, where inputs are + combined into all combinations of output with degree of `depth`. For example, + with inputs `a`, `b` and `c`, `depth=2` means the output will be [ab;ac;bc] + num_bins: Number of hash bins. By default None, no hashing is performed. + name: Name to give to the layer. + **kwargs: Keyword arguments to construct a layer. + + Input: a list of int tensors of shape `[batch_size, d1, ..., dm]` + Output: a single int tensor of shape `[batch_size, d1, ..., dm]` + + Example: + If the layer receives two inputs, `a=[[1, 2]]` and `b=[[1, 3]]`, and + if depth is 2, then the output will be a string tensor `[[b'1_X_1', + b'1_X_3', b'2_X_1', b'2_X_3']]` if not hashed, or integer tensor + `[[hash(b'1_X_1'), hash(b'1_X_3'), hash(b'2_X_1'), hash(b'2_X_3')]]` if hashed. + """ + pass + +`tf.keras.layers.CategoricalEncoding` +CategoricalEncoding(PreprocessingLayer): +"""This layer transforms categorical inputs from index space to category space. + If input is dense/sparse, then output is dense/sparse.""" + + def __init__(self, num_categories, mode="count", axis=-1, sparse_out=True, name=None, **kwargs): + """Constructs a CategoricalEncoding layer. + Args: + num_categories: Number of elements in the vocabulary. + mode: how to reduce a categorical input if multivalent, can be one of "count", + "avg_count", "binary", "tfidf". It can also be None if this is not a multivalent input, + and simply needs to convert input from index space to category space. "tfidf" is only + valid when adapt is called on this layer. + axis: the axis to reduce, by default will be the last axis, specially true + for sequential feature columns. + sparse_out: boolean to indicate whether the output should be dense or sparse tensor. + name: Name to give to the layer. + **kwargs: Keyword arguments to construct a layer. + + Input: a int tensor of shape `[batch_size, d1, ..., dm-1, dm]` + Output: a float tensor of shape `[batch_size, d1, ..., dm-1, num_categories]` + + Example: + If the input is 2 by 2 dense integer tensor '[[0, 2], [2, 2]]' with `num_categories=3`, then + output is 2 by 3 dense integer tensor '[[1, 0, 1], [0, 0, 2]]' with a `count` encoding, or + dense float tensor '[[.5, 0, .5], [0, 0, 1.]]' with a `avg_count` encoding, or dense integer tensor + '[[1, 0, 1], [0, 0, 1]]' with a `binary` encoding. + """ + pass + +`tf.keras.layers.Hashing` +Hashing(PreprocessingLayer): +"""This layer transforms categorical inputs to hashed output. + If input is dense/sparse, then output is dense/sparse.""" + def __init__(self, num_bins, name=None, **kwargs): + """Constructs a Hashing layer. + + Args: + num_bins: Number of hash bins. + name: Name to give to the layer. + **kwargs: Keyword arguments to construct a layer. + + Input: a int tensor of shape `[batch_size, d1, ..., dm]` + Output: a int tensor of shape `[batch_size, d1, ..., dm]` + + Example: + If the input is a 5 by 1 string tensor '[['A'], ['B'], ['C'], ['D'], ['E']]' with `num_bins=2`, + then output is 5 by 1 integer tensor '[[0], [0], [1], [1], [0]]', i.e., + [[hash('A')], [hash('B')], [hash('C')], [hash('D')], [hash('E')]]. + """ + pass + +``` + +We also propose to extend the current `tf.sparse.from_dense` op with a `ignore_value` to convert dense tensors to sparse tensors given user specified ignore values. This op can be used in both `tf.data` or [TF Transform](https://www.tensorflow.org/tfx/transform/get_started). In previous feature column world, "" is ignored for dense string input and -1 is ignored for dense int input. + +```python +`tf.sparse.from_dense` +def from_dense(tensor, name=None, ignore_value=0): + """Convert dense/sparse tensor to sparse while dropping user specified values. + + Args: + tensor: A dense `Tensor` to be converted to a `SparseTensor`. + name: Optional name for the op. + ignore_value: The value to be dropped from input. Default to 0 for backward compatibility. + """ + pass +``` + +### Alternatives Considered +An alternative is to provide solutions on top of feature columns. This will make user code to be slightly cleaner but far less flexible. + +### Performance Implications +End to End benchmark should be same as other preprocessing layers. + +### Dependencies +This proposal does not add any new dependencies. + +### Engineering Impact +These changes will include more layers and thus binary size and build time. It will not impact startup time. +This code can be tested in its own and maintained in its own buildable unit. + +### Platforms and Environments +This proposal should work in all platforms and environments. + +### Best Practices, Tutorials and Examples +This proposal does not change the best engineering practices. + +### Compatibility +No backward compatibility issues. + +### User Impact +User facing changes to migrate feature column based Keras modeling to preprocessing layer based Keras modeling, as the example workflow suggests. + + +## Code Snippets + +Below is a more detailed illustration of how each layer works. If there is a vocabulary list of countries: +```python +vocabulary_list = ["Italy", "France", "England", "Austria", "Germany"] +inp = np.asarray([["Italy", "Italy"], ["Germany", ""]]) +sp_inp = tf.sparse.from_dense(inp, ignore_value="") +cat_layer = tf.keras.layers.IndexLookup(vocabulary=vocabulary_list) +sp_out = cat_layer(sp_inp) +``` + +The categorical layer will first convert the input to: +```python +sp_out.indices = +sp_out.values = +``` + +The `CategoricalEncoding` layer will then convert the input from index space to category space, e.g., from a sparse tensor with indices shape as [batch_size, n_columns] and values in the range of [0, n_categories) to a sparse tensor with indices shape as [batch_size, n_categories] and values as the frequency of each value that occured in the example: +```python +encoding_layer = CategoricalEncoding(num_categories=len(vocabulary_list)) +sp_encoded_out = encoding_layer(sp_out) +sp_encoded_out.indices = +sp_encoded_out.values = +``` +A weight input can also be passed into the layer if different categories/examples should be treated differently. + +If this input needs to be crossed with another categorical input, say a vocabulary list of days, then use `CategoryCrossing` which works in the same way as `tf.feature_column.crossed_column` without setting `depth`: +```python +days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] +inp_days = tf.sparse.from_dense(np.asarray([["Sunday"], [""]]), ignore_value="") +layer_days = IndexLookup(vocabulary=days) +sp_out_2 = layer_days(inp_days) + +sp_out_2.indices = +sp_out_2.values = + +cross_layer = CategoryCrossing(num_bins=5) +# Use the output from IndexLookup (sp_out), not CategoricalEncoding (sp_combined_out) +crossed_out = cross_layer([sp_out, sp_out_2]) + +cross_out.indices = +cross_out.values = +``` + +## Questions and Discussion Topics +We'd like to gather feedbacks on `IndexLookup`, specifically we propose migrating off from mutually exclusive `num_oov_buckets` and `default_value` and replace with `num_oov_tokens`. \ No newline at end of file From ecbc169ee43f60a745bcb3152455f74cd5a171da Mon Sep 17 00:00:00 2001 From: qlzh727 Date: Tue, 25 Feb 2020 11:06:18 -0800 Subject: [PATCH 208/365] Address the comment from @apassos 1. Udpate the motivation to emphasize the modularity of TF. 2. Update the section for reverse dependency from TF to keras. --- rfcs/20200205-standalone-keras-repository.md | 77 ++++++++++---------- 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/rfcs/20200205-standalone-keras-repository.md b/rfcs/20200205-standalone-keras-repository.md index 984d4ecb8..b021c7a10 100644 --- a/rfcs/20200205-standalone-keras-repository.md +++ b/rfcs/20200205-standalone-keras-repository.md @@ -14,19 +14,35 @@ repository, with TensorFlow as a dependency. ## Motivation +### TensorFlow API modularity + +Currently, Keras has to rely on a number of private TensorFlow APIs. However, a +litmus test of the quality of the public TensorFlow low-level APIs is that they +should be strictly sufficient to a higher-level API like Keras. +After splitting the repository, Keras will have to import TensorFlow and +rely exclusively on public APIs. If Keras still ends up using TensorFlow +private features, it might be an indication of tight coupling of +implementation details. If certain private features are extensively used, +we might want to consider exposing them as public low level API. + +This design is also aligned with the design for +[Modular TensorFlow](https://github.com/tensorflow/community/blob/master/rfcs/20190305-modular-tensorflow.md), +which splits the TensorFlow project into smaller components that are not +tightly coupled together. + ### Build times Building the open-source TensorFlow project end-to-end is an extensive exercise. -With a standard GCP instance, it might take more than one hour to finish the whole -build process (it might take longer with a Mac laptop). Although the local build -cache might help speed up the follow-up builds, the initial time cost is too -high for regular software development workflows. Internally, Google has a +With a standard GCP instance, it might take more than one hour to finish the +whole build process (it might take longer with a Mac laptop). Although the local +build cache might help speed up the follow-up builds, the initial time cost is +too high for regular software development workflows. Internally, Google has a distributed build and caching service, which Googlers heavily rely on, that can build TensorFlow and run all Keras tests within 5 mins. Sadly, we can't expose this to external contributors. Currently, any contribution to Keras code will require building all of -TensorFlow, which is quite expensive to do for average users. +TensorFlow c++ binary, which is quite expensive to do for average users. Having a separate repository will allow the Keras package to be built without building TensorFlow. This should greatly improve the velocity of open-source developers when they contribute to Keras code. @@ -38,37 +54,20 @@ to Keras code has been a significant source of issues: * It discouraged contributions, since many external developers couldn't test their changes and make sure they were correct. -* External developers would send unverified PRs, and Google reviewers spend time back -and forth, fixing the PR. Sometimes PR is just not moving forward because of the -lengthy feedback loop. - -With the new standalone Keras repository, external contributors -should experience much shorter turn-around time when -building/testing Keras, since they don't need to build TensorFlow anymore. -This should have a positive impact on building a vibrant open-source +* External developers would send unverified PRs, and Google reviewers spend time +back and forth, fixing the PR. Sometimes PR is just not moving forward because +of the lengthy feedback loop. + +With the new standalone Keras repository, external contributors should +experience much shorter turn-around time when building/testing Keras, since they +don't need to build TensorFlow anymore. +This should have a positive impact on building a vibrant open-source developer community. In addition, by getting the Keras team at Google to start developing Keras using the same public tools and infrastructure as third-party developers, we make the development process more transparent and more community-oriented. -### TensorFlow API modularity - -There are other side-benefits if we split the repository. Currently, Keras -has to rely on a number of private TensorFlow APIs. However, a litmus test -of the quality of the public TensorFlow low-level APIs is that they should -be strictly sufficient to a higher-level API like Keras. -After splitting the repository, Keras will have to import TensorFlow and -rely exclusively on public APIs. If Keras still ends up using TensorFlow -private features, it might be an indication of tight coupling of -implementation details. If certain private features are extensively used, -we might want to consider exposing them as public low level API. - -This design is also aligned with the design for -[Modular TensorFlow](https://github.com/tensorflow/community/blob/master/rfcs/20190305-modular-tensorflow.md), -which splits the TensorFlow project into smaller components that are not -tightly coupled together. - ## Design Proposal @@ -141,17 +140,18 @@ TF low-level APIs, but not the other way around. Unfortunately, there is some existing reverse logic in the TF code that relies on Keras, which we should update/remove when we split the repository. -The current usage of Keras from TensorFlow are: -* Unit tests, which should be converted to integration tests, or port the tests -to Keras repository. +So far there are about 120 usages for Keras within Tensorflow, the current usage +are: +* Unit tests, which relies on Keras to verify certain behavior of TF, like +distribution strategy, tf.function, and eager context. They should either be +converted to integration tests, or port the tests to Keras repository. * `feature_column`, which uses Keras base layer and model. * Legacy `tf.layers` in v1 API, which uses Keras base layer as base class. * legacy RNN cells, which uses Keras serialization and deserialization. -* TPU support code for `optimizer_v2`. +* TPU support code does a isinstance() check for `optimizer_v2`. * TF Lite for keras model saving utils. * Aliases from tf.losses/metrics/initializers/optimizers in tf.compat.v1. -* Symoblic/eager tensor logic for ops that is tightly coupled with Keras due to - current implementation of functional API and TF Ops layers. +* Keras symbolic tensor check in the ops library for tf.function. For usage like tf.layers to keras.layers, it can't be removed due to the API contract and guarantee. We should use LasyLoader to walk around the cyclic @@ -167,7 +167,10 @@ if not BaseLayer: ``` Other dependency should be removed as much as possible, eg move the util/code -from Keras to TF, or rework the implementation detail. +from Keras to TF, or rework the implementation detail. For any of the +dependencies that have to stay, need to use public Keras API only. A +check will also be added to TF to make sure there isn't any dependencies being +added in future for need of Keras. **Note that this is a key point to prevent Keras accidentally break Tensorflow.** From ce8a20f82126dd829c1afdd22d34ca8d1d5520ec Mon Sep 17 00:00:00 2001 From: qlzh727 Date: Tue, 25 Feb 2020 13:31:46 -0800 Subject: [PATCH 209/365] Update the states for python change history. These numbers might help us decide whether the split PR execise is too much a overhead or not. --- rfcs/20200205-standalone-keras-repository.md | 43 ++++++++++++++------ 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/rfcs/20200205-standalone-keras-repository.md b/rfcs/20200205-standalone-keras-repository.md index b021c7a10..eaafbf609 100644 --- a/rfcs/20200205-standalone-keras-repository.md +++ b/rfcs/20200205-standalone-keras-repository.md @@ -67,6 +67,9 @@ developer community. In addition, by getting the Keras team at Google to start developing Keras using the same public tools and infrastructure as third-party developers, we make the development process more transparent and more community-oriented. +In the meantime, some of the workload for repository management can be shared +with community so that Keras team member within Google won't be the bottleneck +for all the issues. ## Design Proposal @@ -198,8 +201,8 @@ import tensorflow as tf ones = tf.ones([2, 3]) ``` -During this conversion, we might notice that certain TF features used in Keras are -not public. A decision should be made on a case-by-case basis: +During this conversion, we might notice that certain TF features used in Keras +are not public. A decision should be made on a case-by-case basis: * Copy the functionality from TF to Keras. * Replace the usage with another alternative TF public API. @@ -211,11 +214,25 @@ not public. A decision should be made on a case-by-case basis: For any change that is affecting both TensorFlow and Keras, the change will need to be split into two, one as a PR to the TF repo, -and the other as a PR to the Keras repo. Here are some common scenarios: - -1. Adding a new feature to TensorFlow, and having Keras rely on it. Note that the -TF change needs to be submitted first, and the Keras PR needs to wait for the new TF -nightly to become available on PyPI. +and the other as a PR to the Keras repo. This will introduce overhead and slow +down the change for area's like distribution stragey, and other areas that +might under active development. + +With the internal change history between 2019-01-01 and 2020-01-01: +1. There are 6756 changes submitted to tensorflow/python +2. There are 5115 changes submitted to tensorflow/python but not +tensorflow/python/keras. +3. Among the 1641 changes submitted to tensorflow/keras, 1338 of them change +Keras only without touching tensorflow, and 303 of them change both Keras and +TF. +This means about 18.5% change that change Keras will change TF, and 4.4% change +that change TF will touch Keras in the meantime. + +Here are some common scenarios: + +1. Adding a new feature to TensorFlow, and having Keras rely on it. Note that +the TF change needs to be submitted first, and the Keras PR needs to wait for +the new TF nightly to become available on PyPI. Also note that any rollback of the TF PR will cause Keras to break, the rollback sequence should be PR 33333 and then PR 22222 (see example below). @@ -335,9 +352,11 @@ we will check if it is still relevant/active, and will be copied to keras-team/keras. * The permission of keras-team/keras need to be updated as the codebase is new. The access level for the repository need to be reestablished. -From least access to most access, the permission levels for an organization repository are: +From least access to most access, the permission levels for an organization +repository are: - * Read: Recommended for non-code contributors who want to view or discuss the project. + * Read: Recommended for non-code contributors who want to view or discuss the + project. * Triage: Recommended for contributors who need to proactively manage issues and pull requests without write access. * Write: Recommended for contributors who actively push to your project. @@ -360,9 +379,9 @@ is no performance regression. ### Dependencies -The TensorFlow pip package will auto-install the Keras package, which shouldn't make -any difference on the end-user side. Under the hood, Keras will be a different -package imported by `tf_core`, like what we do for TF estimator. +The TensorFlow pip package will auto-install the Keras package, which shouldn't +make any difference on the end-user side. Under the hood, Keras will be a +different package imported by `tf_core`, like what we do for TF estimator. ### Developer experience Impact From 9123f7feb31e72f7ab282e2e712d8622ec7faf72 Mon Sep 17 00:00:00 2001 From: qlzh727 Date: Tue, 25 Feb 2020 14:40:18 -0800 Subject: [PATCH 210/365] Updating the section for CI and presubmit. --- rfcs/20200205-standalone-keras-repository.md | 61 +++++++++++++++++--- 1 file changed, 54 insertions(+), 7 deletions(-) diff --git a/rfcs/20200205-standalone-keras-repository.md b/rfcs/20200205-standalone-keras-repository.md index eaafbf609..5ef4f8820 100644 --- a/rfcs/20200205-standalone-keras-repository.md +++ b/rfcs/20200205-standalone-keras-repository.md @@ -219,14 +219,15 @@ down the change for area's like distribution stragey, and other areas that might under active development. With the internal change history between 2019-01-01 and 2020-01-01: -1. There are 6756 changes submitted to tensorflow/python -2. There are 5115 changes submitted to tensorflow/python but not +1. There are 6756 changes submitted to tensorflow/python +2. There are 5115 changes submitted to tensorflow/python but not tensorflow/python/keras. -3. Among the 1641 changes submitted to tensorflow/keras, 1338 of them change -Keras only without touching tensorflow, and 303 of them change both Keras and -TF. -This means about 18.5% change that change Keras will change TF, and 4.4% change -that change TF will touch Keras in the meantime. +3. Among the 1641 changes submitted to tensorflow/keras, 1338 of +them change Keras only without touching tensorflow, and 303 of them change both +Keras and TF. + +This means about 18.5% change that change Keras will change TF, and +4.4% change that change TF will touch Keras in the meantime. Here are some common scenarios: @@ -340,6 +341,52 @@ class existing_layer(Layer): knob2=3) ``` +### Continuous integration and presubmit test +Due to the fact that Keras code is also being used within Google, apart from +the normal Github CI (action) tests, We will also run the same tests internally +against HEAD. +1. Github CI and presubmit test will use a stable version of TF binary during +test. +2. Google CI and presubmit test will run against HEAD for both TF and Keras +code. Note that we won't allow submiting Keras code directly to Google +internal code repo, engineers within Google are still allowed to create changes +internally and run test for it. + +The gap between the HEAD version and TF used by Keras should be +as close as possible. Large gap is expect to cause issue for debugging and code +tracing. + +There are a few common cases that either CI could break: +1. Github CI could break when the version of TF it depend on is changed. We +think this can be mitigated by pinning Keras to a explicit version of TF, rather +than a floating version like `tf-nightly`. The presubmit test when changing the +verison nubmer should catch this. In the case that a new stable version is +breaking some Keras test, we should + + 1a. Disable the failed tests and move forward to minimize the gap between + TF HEAD and Keras used version. Report the isuse TF team for fix. + + 1b. In the case of major breakage, Keras will stay with old version, report + to TF team and get the issue fixed. + + We hope 1b case should be minimized since same tests are running on Google + CI as well. + +2. Google CI could break when a submitted PR for Keras is mirrored into Google +code base. We can't foresee these breakage since we don't run global presumbit +internally for every CL. In the case of breakage, since external contributor +won't notice this, Keras team in Google will: + + 2a. Rollback the original Keras PR if the fault is at Keras side (miss test + coverage, or bad code interface). + + 2b. Update the internal tests to correctly rely on Keras public contract, or + disable the failed test for the moment. + + We hope both case can be minimized with the internal dependency cleanup as + well as only relying on public TF API described above. + + ### Github Repository Migration * For any open Github PR/issue in Keras-team/keras, it need to be copied to From 11f3828d37b9635287b6bdf0d4f69e9a4404aa28 Mon Sep 17 00:00:00 2001 From: qlzh727 Date: Tue, 25 Feb 2020 14:45:25 -0800 Subject: [PATCH 211/365] Update style and fix typo. --- rfcs/20200205-standalone-keras-repository.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/rfcs/20200205-standalone-keras-repository.md b/rfcs/20200205-standalone-keras-repository.md index 5ef4f8820..7db6c83c5 100644 --- a/rfcs/20200205-standalone-keras-repository.md +++ b/rfcs/20200205-standalone-keras-repository.md @@ -363,24 +363,25 @@ than a floating version like `tf-nightly`. The presubmit test when changing the verison nubmer should catch this. In the case that a new stable version is breaking some Keras test, we should - 1a. Disable the failed tests and move forward to minimize the gap between - TF HEAD and Keras used version. Report the isuse TF team for fix. + * Disable the failed tests and move forward to minimize the gap between + TF HEAD and Keras used version. Report the issue TF team for fix. - 1b. In the case of major breakage, Keras will stay with old version, report + * In the case of major breakage, Keras will stay with old version, report to TF team and get the issue fixed. - We hope 1b case should be minimized since same tests are running on Google - CI as well. + We hope the second case should be minimized since same tests are running on + Google CI as well. Any change that might break Keras should be caught + with internal presubmits. 2. Google CI could break when a submitted PR for Keras is mirrored into Google code base. We can't foresee these breakage since we don't run global presumbit internally for every CL. In the case of breakage, since external contributor won't notice this, Keras team in Google will: - 2a. Rollback the original Keras PR if the fault is at Keras side (miss test + * Rollback the original Keras PR if the fault is at Keras side (miss test coverage, or bad code interface). - 2b. Update the internal tests to correctly rely on Keras public contract, or + * Update the internal tests to correctly rely on Keras public contract, or disable the failed test for the moment. We hope both case can be minimized with the internal dependency cleanup as From 5de7dfea348bb718443ba0e1b9a29c45faea8021 Mon Sep 17 00:00:00 2001 From: qlzh727 Date: Tue, 25 Feb 2020 15:49:32 -0800 Subject: [PATCH 212/365] Adding a section for Alternative considered. --- rfcs/20200205-standalone-keras-repository.md | 26 ++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/rfcs/20200205-standalone-keras-repository.md b/rfcs/20200205-standalone-keras-repository.md index 7db6c83c5..d388b1052 100644 --- a/rfcs/20200205-standalone-keras-repository.md +++ b/rfcs/20200205-standalone-keras-repository.md @@ -419,6 +419,32 @@ share more permissions with the community member. See more details about the project permission in https://help.github.com/en/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization. +### Alternative Considered + +Split the Tensorflow python and c++ code into separate pip package, eg +tf-core and tf-python, and tf-python will use a stable version of tf-core +package to build Tensorflow python. We have to maintain the compatiblity +between c++ layer and python layer, which is currently quite stable. + + Pros: + * This should allow us to enjoy speed up of build time for OSS build, since + build/test TF won't require building all the c kernel, which is the majority + of the build time. Internal CI won't be affected since it will always run + against HEAD. + * All the python code still lives in one repository, so we don't need to + split the change into 2 if it changes Keras and TF python at the same time. + + Cons: + * The change that touch both c kernel and TF python code will need to do the + two stage commit process, if the python change relies on c kernel change. + * Less motivated to cleanup the cross dependency between TF and Keras since + it is no longer a required task. + * With Google internel code repo as source of turth, most of the workflow/ + tools will still be Google centric instead of Github centric. + * Keras-team/keras code base will still be there if we don't move new TF + code to it. Having a staled version out there is not ideal, and we should + really merge them (code/issue/community member) together. + ### Performance Implications There may be some performance implications as we move towards only using From 7d1c74804c7783aecf281c7df1fdd157a9f10bb6 Mon Sep 17 00:00:00 2001 From: Austin Anderson Date: Tue, 25 Feb 2020 17:32:04 -0800 Subject: [PATCH 213/365] Update @angersson to @angerson (#210) Since my username has changed, this gets a fix! --- sigs/build/CHARTER.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sigs/build/CHARTER.md b/sigs/build/CHARTER.md index 9df6ecc2a..3531475ca 100644 --- a/sigs/build/CHARTER.md +++ b/sigs/build/CHARTER.md @@ -19,7 +19,7 @@ Archives of the mailing list will be publicly accessible. ## Contacts -* Project leads: Jason Zaman [@perfinion](https://github.com/perfinion), Austin Anderson [@angersson](https://github.com/angersson) +* Project leads: Jason Zaman [@perfinion](https://github.com/perfinion), Austin Anderson [@angerson](https://github.com/angerson) * For administrative questions, contact Edd Wilder-James @ewilderj - ewj at google From 132f542e627fb65cdcced7f6e2060cf4199eaf7a Mon Sep 17 00:00:00 2001 From: qlzh727 Date: Wed, 26 Feb 2020 15:10:57 -0800 Subject: [PATCH 214/365] Fix typo for LasyLoader --- rfcs/20200205-standalone-keras-repository.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rfcs/20200205-standalone-keras-repository.md b/rfcs/20200205-standalone-keras-repository.md index d388b1052..c49f94985 100644 --- a/rfcs/20200205-standalone-keras-repository.md +++ b/rfcs/20200205-standalone-keras-repository.md @@ -157,13 +157,13 @@ converted to integration tests, or port the tests to Keras repository. * Keras symbolic tensor check in the ops library for tf.function. For usage like tf.layers to keras.layers, it can't be removed due to the API -contract and guarantee. We should use LasyLoader to walk around the cyclic +contract and guarantee. We should use LazyLoader to walk around the cyclic dependency issue. ```python -from tensorflow.python.util.lasy_loader import LasyLoader +from tensorflow.python.util.lazy_loader import LazyLoader -BaseLayer = LasyLoader( +BaseLayer = LazyLoader( 'BaseLayer', globals(), 'keras.layers.Layer') if not BaseLayer: raise ImportError('Keras is not installed, please pip install keras.') From 1b0a94ddf0f8bc7ffec2b9593071e4096d37048e Mon Sep 17 00:00:00 2001 From: Jinjing Zhou Date: Thu, 27 Feb 2020 15:45:36 +0800 Subject: [PATCH 215/365] Update 20191016-dlpack-support.md --- rfcs/20191016-dlpack-support.md | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/rfcs/20191016-dlpack-support.md b/rfcs/20191016-dlpack-support.md index b87ded15a..74ea5a330 100644 --- a/rfcs/20191016-dlpack-support.md +++ b/rfcs/20191016-dlpack-support.md @@ -86,7 +86,7 @@ Proposed code of converting a Tensorflow tensor to Torch tensor using DLPack nat ```python import numpy as np import tensorflow as tf -import tensorflow.???.dlpack as tfdlpack +import tensorflow.experimental.dlpack as tfdlpack import torch.utils.dlpack as thdlpack @@ -99,7 +99,27 @@ t3 = tfdlpack.from_dlpack(dlpack) # dlpack -> tf tensor print(t3) ``` -Package implementation details: +Proposed API implementation details: +There two critical parts for this API: +1. Memory usability on async device (to_dlpack) +As mentioned by @alextp +> TF does not use cudamalloc to allocate memory but its own allocator whose internal state is stored on the CPU and matches the head of TF's compute stream, so we need to sync TF's stream before the memory is usable from dlpack and similarly sync other cuda streams before memory is made usable by TF tensors (and similarly we need to sync the streams when trying to free the buffers). +Here we decide to manunally sync the device when exporting TF tensor to dlpack. The sync behavior is done in the `TFE_TensorHandleDevicePointer` API, which returns the pointer to the underlying memory. + +2. Memory management (avoid leak) (to_dlpack/from_dlpack) +As the design of dlpack, the framework constructing tensor from dlpack is responsible to call the dlpack's deleter, which is usually dereferencing the underlying buffer, when destructing the constructed tensor. +For `from_dlpack`, a deleter function is registered when constructing the TF tensor, and would be called upon destruction. +For `to_dlpack`, the dlpack data structure will hold a reference (by `TensorReference`) to the underlying buffer, and `unref` it in the dlpack's deleter function. + + +## Questions and Discussion Topics + +https://github.com/tensorflow/tensorflow/issues/29039#issuecomment-527520270 Outlines the key issues that need to be addressed, namely that a synch is required to ensure the tensor information is valid. Supporting \_\_cuda_array_interface\_\_ is another option as well, although cuPy and cuDF have opted to support both and ideally Tensorflow would as well. + +## Reference + +### tfdlpack package implementation detail + The first design consideration is that we want to avoid any modification to the main Tensorflow library, so to get around the potential long delay of PR, code review, and release cycle of Tensorflow main package. Inspired by the solution from https://github.com/tobegit3hub/tftvm, we decide to implement the functionality as two custom tensor ops: to_dlpack and from_dlpack. Besides, we want this feature to be plugged into other projects quite easily. For example, any project that relies on this feature is able to run without compiling against Tensorflow's header files. Not only that an extra dependency usually means extra effort, but also that such maintenance is repetitive and should be handled by the feature developer (i.e., us) alone. To this end, we have an idea of releasing it as a python package. However, the question is how to invoke the two custom tensor ops in python? The challenge is that Tensorflow's custom op interface has a limited support of argument and return types, while to_dlpack and from_dlpack should have an argument/return type of DLPack object. We work around this by encoding the address of an DLPack object as an integer, so it can be accepted/returned by the custom op interface. Then, we decode it in python or C depending on whether we return it (to_dlpack) or consume it (from_dlpack). @@ -108,7 +128,3 @@ Finally, to achieve the maximal efficiency, we want the conversion happens witho For to_dlpack, the returned DLPack tensor shares the same memory address of the input Tensorflow tensor and holds a reference to it. Upon the destruction of the DLPack tensor, it will dereference the Tensorflow tensor, so it can be collected by Tensorflow's memory management. (inspired by PyTorch's DLPack implementation). For from_dlpack, it first creates an allocator object (subclass Tensorflow's allocator interface) that holds the reference to the DLPack tensor. The AllocateRaw function directly returns the memory it holds without creating any new buffer. Upon destruction, the DeallocateRaw function just calls the deletor of the DLPack tensor. (inspired by Tensorflow's immutable_constant_op). - -## Questions and Discussion Topics - -https://github.com/tensorflow/tensorflow/issues/29039#issuecomment-527520270 Outlines the key issues that need to be addressed, namely that a synch is required to ensure the tensor information is valid. Supporting \_\_cuda_array_interface\_\_ is another option as well, although cuPy and cuDF have opted to support both and ideally Tensorflow would as well. From 5100148c9510439aea038e4ff818ae062f8032fb Mon Sep 17 00:00:00 2001 From: genehwung Date: Fri, 28 Feb 2020 15:56:22 -0800 Subject: [PATCH 216/365] Update 20200117-tfx-combining-model-validator-with-evaluator.md --- rfcs/20200117-tfx-combining-model-validator-with-evaluator.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md b/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md index 03cdb1fef..9a19a34f5 100644 --- a/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md +++ b/rfcs/20200117-tfx-combining-model-validator-with-evaluator.md @@ -1,6 +1,6 @@ # Combining ModelValidator with Evaluator -| Status | Proposed | +| Status | Accepted | | :------------ | :----------------------------------------------------- | | **RFC #** | 200 | | **Author(s)** | Gene Huang (jinhuang@google.com), Mike Dreves (mdreves@google.com), Neoklis Polyzotis (npolyzotis@google.com) | From 0650b34a755e51050ae4f0e91a4e773b2515b46f Mon Sep 17 00:00:00 2001 From: tanzhenyu Date: Mon, 2 Mar 2020 01:55:16 -0800 Subject: [PATCH 217/365] Update 20191212-keras-categorical-inputs.md Finalize design and add review meetings. --- rfcs/20191212-keras-categorical-inputs.md | 60 +++++++++++++---------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/rfcs/20191212-keras-categorical-inputs.md b/rfcs/20191212-keras-categorical-inputs.md index dd2b7aed2..b1954c25d 100644 --- a/rfcs/20191212-keras-categorical-inputs.md +++ b/rfcs/20191212-keras-categorical-inputs.md @@ -1,6 +1,6 @@ # Keras categorical inputs -| Status | Reviewed | +| Status | Accepted | :-------------- |:---------------------------------------------------- | | **Author(s)** | Zhenyu Tan (tanzheny@google.com), Francois Chollet (fchollet@google.com)| | **Sponsor** | Karmel Allison (karmel@google.com), Martin Wicke (wicke@google.com) | @@ -8,7 +8,7 @@ ## Objective -This document proposes 4 new preprocessing Keras layers (`IndexLookup`, `CategoryCrossing`, `CategoricalEncoding`, `Hashing`), and an extension to existing op (`tf.sparse.from_dense`) to allow users to: +This document proposes 4 new preprocessing Keras layers (`IndexLookup`, `CategoryCrossing`, `CategoryEncoding`, `Hashing`), and an extension to existing op (`tf.sparse.from_dense`) to allow users to: * Perform feature engineering for categorical inputs * Replace feature columns and `tf.keras.layers.DenseFeatures` with proposed layers * Introduce sparse inputs that work with Keras linear models and other layers that support sparsity @@ -47,18 +47,18 @@ model_inputs = [] # input list to feed linear model. linear_inputs = [] for feature_name in CATEGORICAL_COLUMNS: - feature_input = tf.keras.Input(shape=(1,), dtype=tf.string, name=feature_name, sparse=True) - vocab_list = sorted(dftrain[feature_name].unique()) - # Map string values to indices - x = tf.keras.layers.IndexLookup(vocabulary=vocab_list, name=feature_name)(feature_input) - x = tf.keras.layers.CategoricalEncoding(num_categories=len(vocab_list))(x) - linear_inputs.append(x) - model_inputs.append(feature_input) + feature_input = tf.keras.Input(shape=(1,), dtype=tf.string, name=feature_name, sparse=True) + vocab_list = sorted(dftrain[feature_name].unique()) + # Map string values to indices + x = tf.keras.layers.IndexLookup(vocabulary=vocab_list, name=feature_name)(feature_input) + x = tf.keras.layers.CategoryEncoding(num_categories=len(vocab_list))(x) + linear_inputs.append(x) + model_inputs.append(feature_input) for feature_name in NUMERICAL_COLUMNS: - feature_input = tf.keras.Input(shape=(1,), name=feature_name) - linear_inputs.append(feature_input) - model_inputs.append(feature_input) + feature_input = tf.keras.Input(shape=(1,), name=feature_name) + linear_inputs.append(feature_input) + model_inputs.append(feature_input) linear_model = tf.keras.experimental.LinearModel(units=1) linear_logits = linear_model(linear_inputs) @@ -67,10 +67,10 @@ model = tf.keras.Model(model_inputs, linear_logits) model.compile('sgd', loss=tf.keras.losses.BinaryCrossEntropy(from_logits=True), metrics=['accuracy']) dataset = tf.data.Dataset.from_tensor_slices(( - (tf.sparse.from_dense(dftrain.sex, "Unknown"), tf.sparse.from_dense(dftrain.n_siblings_spouses, -1), - tf.sparse.from_dense(dftrain.parch, -1), tf.sparse.from_dense(dftrain['class'], "Unknown"), tf.sparse.from_dense(dftrain.deck, "Unknown"), - tf.expand_dims(dftrain.age, axis=1), tf.expand_dims(dftrain.fare, axis=1)), - y_train)).batch(bach_size).repeat(n_epochs) + (tf.sparse.from_dense(dftrain.sex, "Unknown"), tf.sparse.from_dense(dftrain.n_siblings_spouses, -1), + tf.sparse.from_dense(dftrain.parch, -1), tf.sparse.from_dense(dftrain['class'], "Unknown"), tf.sparse.from_dense(dftrain.deck, "Unknown"), + tf.expand_dims(dftrain.age, axis=1), tf.expand_dims(dftrain.fare, axis=1)), + y_train)).batch(bach_size).repeat(n_epochs) model.fit(dataset) ``` @@ -84,7 +84,7 @@ The second example gives an instruction on how to transition from categorical fe Original: ```python fc = tf.feature_column.categorical_feature_column_with_vocabulary_list( - key, vocabulary_list, dtype, default_value, num_oov_buckets) + key, vocabulary_list, dtype, default_value, num_oov_buckets) ``` Proposed: ```python @@ -182,13 +182,13 @@ layer = tf.keras.layers.IndexLookup( vocabulary=vocabulary_list, num_oov_tokens=num_oov_buckets) x1 = layer(x1) -x = tf.keras.layers.CategoricalEncoding(num_categories=len(vocabulary_list)+num_oov_buckets)([x1, x2]) +x = tf.keras.layers.CategoryEncoding(num_categories=len(vocabulary_list)+num_oov_buckets)([x1, x2]) linear_model = tf.keras.premade.LinearModel(units) linear_logits = linear_model(x) ``` ## Design Proposal -We propose a `IndexLookup` layer to replace `tf.feature_column.categorical_column_with_vocabulary_list` and `tf.feature_column.categorical_column_with_vocabulary_file`, a `Hashing` layer to replace `tf.feature_column.categorical_column_with_hash_bucket`, a `CategoryCrossing` layer to replace `tf.feature_column.crossed_column`, and another `CategoricalEncoding` layer to convert the sparse input to the format required by linear models. +We propose a `IndexLookup` layer to replace `tf.feature_column.categorical_column_with_vocabulary_list` and `tf.feature_column.categorical_column_with_vocabulary_file`, a `Hashing` layer to replace `tf.feature_column.categorical_column_with_hash_bucket`, a `CategoryCrossing` layer to replace `tf.feature_column.crossed_column`, and another `CategoryEncoding` layer to convert the sparse input to the format required by linear models. ```python `tf.keras.layers.IndexLookup` @@ -253,13 +253,13 @@ CategoryCrossing(PreprocessingLayer): """ pass -`tf.keras.layers.CategoricalEncoding` -CategoricalEncoding(PreprocessingLayer): +`tf.keras.layers.CategoryEncoding` +CategoryEncoding(PreprocessingLayer): """This layer transforms categorical inputs from index space to category space. If input is dense/sparse, then output is dense/sparse.""" def __init__(self, num_categories, mode="count", axis=-1, sparse_out=True, name=None, **kwargs): - """Constructs a CategoricalEncoding layer. + """Constructs a CategoryEncoding layer. Args: num_categories: Number of elements in the vocabulary. mode: how to reduce a categorical input if multivalent, can be one of "count", @@ -367,9 +367,9 @@ sp_out.values = ``` -The `CategoricalEncoding` layer will then convert the input from index space to category space, e.g., from a sparse tensor with indices shape as [batch_size, n_columns] and values in the range of [0, n_categories) to a sparse tensor with indices shape as [batch_size, n_categories] and values as the frequency of each value that occured in the example: +The `CategoryEncoding` layer will then convert the input from index space to category space, e.g., from a sparse tensor with indices shape as [batch_size, n_columns] and values in the range of [0, n_categories) to a sparse tensor with indices shape as [batch_size, n_categories] and values as the frequency of each value that occured in the example: ```python -encoding_layer = CategoricalEncoding(num_categories=len(vocabulary_list)) +encoding_layer = CategoryEncoding(num_categories=len(vocabulary_list)) sp_encoded_out = encoding_layer(sp_out) sp_encoded_out.indices = @@ -389,7 +389,7 @@ sp_out_2.indices = cross_layer = CategoryCrossing(num_bins=5) -# Use the output from IndexLookup (sp_out), not CategoricalEncoding (sp_combined_out) +# Use the output from IndexLookup (sp_out), not CategoryEncoding (sp_combined_out) crossed_out = cross_layer([sp_out, sp_out_2]) cross_out.indices = ``` -## Questions and Discussion Topics -We'd like to gather feedbacks on `IndexLookup`, specifically we propose migrating off from mutually exclusive `num_oov_buckets` and `default_value` and replace with `num_oov_tokens`. \ No newline at end of file +## Questions and Meeting Notes +We'd like to gather feedbacks on `IndexLookup`, specifically we propose migrating off from mutually exclusive `num_oov_buckets` and `default_value` and replace with `num_oov_tokens`. +1. Naming for encoding v.s. vectorize: encoding can mean many things, vectorize seems to general. We will go with "CategoryEncoding" +2. "mode" should be "count" or "avg_count", instead of "sum" and "mean". +3. Rename "sparse_combiner" to "mode", which aligns with scikit-learn. +4. Have a 'sparse_out' flag for "CategoryEncoding" layer. +5. Hashing -- we refer to hashing when we mean fingerprinting. Keep using "Hashing" for layer name, but document how it relies on tf.fingerprint, and also provides option for salt. +5. Rename "CategoryLookup" to "IndexLookup" \ No newline at end of file From 53d92bdc1e25e194a6440243548912203fad5a6d Mon Sep 17 00:00:00 2001 From: Even Oldridge Date: Tue, 3 Mar 2020 09:48:01 -0800 Subject: [PATCH 218/365] Update 20191016-dlpack-support.md Removed the questions. --- rfcs/20191016-dlpack-support.md | 9 --------- 1 file changed, 9 deletions(-) diff --git a/rfcs/20191016-dlpack-support.md b/rfcs/20191016-dlpack-support.md index 74ea5a330..9c5b437f4 100644 --- a/rfcs/20191016-dlpack-support.md +++ b/rfcs/20191016-dlpack-support.md @@ -17,12 +17,6 @@ A solution has already been developed by @VoVAllen and @jermainewang (coauthored ## Motivation -Why this is a valuable problem to solve? What background information is needed -to show how this design addresses the problem? - -Which users are affected by the problem? Why is it a problem? What data supports -this? What related work exists? - DLPack is a community effort to define a common tensor data structure that can be shared by different frameworks allowing data to be quickly shared often with zero or minimal copy. One of the main bottlenecks when trying to achieve GPU performance when operating across different frameworks is I/O and data formatting. The transfer of data between GPU and CPU or between formats is costly to the point where many operations become faster to simply run on the CPU because of the additional costs associated with moving/transforming the data. Even when mechanisms exist to copy data without leaving the GPU, memory constraints limit the application because two copies of the data are required. By implementing dlpack within TensorFlow there would be a way to transfer data directly between frameworks, enabling the development of a range of applications that weren't previously possible. Existing applications that take advantage of dlpack include: (adding my own and those listed in , other contributions needed) @@ -37,9 +31,6 @@ Beyond the benefit of specific applications, Tensorflow's adoption of dlpack wou ## User Benefit -How will users (or other contributors) benefit from this work? What would be the -headline in the release notes or blog post? - Users who wish to utilize other GPU accelerated frameworks like cuDF, cuPy, etc would be able to do so without expensive copy operations. By doing direct dataloading, feature engineering and preprocessing on GPU we see 10-15x speedups over traditional workflows involving CPUs to prepare the data for model readiness in other frameworks and they would be immediately available in tensorflow. More generally, users would be able to develop preprocessing or other GPU based functionality and be able to support integration with all dl frameworks simplifying development efforts when creating solutions that are upstream or downstream from deep learning models. From 819da0dd7cc26941b3f1aac37cfd58d22ff2f430 Mon Sep 17 00:00:00 2001 From: Jinjing Zhou Date: Wed, 4 Mar 2020 17:10:38 +0800 Subject: [PATCH 219/365] Update 20191016-dlpack-support.md --- rfcs/20191016-dlpack-support.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/rfcs/20191016-dlpack-support.md b/rfcs/20191016-dlpack-support.md index 9c5b437f4..4edf11b4f 100644 --- a/rfcs/20191016-dlpack-support.md +++ b/rfcs/20191016-dlpack-support.md @@ -9,7 +9,7 @@ ## Objective -This document proposes the adoption of dlpack (https://github.com/dmlc/dlpack) as way of passing tensor data to other frameworks without leaving the GPU and without a copy per [24453](https://github.com/tensorflow/tensorflow/issues/24453). dlpack is a community effort to define a common tensor data structure that can be shared by different frameworks. dlpack is currently supported by cuPy, cuDF, DGM, TGL, PyTorch, and MxNet. +This document proposes the adoption of dlpack (https://github.com/dmlc/dlpack) as way of passing tensor data to other frameworks without leaving the GPU and without a copy per [24453](https://github.com/tensorflow/tensorflow/issues/24453). dlpack is a community effort to define a common tensor data structure that can be shared by different frameworks. dlpack is currently supported by cuPy, cuDF, DGL, TGL, PyTorch, and MxNet. The interoperability of dlpack would allow for fast on-GPU communication between TensorFlow and these frameworks opening up a wide range of use cases outlined below. It would further enable \_\_cuda_array_interface\_\_ interoperability through cuPy/cuDF which support both methods providing a way to transfer data to Numba, PyArrow and other frameworks that have adopted that method, although [a similar request has been made to support that method of interoperability](https://github.com/tensorflow/tensorflow/issues/29039) and ideally both would be supported. @@ -35,14 +35,10 @@ Users who wish to utilize other GPU accelerated frameworks like cuDF, cuPy, etc More generally, users would be able to develop preprocessing or other GPU based functionality and be able to support integration with all dl frameworks simplifying development efforts when creating solutions that are upstream or downstream from deep learning models. -A blog post or release notes headline could read "Tensorflow now supports dlpack enabling interoperability with other GPU powered frameworks like cuPy, cuDF, DGM, TGL, PyTorch, and MxNet." +A blog post or release notes headline could read "Tensorflow now supports dlpack enabling interoperability with other GPU powered frameworks like cuPy, cuDF, DGL, TGL, PyTorch, and MxNet." ## Design Proposal -Notes from @alextp: - -AFAICT it should be easy to take cuda pointers in and out of TF and use them to build dlpack structures from tensors or vice versa. The tricky part is that TF does not use cudamalloc to allocate memory but its own allocator whose internal state is stored on the CPU and matches the head of TF's compute stream, so we need to sync TF's stream before the memory is usable from dlpack and similarly sync other cuda streams before memory is made usable by TF tensors (and similarly we need to sync the streams when trying to free the buffers). - A working version of dlpack integration has been released as a package by coauthors @jermainewang and @VoVAllen here: https://github.com/VoVAllen/tf-dlpack/issues/3 @@ -90,8 +86,7 @@ t3 = tfdlpack.from_dlpack(dlpack) # dlpack -> tf tensor print(t3) ``` -Proposed API implementation details: -There two critical parts for this API: +Potential technical problems for this API: 1. Memory usability on async device (to_dlpack) As mentioned by @alextp > TF does not use cudamalloc to allocate memory but its own allocator whose internal state is stored on the CPU and matches the head of TF's compute stream, so we need to sync TF's stream before the memory is usable from dlpack and similarly sync other cuda streams before memory is made usable by TF tensors (and similarly we need to sync the streams when trying to free the buffers). @@ -102,6 +97,12 @@ As the design of dlpack, the framework constructing tensor from dlpack is respon For `from_dlpack`, a deleter function is registered when constructing the TF tensor, and would be called upon destruction. For `to_dlpack`, the dlpack data structure will hold a reference (by `TensorReference`) to the underlying buffer, and `unref` it in the dlpack's deleter function. +Proposed API implementation details: +- to_dlpack + - Implementing `TFE_HandleToDLPack`, which converts tf's eager tensor handle to dlpack tensor's pointer(`DLManagedTensor*`). And wrap it into PyCapsule to adapt to the Python interface in ffi binding file. For the underlying memory liveness, `TensorReference` is used to maintain the reference counting over the underlying `TensorBuffer`, which increases when creating dlpack tensor, and decreases in the deleter of dlpack tensor. +- from_dlpack + - Implementing `TFE_HandleFromDLPack`, which converts dlpack tensor's pointer(`DLManagedTensor*`) to tf's eager tensor handle. `TFE_TensorHandleDevicePointer` is used to get the data pointer of underlying buffer, and synchronize the related device to ensures the memory readiness. + ## Questions and Discussion Topics From d27dcb7842f349454342cfea9e4cbfa18066cd86 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Wed, 4 Mar 2020 13:40:52 -0500 Subject: [PATCH 220/365] Add discussion topic --- rfcs/20200211-tf-types.md | 1 + 1 file changed, 1 insertion(+) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index 8e8bda6fa..c9f18dbb9 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -161,5 +161,6 @@ It is not fully equivalent with `typing.Optional`, as TensorFlow has no explicit ## Questions and Discussion Topics +* Whether to create entries for well-known types already exported like `tf.Tensor` and `tf.Variable`. Internally, superclasses for these types will be created, but the existing `tf.Tensor` can just point to those to avoid unnecessary duplication. * Single flat vs. hierarchical namespace - for example: `tf.types.distribute.Dataset`, or `tf.types.DistributedDataset`? * The inclusion of more specialized `Graph` types, such as `FuncGraph`, `CondBranchFuncGraph`, `WhileCondFuncGraph`, `WhileBodyFuncGraph`. It’s unclear where these should be defined, however internal submodules needs these subtypes to maintain acyclic dependencies. From 3cb07db07eaf376268201252427f531c9272cf1c Mon Sep 17 00:00:00 2001 From: qlzh727 Date: Wed, 4 Mar 2020 10:42:51 -0800 Subject: [PATCH 221/365] Update the RFC wrt to the design meeting outcome. --- rfcs/20200205-standalone-keras-repository.md | 37 ++++++++++---------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/rfcs/20200205-standalone-keras-repository.md b/rfcs/20200205-standalone-keras-repository.md index c49f94985..84c105437 100644 --- a/rfcs/20200205-standalone-keras-repository.md +++ b/rfcs/20200205-standalone-keras-repository.md @@ -156,24 +156,22 @@ converted to integration tests, or port the tests to Keras repository. * Aliases from tf.losses/metrics/initializers/optimizers in tf.compat.v1. * Keras symbolic tensor check in the ops library for tf.function. -For usage like tf.layers to keras.layers, it can't be removed due to the API -contract and guarantee. We should use LazyLoader to walk around the cyclic -dependency issue. - -```python -from tensorflow.python.util.lazy_loader import LazyLoader - -BaseLayer = LazyLoader( - 'BaseLayer', globals(), 'keras.layers.Layer') -if not BaseLayer: - raise ImportError('Keras is not installed, please pip install keras.') -``` - -Other dependency should be removed as much as possible, eg move the util/code -from Keras to TF, or rework the implementation detail. For any of the -dependencies that have to stay, need to use public Keras API only. A -check will also be added to TF to make sure there isn't any dependencies being -added in future for need of Keras. +The conclusion from the design meetings are: +1. We prefer to have a clear cut, which means any backwards deps from TF to +keras is not accepted. LazyLoading should be used for this case. +2. `feature_column` package will be moved to Tensorflow/Estimator project, +and will still exported under tf.feature_column name space. +3. Legacy `tf.layers` and RNN cell code will move to keras and still export +under same name space. +4. TPU support code will change to use new type spec, which will be proposed by +new RFC from Dan. +5. The saving util will either be moved to TF, or copeid to TF lite. +6. Any unittest in TF that rely on Keras should either be moved to Keras, or +if it is an integration test, we will create a new package for it, which will +do verification e2e. +7. Keras symbolic tensor check in the ops library, we will do some write with +composite tensor. Since this is a implementation details, but not a hard code +level dependency, this shouldn't be a blocking issue. **Note that this is a key point to prevent Keras accidentally break Tensorflow.** @@ -208,6 +206,9 @@ are not public. A decision should be made on a case-by-case basis: * Replace the usage with another alternative TF public API. * Make the functionality a new TF public API. +So far there is a long tail of private API usage, can they shouldn't be blocking +the repo split, as long as the majority of the usage has been addressed. + **Note that the open-source community is encouraged to contribute to this effort.** ### Two-stage change process From 1343f17cd5249e251bf0aa2d02fbfbefc61b7baf Mon Sep 17 00:00:00 2001 From: qlzh727 Date: Wed, 4 Mar 2020 11:08:07 -0800 Subject: [PATCH 222/365] Update the RFC status to 'Accepted' --- rfcs/20200205-standalone-keras-repository.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200205-standalone-keras-repository.md b/rfcs/20200205-standalone-keras-repository.md index 84c105437..46f174ca3 100644 --- a/rfcs/20200205-standalone-keras-repository.md +++ b/rfcs/20200205-standalone-keras-repository.md @@ -1,6 +1,6 @@ # Standalone Keras Repository -| Status | Proposed | +| Status | Accepted | :-------------- |:---------------------------------------------------- | | **RFC #** | [202](https://github.com/tensorflow/community/pull/202) | | **Author(s)** | Qianli Zhu (scottzhu@google.com), Francois Chollet (fchollet@google.com) | From 5bff3e724b4ae7232d86d1b6d71faede81ccbec0 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Wed, 4 Mar 2020 14:27:09 -0500 Subject: [PATCH 223/365] Clarify intent for type checking mechanics --- rfcs/20200211-tf-types.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index c9f18dbb9..72597959d 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -1,11 +1,11 @@ # TensorFlow Canonical Type System -| Status | Proposed | +| Status | WIP | :-------------- |:---------------------------------------------------- | | **RFC #** | [208](https://github.com/tensorflow/community/pull/208) | **Author(s)** | Dan Moldovan (mdan@google.com) | | **Sponsor** | Gaurav Jain (gjn@google.com) | -| **Updated** | 2020-02-19 | +| **Updated** | 2020-03-04 | ## Objective @@ -36,7 +36,7 @@ All the declarations exposed under the `tf.types` namespace reside in the `pytho These definitions may be used as PEP 484 type hints, although in some cases they may be type- or shape- erased (for example, `tf.types.Tensor` may not necessarily be parametrized by `dtype` or `shape`). Note however that designs which parametrize on shape do exist, see for instance [tensorflow#31579](https://github.com/tensorflow/tensorflow/issues/31579). -The type definitions are consistent with `isinstance` and `issubclass`. For example, `isinstance(tf.Tensor, tf.types.Tensor) == True`. +The type definitions are consistent with standard Python [subtyping mechanics](https://docs.python.org/3.8/library/typing.html#nominal-vs-structural-subtyping) such as instance checks or protocols (in versions prior to Python 3.8, it is difficult to simultaneously support both). ### General Principles This module should not contain any implementation code. An advantage of that is that users exploring the implementation of specific types will not need to inspect this module. However, users who do not wish to inspect the code may visit the documentation of these generic types to better understand specifically what are the concrete subclasses of this type expected to do. From 5a853a78a5d164c4f2bf2fec2388c02437623797 Mon Sep 17 00:00:00 2001 From: Even Oldridge Date: Wed, 4 Mar 2020 14:48:45 -0800 Subject: [PATCH 224/365] Update 20191016-dlpack-support.md Removed request for contributions, added thinc.ai framework interoperability. --- rfcs/20191016-dlpack-support.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rfcs/20191016-dlpack-support.md b/rfcs/20191016-dlpack-support.md index 4edf11b4f..76c30297a 100644 --- a/rfcs/20191016-dlpack-support.md +++ b/rfcs/20191016-dlpack-support.md @@ -19,13 +19,14 @@ A solution has already been developed by @VoVAllen and @jermainewang (coauthored DLPack is a community effort to define a common tensor data structure that can be shared by different frameworks allowing data to be quickly shared often with zero or minimal copy. One of the main bottlenecks when trying to achieve GPU performance when operating across different frameworks is I/O and data formatting. The transfer of data between GPU and CPU or between formats is costly to the point where many operations become faster to simply run on the CPU because of the additional costs associated with moving/transforming the data. Even when mechanisms exist to copy data without leaving the GPU, memory constraints limit the application because two copies of the data are required. By implementing dlpack within TensorFlow there would be a way to transfer data directly between frameworks, enabling the development of a range of applications that weren't previously possible. -Existing applications that take advantage of dlpack include: (adding my own and those listed in , other contributions needed) +Existing applications that take advantage of dlpack include: - Inline on-gpu preprocessing of tabular data using cuDF to prepare it for deep learning models (continuous normalization, categorical encoding, etc) improving preprocessing performance by 10x over pandas and CPU - Larger than cpu memory dataloader that iterates over parquet files and batch loads tensors, providing a significant speedup over traditional dataloaders for tabular data - [End to end acceleration of training on GPU](https://medium.com/rapids-ai/accelerating-deep-learning-recommender-systems-by-15x-using-rapids-fastai-and-pytorch-b50b4d8568d1); - Use of Tensorflow in conjunction with [tvm](https://github.com/dmlc/tvm); [TF custom op implementation of TVM](https://github.com/tobegit3hub/tftvm) - Use of Tensorflow in conjunction with [dgl](https://github.com/dmlc/dgl) - Zero copy transfer of data in [DALI](https://github.com/NVIDIA/DALI) reducing memory requirements. + - [thinc.ai](https://thinc.ai/docs/usage-frameworks) framework interoperability. Beyond the benefit of specific applications, Tensorflow's adoption of dlpack would further incentivize other frameworks considering its adoption as all three major DL frameworks would now be supporting it. Finally, it would also make the development of applications that operate upstream and downstream of deep learning frameworks easier to develop as a single framework agnostic method could be used in conjunction all DL frameworks. From 5cd09672ae4046d5b45345bb20e21fa6a22ade7b Mon Sep 17 00:00:00 2001 From: Jinjing Zhou Date: Fri, 6 Mar 2020 02:55:16 +0800 Subject: [PATCH 225/365] Update 20191016-dlpack-support.md --- rfcs/20191016-dlpack-support.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/rfcs/20191016-dlpack-support.md b/rfcs/20191016-dlpack-support.md index 76c30297a..b085a64a3 100644 --- a/rfcs/20191016-dlpack-support.md +++ b/rfcs/20191016-dlpack-support.md @@ -100,14 +100,14 @@ For `to_dlpack`, the dlpack data structure will hold a reference (by `TensorRefe Proposed API implementation details: - to_dlpack - - Implementing `TFE_HandleToDLPack`, which converts tf's eager tensor handle to dlpack tensor's pointer(`DLManagedTensor*`). And wrap it into PyCapsule to adapt to the Python interface in ffi binding file. For the underlying memory liveness, `TensorReference` is used to maintain the reference counting over the underlying `TensorBuffer`, which increases when creating dlpack tensor, and decreases in the deleter of dlpack tensor. + - Implementing `TFE_HandleToDLPack`, which converts tf's eager tensor handle to dlpack tensor's pointer(`DLManagedTensor*`). And wrap it into PyCapsule to adapt to the Python interface in ffi binding file. For the underlying memory liveness, `TensorReference` is used to maintain the reference counting over the underlying `TensorBuffer`, which increases when creating dlpack tensor, and decreases in the deleter of dlpack tensor. - from_dlpack - - Implementing `TFE_HandleFromDLPack`, which converts dlpack tensor's pointer(`DLManagedTensor*`) to tf's eager tensor handle. `TFE_TensorHandleDevicePointer` is used to get the data pointer of underlying buffer, and synchronize the related device to ensures the memory readiness. + - Implementing `TFE_HandleFromDLPack`, which converts dlpack tensor's pointer(`DLManagedTensor*`) to tf's eager tensor handle. `TFE_TensorHandleDevicePointer` is used to get the data pointer of underlying buffer, and synchronize the related device to ensures the memory readiness. ## Questions and Discussion Topics -https://github.com/tensorflow/tensorflow/issues/29039#issuecomment-527520270 Outlines the key issues that need to be addressed, namely that a synch is required to ensure the tensor information is valid. Supporting \_\_cuda_array_interface\_\_ is another option as well, although cuPy and cuDF have opted to support both and ideally Tensorflow would as well. +https://github.com/tensorflow/tensorflow/issues/29039#issuecomment-527520270 outlines the key issues that need to be addressed, namely that a synch is required to ensure the tensor information is valid. Supporting [\_\_cuda_array_interface\_\_](https://github.com/tensorflow/tensorflow/issues/29039) is another option as well, although cuPy and cuDF have opted to support both and ideally Tensorflow would as well. ## Reference From cb1f36d755c9d9da589850a0902b208f9d707a3f Mon Sep 17 00:00:00 2001 From: ematejska Date: Fri, 6 Mar 2020 11:08:30 -0800 Subject: [PATCH 226/365] Add @ematejska to code owners for sig/swift (#212) --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index b80e0c1e4..011df5ac4 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -14,7 +14,7 @@ sigs/io/ @martinwicke @ewilderj @mrry @yongtang @dmitrievanthony sigs/jvm/ @martinwicke @ewilderj @sjamesr @karllessard @tzolov sigs/micro/ @martinwicke @ewilderj @petewarden sigs/mlir/ @ewilderj @pkanwar23 -sigs/swift/ @ewilderj @saeta @dynamicwebpaige +sigs/swift/ @ewilderj @saeta @ematejska sigs/testing/ @ewilderj @dynamicwebpaige # RFCs From 69b72750c8735ca409a9c2c874c6018f4912215a Mon Sep 17 00:00:00 2001 From: Jing Li <42055825+rachellj218@users.noreply.github.com> Date: Fri, 6 Mar 2020 11:13:11 -0800 Subject: [PATCH 227/365] RFC: TensorFlow Official Model Garden Redesign (#130) This should have been merged some time ago. The design is undergoing iteration from this original RFC. Thank you everyone for your conversation and contribution. * Create 20190802-model-garden-redesign.md * Update 20190802-model-garden-redesign.md * Update 20190802-model-garden-redesign.md * Update 20190802-model-garden-redesign.md * Update 20190802-model-garden-redesign.md * Update 20190802-model-garden-redesign.md * Status -> Accepted Co-authored-by: Edd Wilder-James --- rfcs/20190802-model-garden-redesign.md | 186 +++++++++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 rfcs/20190802-model-garden-redesign.md diff --git a/rfcs/20190802-model-garden-redesign.md b/rfcs/20190802-model-garden-redesign.md new file mode 100644 index 000000000..144da10d6 --- /dev/null +++ b/rfcs/20190802-model-garden-redesign.md @@ -0,0 +1,186 @@ +# TensorFlow Official Model Garden Redesign + +| Status | Accepted | +:-------------- |:---------------------------------------------------- | +| **Author(s)** | Jing Li (jingli@google.com), Hongkun Yu (hongkuny@google.com), Xiaodan Song (xiaodansong@google.com) | +| **Sponsor** | Edd Wilder-James (ewj@google.com) | +| **Updated** | 2019-08-02 | + +## Objective + +This document presents a proposal to redesign TensorFlow official model garden. +We aim to provide a central and reliable place to contain popular examples, +state-of-the-art models and tutorials to demonstrate the best practice in TF2.0 +and illustrate real-world use cases. + +## Motivation + +The current [TF official model garden](https://github.com/tensorflow/models/tree/master/official) +mainly has ad hoc support. Example models are implemented using mixed TensorFlow +APIs in different coding styles and some of them have convergence and/or +performance regression. With TensorFlow 2.0 launch, there’s a great desire to +provide tensorflow users a clear and central place to showcase reliable TF2.0 +models with the best practices to follow. + +We want to take this opportunity to substantially improve the state of the +official model garden, and provide seamlessly end-to-end training and inference +user experience on a wide range of accelerators and mobile device chips. We hope +to encourage community to contribute innovations and improve TensorFlow +efficiency and usability. + +## User Benefit + +We aim to provide the best modeling experience via this revamp effort: + +* Usability and reliability + * keep official models well-maintained and tested for both performance and + convergence. + * provide accessible model distribution via [TensorFlow Hub](https://www.tensorflow.org/hub) and share state-of-the-art research accomplishments. + * make training on both GPU and TPU an easy switch. + * provide reusable components for research and production. +* End-to-end solutions + * provide seamless end-to-end training and inference solutions, where inference covers serving on TPU, GPU, mobile and edge devices. + * provide hyper parameter sets to tune models for various resource constraints. + * provide solutions with hyper parameters to scale model training to TPU pods or multi-worker GPUs. + * provide variants derived from standard models to tackle various practical tasks. + +## Design Proposal + +### Official model directory reorgnization + +We are going to reorganize the official model directory to provide: + +* common libraries, mainly two types: + * Common training util library in TF2.0, model configuration and + hyperparameter definition in a consistent style. + * Model category related common library, e.g. primitives as basic building + block for NLP models, or common networks like resnet, mobilenet. We will follow the fundamental design of Keras + layer/network/model to define and utilize model building blocks. + + **NOTE:** we are still figuring out what level of building block extraction would be the most useful and sharable + during refactoring. Once we confirm the implementation is really useful, we will move it tensorflow/addons and/or tf.text. + +* popular state-of-the-art (SOTA) models for end users as a product. +* reference models for performance benchmark testing. + * For models provided as SOTA models, we will share the network and + modeling code, but have separate *main* modules. The main + module for benchmark testing will have addtional flags and setups for + performance testing. + +The following table shows the detailed view of proposed model directory +structure. The SOTA model list will be updated to cover more categories. + +| Directory | Subdirectories | | Explainations | +:-------------- |:---------------------|:--|:------------------------------ | +| nlp | | | models/tasks for Natural Language Processing | +| | modeling | | NLP modeling library | +| | BERT | | | +| | ALBERT | | | +| | XLNET | | | +| | Transformer | | | +| | ... | | | +| vision | | | models/tasks for Computer Vision | +| | image_classification | | e.g. resnet, EfficientNet, ... | +| | detection | | e.g. RetinaNet, Mask-RCNN, ... | +| | ... | | | +| recommendation| | | | +| | NCF | | | +| utils | | | Miscellaneous Utilities. | +| | ... | | | +| benchmarks | | | benchmark testing and reference models to validate tensorflow | +| staging | | | Utilities not in TF core yet, and not suitable for tf addons | +| r1 | | | tf1.x models and utils | +| | utils | | | +| | resnet50 | | | +| | transformer | | | +| | wide_deep | | | +| | boosted_trees | | | + +### Pretrained model repository + +We are going to provide the pretrained models for research exploration and +real-world application development. The plan is to integrate with [TensorFlow Hub](https://www.tensorflow.org/hub), +where users can access the Hub modules and SavedModel for pretrained checkpoints and links to the code in the model +garden. + +### Convergence and Performance Testing + +We have a benchmark testing framework to execute continuous performance and +accuracy tests for TensorFlow on different types of accelerators. All official +TF2.0 models are required to provide accuracy tests and these tests will be +automatically expanded to performance tests for continuous regression testing +and monitoring. + +## Model Garden Sustainability + +### Model Launch Criteria +To ensure that official models are well-maintained and tested, we are going to enforce the following criteria for launching a new model in the official model garden, except for staging folder: + +* Follow the best practice guideline for each model category. +* Unit tests to verify the basics of the model. +* Integrate the model to benchmark testing to ensure model’s accuracy should be on par with the original paper / SOTA results. +* README with commands and procedures to reproduce the SOTA results, including: + * Input data generation if necessary + * Model execution, including all hyperparameters. + +### Community contribution and staging + +Due to fast ML development, we can’t possibly support all best-in-class models +up to date on our own. We highly encourage users to contribute to the official +model garden. After model garden refactoring (Phase 1), we plan to provide +a full list of wanted models to tensorflow community and encourage tensorflow +users to claim and contribute the models to the model garden. + +We have different requirements from unifying interface, supporting all the chips +and platforms and enabling benchmarks for reference models. Thus, we could have +different stages of models. As we may have immediate needs to add some quick +models for benchmark and debugging, we will provide a staging folder to host +some drafts of SOTA or popular models. Once the staging models can converge and +support major functionalities of standard official models, we can judge whether +they meet the launch standard and migrate to official models or migrate them to +benchmark references. + +### Maintenance and Deprecation + +Given the nature of this repository, old models may become less and less +useful to the community as time goes on. In order to keep the repository +sustainable, we will be performing bi-annual reviews of our models to ensure +everything still belongs to the repo. For models to be retired, the current plan +is to move them to the archive directory and these models won't run regression +tests to ensure the quality and convergence. + +The following details the policy for models in mature and staging phases: + +* Models graduated from staging subdirectory + + The models will be maintained by the model garden team. After we start to + accept community contributions, we will put the contributors as model owners. + + These models will have continuous convergence and performance testing to + make sure no regression. In general, we won’t deprecate these models unless: + * the model isn’t compatible with the TF APIs any more and have to be replaced by a new version + * a strictly better model shows up and the old model isn't needed by the community/market. + +* Models in staging: + The model garden team will do quarterly review to check the status with the + model contributors, such as: + * model convergence + * unit tests + * convergence tests + * coding style meets the TF2.0 best practice. + If there’s no further commitment to improve the status in next 90 days, we + will mark the model as deprecated, which is subject to be deleted. + +### Official Model Releases +We will do release for the model garden starting from TF 2.0. Unit tests and +regression tests need to pass against the TF release. Deprecated models will be +removed from the release branch. + +We will also create pip package per release version. + +## Milestones + +| Phases | Milestones | Notes | +|:-------- |:-----------------| :----------------------| +| Phase_1 | 1. Finished directory reorganization. 2. Add common modeling library. 3. Have 2-3 SOTA models for both NLP and Vision. | Not accepting community contributions during refactorization.| +| Phase_2 | Expand repository to cover more model types| Will accept community contributions on the solicited model list.| From c0d4f5d1ccf5cd4c2a4a4c3c4e19179aada1e7c6 Mon Sep 17 00:00:00 2001 From: Yuefeng Zhou Date: Fri, 6 Mar 2020 15:59:34 -0800 Subject: [PATCH 228/365] Initial RFC for single-client parameter server training. --- ...20200306-single-client-parameter-server.md | 517 ++++++++++++++++++ .../rebuild_arbitrary_future.png | Bin 0 -> 14706 bytes 2 files changed, 517 insertions(+) create mode 100644 rfcs/20200306-single-client-parameter-server.md create mode 100644 rfcs/20200306-single-client-parameter-server/rebuild_arbitrary_future.png diff --git a/rfcs/20200306-single-client-parameter-server.md b/rfcs/20200306-single-client-parameter-server.md new file mode 100644 index 000000000..bcad965da --- /dev/null +++ b/rfcs/20200306-single-client-parameter-server.md @@ -0,0 +1,517 @@ +# Single-client Parameter Server Training + +| Status | Proposed | +:-------------- |:---------------------------------------------------- | +| **Author(s)** | Yuefeng Zhou (yuefengz@google.com), Rick Chao (rchao@google.com) | +| **Sponsor** | Priya Gupta (priyag@google.com) | +| **Updated** | 2018-03-06 | + +## Background + +Parameter server training is a very commonly used distributed training architecture. It is especially relevant to models with large embeddings, for training on large clusters of machines with CPUs, or when scalability is preferred over determinism. Its high-level idea is to create variables on parameter servers and in each step let workers take different training input, pull variable values from parameter servers, compute gradients and send them to parameter servers. + + +### Distribution Strategy + +Distribution Strategy (`tf.distribute.Strategy`) is a library that aims to allow users to write simple model code and scale up their models automatically with decent out-of-box performance. We will design parameter server training under the umbrella of `tf.distribute.Strategy` in TensorFlow 2 with a single-client architecture, in contrast to the multi-client approach which is traditionally done in TensorFlow distributed training such as `tf.estimator.Estimator` or `tf.distribute.experimental.MultiWorkerMirroredStrategy`. + +Distribution Strategy’s [custom training loop](https://www.tensorflow.org/tutorials/distribute/custom_training) (CTL) API has been popular among users who want more control in writing their training loops. User community of this API is large. We would like to focus on supporting CTL API first and later abstract out a commonly used pattern for Keras `compile`/`fit` API. + + +### Single-Client Distributed Training + +We believe that a single-client architecture can provide a simpler programming model than multi-client setup. A single source of truth can avoid bugs due to inconsistencies in multi-client setup. Furthermore, a single source of control can enable more determinism. In extreme cases, it can launch long-running tasks and turn into multi-client effectively. + + +## Goal + +The goal of this project is to support multi-worker asynchronous training with `ParameterServerStrategy` and CTL API, and in the long term also Keras `model.fit()`. In the first stage of this project, we focus more on design ideas rather than the APIs. + +The goal of this document is to discuss the high-level design and challenges of various pieces needed to support single-client parameter server training. Detailed designs for some pieces may be directed to other documents. + + +## Overview + + +### Programming Model + +With a single-client architecture, the programming model will be different than the multi-client architecture. All workers and parameter servers are standard TensorFlow servers, and the user-defined program will run on the client only. Generally, no matter what high-level APIs users will use, the workflow for running a step function distributedly with single-client approach includes the following steps: + + +1. Connect to all remote workers and parameter servers. +2. Create variables on parameter servers and hold references to them. +3. Create datasets and iterators on workers.. +4. Create the replica function that takes an iterator as input, trace it and register it on all workers. Note: a function may create variables as well. If not specified, they will be created on parameter servers as well. +5. Dispatch the step function on one available worker. +6. Repeat 5 until the end of epoch. +7. Repeat 5 - 6 until the stop criteria is reached. + + +### Interfaces + +One of our goals is to make `ParameterServerStrategy`’s API consistent with other strategies so that users can easily switch between them. This may be challenging due to the fundamental difference between synchronous and asynchronous training. Therefore, we try to use most of the Distribution Strategy’ APIs but occasionally we will create APIs that still make sense in other strategies as well. + +**Note: all proposed APIs in this document are tentative and only valid for our first version. We will revisit them once we get enough feedback from users and the community.** + + +#### Constraints + +Function is first-class citizen. Users should only schedule functions instead of running individual ops, in addition to creating variables. + +Users can occasionally run individual ops on the client, only for reporting purposes such as printing a metric’s value. + + +#### Schedule/Join Primitives + +The `strategy.run` API was initially developed for synchronous training. We propose a new pair of primitives to + + +* hide the details of load-balancing, fault tolerance and dynamic scheduling +* expose the non-blocking semantics to users. + +To enable scheduling a function on any worker, we recommend users create the same dataset, but may shuffled differently, on all workers via `strategy.experimental_distribute_datasets_from_function` API. + + +```python +class ParameterServerStrategyV2: + + def schedule(self, replica_fn, args=(), kwargs=()): + """Schedule the `replica_fn` on all replicas in a sync group (a worker). + + Schedule the `replica_fn` on all replicas in a sync group that is available, + returns a future of PerReplica immediately if `function` has return values. + + It implements at-least-once semantics for function execution. If a worker + fails, it will try to reschedule the function on another replica group or throw + an exception to users. So this method assumes that function execution can be + out of order and function inputs are shared between sync groups. + + We don't support the cases where `args` or `kwargs` are bound to a specific + sync group. We will consider supporting them in the future. + + If there are barriers in `replica_fn`, it is users' responsibility to make + sure they won't cause deadlock. + """ + pass + + def join(self): + """Wait until all scheduled functions are finished. + + Raises an error if any of the functions fails to execute. In this case, + there is no guarantee that non-failing functions will complete. + + When join() is being called, it is not allowed to call `schedule`. + """ + pass + + def done(self): + """Returns True if there is no pending functions to be executed.""" + pass + + def local_results(self, future_list): + """Get concrete values of the future list. + + Poisoned future objects will give `None`. + """ + pass +``` + + +#### Custom Training Loop + +To construct a custom training loop, users need to + + +* use `strategy.experimental_distribute_datasets_from_function` to create one dataset per worker. At this point, we recommend against using `strategy.experimental_distribute_dataset`. +* create models under `strategy.scope` so variables will be assigned to parameter servers. +* likewise, create a Keras metric object under `strategy.scope`. We expect the metric variables to be stored on parameter servers. Each worker, within their `replica_fn`, updates the metric states. +* use `strategy.schedule` to schedule the `replica_fn` on one remote worker. This `replica_fn` should take an iterator and perform forward and backward computation. This `strategy.schedule` will only schedule this `replica_fn` and returns one or several `Future` objects immediately. +* use `strategy.local_results` to get concrete values of results returned by `strategy.schedule`. This may be a blocking call if the result is not yet ready. With any failure that cannot be handled will be ignored and as a result some of the results may be `None`. +* call `strategy.join` to wait until all scheduled functions are executed. + +```python +# Connect to remote servers with a user-provided `ClusterResolver` object. +strategy = ParameterServerStrategyV2(cluster_resolver) + +dataset_fn = # a function that returns a dataset + +# Clone the dataset on all workers, shuffled with different seeds. +distributed_dataset = strategy.experimental_distribute_datasets_from_function( + dataset_fn) + +with strategy.scope(): + # Create variables on parameter servers in a round-robin fashion. + model = create_model() + optimizer = tf.keras.optimizers.Adam() + accuracy = tf.keras.metrics.CategoricalAccuracy(name="train_accuracy") + + @tf.function + def replica_fn(iterator): + x, y = next(iterator) + with tf.GradientTape() as tape: + predictions = model(x, table, training=True) + loss = compute_loss(y, predictions) + gradients = tape.gradient(loss, model.trainable_variables) + optimizer.apply_gradients(zip(gradients, model.trainable_variables)) + accuracy.update_state(y, predictions) + return loss + + for _ in range(num_epoches): + distributed_iter = iter(distributed_dataset) + for i in range(steps_per_epoch): + # strategy.schedule pushes a closure in the scheduling queue and + # returns a list of future objects immediately. + loss = strategy.schedule(replica_fn, + args=(distributed_iter,)) + strategy.join() + model.save() # save checkpoint/summary... + print ("Loss = %f, accuracy = %f" % ( + strategy.local_results(loss), accuracy.result())) +``` + + +##### Alternative training loop: fully async + +Another option from calling `join` every epoch, users can choose to schedule all steps and then asynchronously print metric values. This option doesn’t require any synchronization in epoch boundaries. + + +```python +# … omitted +with strategy.scope(): + # … omitted + for _ in range(total_steps)): + strategy.schedule(step_fn, args=(iterators,)) + + # Print accuracy value every one minute. + while not strategy.done(): + print("Current accuracy: %f" % accuracy.result()) + time.sleep(60) +# … omitted +``` + +#### Error Reporting From `replica_fn` + +Because of the non-blocking `schedule`, any exception raised in `replica_fn` wouldn’t be returned to users immediately. Actually an exception may pollute arbitrary number of functions in flight following the culprit function. We will set the error in returned `Future` objects for the culprit function and these polluted functions and we will raise exceptions when `join` is called. + +Therefore the best practice for users is to avoid writing any code that may raise in `replica_fn`: + +* use repeated dataset so `OutOfRangeError` will be avoided; +* avoid using assertion ops or some debugging ops like `tf.debugging.check_numerics`. + + +#### Dataset Interface + +The traditional training loop of `tf.distribute` passes the `get_next` results of a distributed iterator to `replica_fn`: + + +```python +for x in enumerate(distributed_iter): + loss = strategy.schedule(replica_fn, x, y) +``` + + +If we do the same thing with the `strategy.schedule` API, there are several challenges. + +The first challenge is we don’t know which worker the `get_next` should return to since where the `replica_fn` will be executed will be decided later. Some later-binding mechanism can be explored. + +The second challenge is calling `get_next` on an iterator is synchronous. This means that the training loop is not truly asynchronous. It is tricky to make `get_next` asynchronous because the client doesn’t know how many items will be in the iterator and thus doesn’t know how many functions to schedule. + + +##### Alternative: passing iterators to `strategy.schedule` + +The following training loop is less consistent with other `tf.distribute` examples but is easier to implement in the short term. It requires users to explicitly set a number of steps. + + +```python +# … omitted +with strategy.scope(): + # … omitted + distributed_iter = iter(distributed_dataset) + for i in range(total_steps): + strategy.schedule(replica_fn, args=(distributed_iter,)) +# … omitted +``` + + +**We will start with this kind of training loop in our first version.** + + +### Fault Tolerance + + +#### Task Failure + + +##### Worker failure + + +###### When scheduling + +When a worker fails, our training will continue without this failed worker. Functions scheduled on a failed worker will be rescheduled on other workers. + +For functions that bound to a specific worker, e.g. resource creation function, they will be queued until the worker is back. + +When the failed worker is back, we will update the cluster configuration with `context.update_server_def` which would also reset all the states. After resources on the restarted worker are built, we can resume scheduling functions on the worker. + + +###### When materialing a `Future` object + +It is possible that a function is executed but its corresponding worker fails when users try to consume its output. In this case, we will give users a `None` value and set an error in the `Future` object. + +We can mitigate the problem by eagerly materializing function outputs when they are passed to `local_results`. + +We can explore mechanisms to recover these objects in the future. In the short-term, users can choose to write the results to variables on parameter servers, just like a Keras metric. + + +##### Parameter server failure + +When a parameter server fails, the error will be propagated to the client via workers. Since the latest values of variables on the failed parameter servers are gone, there is no way for the client to recover them. Therefore the training will pause until the failed parameter server is back. The client then needs to clean up other variables on other parameter servers, rebuild all the variables and load variable values from a checkpoint. To trigger this process, the simplest method is to restart the client as well. + + +##### Client failure + +When a client fails, some scheduled functions will continue to run on workers. No new functions will be scheduled. When the client comes back, it will create variables, load from a checkpoint, schedule functions with a new context id. All the old variables will be garbage-collected when we reset their eager contexts. + +#### Resource Management for Workers + +When a worker has recovered from failure, we will need to rebuild iterators, worker-local variables, lookup tables and other resources on that worker that don’t need to be read from a checkpoint. This means that the client will have to keep track of these iterators, worker-local variables and other resources. + +Keeping track of resources and rebuilding them will be achieved depending how users create their resources: + + +* we will record iterators created via `tf.distribute`’s API; The state of a rebuilt iterator will be lost. We can recover their states as future work. +* we will capture the creation of worker-local variables via variable creator scopes. +* in the future we will provide users an API to create worker-local resources. We will capture these resources in the API. + +If users create iterators or other resources inside a function but don’t expose them as outputs, we will not rebuild them. + + +#### The Unknown of Scheduled Functions + +For functions that have been scheduled, it is difficult for the client to know whether they have actually been executed or not when the client detects their corresponding worker failure. Therefore, in addition to inform users of this uncertainty in the case of worker failure, we should do the following to reduce this uncertainty: + + +* keep the number of scheduled but not executed functions small. This may be difficult to achieve since there is not an easy way for the client to know whether a function is executed or not. The only way is to synchronize the executor. Therefore, as a workaround we will have to periodically synchronize the executor to make sure functions are actually executed, before the client schedules more functions. In the long run, we should get acknowledgement from runtime about how many functions have been executed. +* eagerly fetch the outputs of remote functions once the outputs are passed to `strategy.local_result`. In this way, we can know the status of function execution earlier. +* recommend users schedule only small functions. Large functions are more expensive to retry. + + +### Evaluation + +Historically, `tf.estimator.Estimator` uses a dedicated evaluator that periodically loads from a checkpoint, and performs evaluation with evaluation data. However `tf.keras` typically evaluates in an alternating manner after every epoch of training, and this is also the case with `tf.keras` + `MultiWorkerMirroredStrategy`. + +With `ParameterServerStrategyV2`, we will start with a dedicated** evaluator that runs alongside the training cluster**, **aka “sidecar evaluation”**; in this scheme, training client is required to generate checkpoints periodically, and the evaluator reads the latest checkpoint as it becomes available. The evaluation is asynchronous to the training progress. With this we provide the functionality Estimator has been able to with Keras API, which is important to attract updates from Estimator users to TF 2.0. + +With our recommendation, users should create a separate evaluation client that runs the same python binary as the training client. This python binary will contain the if-else clause as it bifurcates into two paths: + + +```python +if cluster_resolver.task_type == "chief": + run_training_loop() +elif cluster_resolver.task_type == "evaluator": + run_evaluation_loop() +``` + + +Evaluation code: + + +```python +def run_evaluation_loop(...): + """Run the example custom evaluation loop.""" + + eval_dataset, model, eval_accuracy = ... + checkpoint = tf.train.Checkpoint(model=model) + + @tf.function + def eval_fn(eval_dataset): + for _ in range(eval_steps): + # evaluation pass + return eval_accuracy.result() + + while True: + latest_checkpoint = get_new_checkpoint() + checkpoint.restore(latest_checkpoint) + eval_result = eval_fn(iterator) # Users can print, early stop, mark ckpt.. +``` + + +In the evaluation client, the user loads the checkpoints that were periodically saved into the model (by the training client), does evaluation over a full pass of eval dataset, and does whatever they want to do with eval results. Examples include exporting them to files which can be read by the training client for actions (such as reducing learning rate, early stopping, etc.) + + +## Implementation + + +### Low-level Primitives + +We can potentially expose them in the future when they are more stable and when we want to allow more advanced use cases. + +We will have `Cluster` and `Worker` classes to encapsulate logic related to remote function scheduling. + + +```python +class Cluster(object): + + def __init__(self, cluster_resolver, failure_handler=None): + """Create the cluster instance and connect to the remote cluster.""" + pass + + @property + def workers(self): + """Return all available workers.""" + return self._workers + + def schedule(self, function, args=None, kwargs=None): + """Schedule the function on one worker. + + It adds the function to the global scheduling queue and returns future + objects immediately. + """ + pass + + def join(self): + """Block until all scheduled functions are complete.""" + pass +``` + + +We will probably merge this `Worker` with executors. + + +```python +class Worker(object): + + def __init__(self, + worker_job_name, + cluster, + max_scheduled_functions=100): + """Create a scheduling queue and a thread that processes the queue.""" + pass + + def schedule(self, function, args=None, kwargs=None): + """Schedule the function on the worker. + + It adds the function to the scheduling queue. It returns Future object + immediately unless the scheduling queue is full. + """ + pass + + def healthy(self): + """Return a boolean indicating whether the worker is health or not.""" + pass + + def _set_dead(self): + """Declare the worker is dead and poison all future objects.""" + pass + + def _rebuild_resources(self): + """Rebuild worker-local resources when it is recovered from failure.""" + pass +``` + + +As we mentioned the return value of `schedule` will be `Future` objects if `function` has return values. The `Future` works as a container and will be later-binded with states of either success or complete failure. Overall, this `Future` class has the following benefits: + + + +* It allows `schedule` method return immediately after pushing functions to its scheduling queue. It allows these methods to return without needing to wait for acknowledgement from workers. +* It serves as the container for values or errors. It would be binded with a value or an error later. When it is rebuilt, we can replace its underlying value silently. +* When being passed to `local_result`, we flag it to indicate that this value needs to be fetched eagerly. +* (Future work) It captures the lineage between functions and return values so that we can rebuild any poisoned objects. + +```python +class Future(object): + + def __init__(self, closure): + pass + + def _set_value(self, value): + pass + + def _set_error(self, error): + pass + + def _set_eagerly_fetch(self): + pass + + def _fetch(self): + pass +``` + + + +We can potentially merge this `Future` class with our `Tensor` class. + + +## Future Work + +The following are features we have been considering to support in the future although this is not an exhaustive list. We don’t promise to support all of them. We’ll prioritize according to the feedback from the community and users. + + +### Dynamic Membership + +Workers can come and go. To support this, we’ll probably need a mechanism to discover and remove workers and make our implementation of `tf.distribute` reactive. + + +### Integration with tf.data Service + +In our design, we assume that `replica_fn` can be scheduled on any worker with some constraints. For example, datasets can not be sharded across workers; rebuilding iterators will lose their states. With the help of `tf.data` service, we can get rid of these constraints. + + +### Advanced Evaluations + + +#### Inline evaluation + +The client drives the same worker pool for evaluation. We can alternative training and evaluation. + + +#### Sidecar evaluation cluster + +We can have a sidecar evaluation cluster as well. They can either do evaluation synchronously on a common dataset or each does its own evaluation. + + +### Keras Integration + +Integrating with Keras `model.fit()` will largely be reusing previous work done when synchronous distribution strategies were integrated with Keras. We hope from the end-user’s perspective, they will notice minimal changes when they switch from other strategies. + +Most important implication of integrating with Keras `model.fit()` is that we will need support for `strategy.join()` and/or `strategy.local_results()` for callbacks. This would have performance implications but that would be the trade off for fitting the synchronous `model.fit()` semantics. + + +### Versioning + +The client and standard server binaries may be in different versions. There is no backward or forward compatibility guarantee. For now, we recommend users run the same binary which will run standard TensorFlow servers if it is not the client. + + +### Advanced Fault Tolerance + + +#### Reschedule Functions with Input Affinity + +Our proposed `schedule` method supports at-least-once semantics only when functions don't have input affinity. Functions that depend on inputs that only exist on one worker can not be rescheduled. We can think of ways to rebuild these inputs to achieve at-least-once in more cases. + +With input-affinity, there may be futures that are bound to a worker and the worker can die and don’t come up within a reasonable timeout. We should poison these futures in this case. + + +#### Rebuild Arbitrary Resources and Future Objects + +Any poisoned future can be rebuilt according to the lineage relationship between functions and futures. For example, in the following diagram, to rebuild `future3`, we can rerun function `A` and function `B`, likely on a different worker if the original worker is dead. + + +![Rebuild Arbitrary Futures](20200306-single-client-parameter-server/rebuild_arbitrary_future.png) + + +### Multi-GPU Support + +We can expand the `replica_fn` into a multi-GPU function before we schedule it. + + +### Wrap `schedule`/`join` into a `tf.function` + +It is possible to implement ops for `schedule` and `join` and make the training loop wrappable by a `tf.function`. + +When a `Cluster` object is created, we use an op to create a scheduling queue and launch a background thread in runtime to periodically check the scheduling queue and schedule items on one available worker. + +The `schedule` op could just push a closure into the scheduling queue. Note any control dependency added between `schedule` ops won’t make the execution deterministic. + +The `join` op could wait until the scheduling queue is empty. diff --git a/rfcs/20200306-single-client-parameter-server/rebuild_arbitrary_future.png b/rfcs/20200306-single-client-parameter-server/rebuild_arbitrary_future.png new file mode 100644 index 0000000000000000000000000000000000000000..7a89161d309f6e85bb94cbcb66e84b8463ab9143 GIT binary patch literal 14706 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 PnQvS(|E Date: Fri, 6 Mar 2020 16:06:08 -0800 Subject: [PATCH 229/365] Remove rebuild_arbitrary_future.png --- .../rebuild_arbitrary_future.png | Bin 14706 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 rfcs/20200306-single-client-parameter-server/rebuild_arbitrary_future.png diff --git a/rfcs/20200306-single-client-parameter-server/rebuild_arbitrary_future.png b/rfcs/20200306-single-client-parameter-server/rebuild_arbitrary_future.png deleted file mode 100644 index 7a89161d309f6e85bb94cbcb66e84b8463ab9143..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14706 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 PnQvS(|E Date: Fri, 6 Mar 2020 16:08:57 -0800 Subject: [PATCH 230/365] Use a smaller png. --- .../rebuild_arbitrary_future.png | Bin 0 -> 18465 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 rfcs/20200306-single-client-parameter-server/rebuild_arbitrary_future.png diff --git a/rfcs/20200306-single-client-parameter-server/rebuild_arbitrary_future.png b/rfcs/20200306-single-client-parameter-server/rebuild_arbitrary_future.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac18991e93ab9d573b0d57fc95d8710863c602c GIT binary patch literal 18465 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 literal 0 HcmV?d00001 From 6d3fc138549f60403310eefa4e7c4846f0f7c6fa Mon Sep 17 00:00:00 2001 From: Yuefeng Zhou Date: Fri, 6 Mar 2020 16:18:08 -0800 Subject: [PATCH 231/365] Fix small typos. --- rfcs/20200306-single-client-parameter-server.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200306-single-client-parameter-server.md b/rfcs/20200306-single-client-parameter-server.md index bcad965da..1aeb4d16f 100644 --- a/rfcs/20200306-single-client-parameter-server.md +++ b/rfcs/20200306-single-client-parameter-server.md @@ -69,7 +69,7 @@ The `strategy.run` API was initially developed for synchronous training. We prop * hide the details of load-balancing, fault tolerance and dynamic scheduling * expose the non-blocking semantics to users. -To enable scheduling a function on any worker, we recommend users create the same dataset, but may shuffled differently, on all workers via `strategy.experimental_distribute_datasets_from_function` API. +To enable scheduling a function on any worker, we recommend users create the same dataset, but may shuffle differently, on all workers via `strategy.experimental_distribute_datasets_from_function` API. ```python From 55c142a14589678bc8df5811d0e70130badd2f70 Mon Sep 17 00:00:00 2001 From: Rick Chao <6505863+rchao@users.noreply.github.com> Date: Fri, 6 Mar 2020 17:19:36 -0800 Subject: [PATCH 232/365] Fix extra period. Fix extra period. --- rfcs/20200306-single-client-parameter-server.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200306-single-client-parameter-server.md b/rfcs/20200306-single-client-parameter-server.md index 1aeb4d16f..e825b56b1 100644 --- a/rfcs/20200306-single-client-parameter-server.md +++ b/rfcs/20200306-single-client-parameter-server.md @@ -40,7 +40,7 @@ With a single-client architecture, the programming model will be different than 1. Connect to all remote workers and parameter servers. 2. Create variables on parameter servers and hold references to them. -3. Create datasets and iterators on workers.. +3. Create datasets and iterators on workers. 4. Create the replica function that takes an iterator as input, trace it and register it on all workers. Note: a function may create variables as well. If not specified, they will be created on parameter servers as well. 5. Dispatch the step function on one available worker. 6. Repeat 5 until the end of epoch. From f692cc0b6f9588215cd409db89a21337f394e1a1 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Sat, 7 Mar 2020 17:54:34 -0500 Subject: [PATCH 233/365] Add section on protocol for custom Tensors --- rfcs/20200211-tf-types.md | 61 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index 72597959d..40796cec4 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -51,6 +51,67 @@ It is recommended that internal and external type annotations, `isinstance` and Class type definitions define a minimum of abstract methods and properties which are required for pytype compatibility. +### Custom `Tensor` types and `tf.register_tensor_conversion_function` + +Custom objects can be used in standard TF operations using [tf.register_tensor_conversion_function](https://www.tensorflow.org/api_docs/python/tf/register_tensor_conversion_function). This dependency injection mechanism allows implicit casting from existing types such as list and tuple without modifying the type definition of these objects. + +``` +>>> class MyClass: +... pass +>>> def conversion_func(value, dtype=None, name=None, as_ref=False): +... return tf.constant(1) +>>> tf.register_tensor_conversion_function(MyClass, conversion_func) +>>> obj = MyClass() +>>> tf.add(obj, tf.constant(1)) + +``` + +However, `register_tensor_conversion_function` is not compatible with static type checking. + +As a side note, types which that can be converted to a [NumPy array](https://docs.scipy.org/doc/numpy/user/basics.dispatch.html#basics-dispatch) can leverage that mechanism instead, because TensorFlow supports implicit conversion from `ndarray`: + +``` +>>> class MyClass: +... def __array__(self): +... return np.array(1) +>>> obj = MyClass() +>>> tf.add(obj, tf.constant(1)) + +``` + +For true custom `Tensor` objects, we propose a protocol approach similar to NumPy’s: + +``` +>>> class MyClass: +... def __tf_tensor__(self): +... return tf.constant(1) +>>> obj = MyClass() +>>> tf.add(obj, tf.constant(1)) + +``` + +Note that the mechanism above can be made compatible with static type checks using [typing.Protocol](https://www.python.org/dev/peps/pep-0544/#defining-a-protocol): + +``` +>>> class SupportsTensor(Protocol): +... def __tf_tensor__(self): +... pass +>>> def f(x: SupportsTensor): +... pass +>>> obj = MyClass() +>>> f(obj) # passes static type checks +``` + +Ultimately, `TensorLike` is to become a union of the protocol type along with any other types supported through legacy mechanisms: + +``` +TensorLike = Union[List, Tuple, tf.Tensor, SupportsTensor, ...] +``` + +The `Protocol` type is only standardized in Python 3.8. Backports exist through [typing_extensions](https://github.com/python/typing/tree/master/typing_extensions), although they still don’t support Python 3.5. Therefore, typing annotations will only be supported in 3.6+, and complete support is only available in 3.8+. + +Note that `Protocol` subtypes require [@runtime_checkable](https://www.python.org/dev/peps/pep-0544/#runtime-checkable-decorator-and-narrowing-types-by-isinstance) in order to be compatible with `isinstance`. However, that degrades the performance of `isinstance` in a way similar to `abc.ABCMeta`. For that reason, TensorFlow internal logic is encouraged to use the the more direct `hasattr` test for structural type checks of this kind. + ### Support for `tf.function`'s `input_signature` The type system listed here can be expanded to allow input signatures using type annotations, see for instance [this thread](https://github.com/tensorflow/tensorflow/issues/31579). From 1b20c1f342b6ce1499879b3833a40880e0f848ac Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Sat, 7 Mar 2020 18:16:34 -0500 Subject: [PATCH 234/365] Add open question about legacy API --- rfcs/20200211-tf-types.md | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index 40796cec4..a316fac2c 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -62,8 +62,8 @@ Custom objects can be used in standard TF operations using [tf.register_tensor_c ... return tf.constant(1) >>> tf.register_tensor_conversion_function(MyClass, conversion_func) >>> obj = MyClass() ->>> tf.add(obj, tf.constant(1)) - +>>> tf.convert_to_tensor(obj) + ``` However, `register_tensor_conversion_function` is not compatible with static type checking. @@ -75,19 +75,19 @@ As a side note, types which that can be converted to a [NumPy array](https://doc ... def __array__(self): ... return np.array(1) >>> obj = MyClass() ->>> tf.add(obj, tf.constant(1)) - +>>> tf.convert_to_tensor(obj) + ``` -For true custom `Tensor` objects, we propose a protocol approach similar to NumPy’s: +For true custom `Tensor` objects, we propose a protocol approach similar to NumPy’s, as alternative to `register_tensor_conversion_function`: ``` >>> class MyClass: ... def __tf_tensor__(self): ... return tf.constant(1) >>> obj = MyClass() ->>> tf.add(obj, tf.constant(1)) - +>>> tf.convert_to_tensor(obj) + ``` Note that the mechanism above can be made compatible with static type checks using [typing.Protocol](https://www.python.org/dev/peps/pep-0544/#defining-a-protocol): @@ -112,6 +112,8 @@ The `Protocol` type is only standardized in Python 3.8. Backports exist through Note that `Protocol` subtypes require [@runtime_checkable](https://www.python.org/dev/peps/pep-0544/#runtime-checkable-decorator-and-narrowing-types-by-isinstance) in order to be compatible with `isinstance`. However, that degrades the performance of `isinstance` in a way similar to `abc.ABCMeta`. For that reason, TensorFlow internal logic is encouraged to use the the more direct `hasattr` test for structural type checks of this kind. +Although this RFC proposes the deprecation of `register_tensor_conversion_function`, it does not set a timeline for removing it. It remains an open question whether interim support for type annotations should be added to `register_tensor_conversion_function`. + ### Support for `tf.function`'s `input_signature` The type system listed here can be expanded to allow input signatures using type annotations, see for instance [this thread](https://github.com/tensorflow/tensorflow/issues/31579). @@ -225,3 +227,4 @@ It is not fully equivalent with `typing.Optional`, as TensorFlow has no explicit * Whether to create entries for well-known types already exported like `tf.Tensor` and `tf.Variable`. Internally, superclasses for these types will be created, but the existing `tf.Tensor` can just point to those to avoid unnecessary duplication. * Single flat vs. hierarchical namespace - for example: `tf.types.distribute.Dataset`, or `tf.types.DistributedDataset`? * The inclusion of more specialized `Graph` types, such as `FuncGraph`, `CondBranchFuncGraph`, `WhileCondFuncGraph`, `WhileBodyFuncGraph`. It’s unclear where these should be defined, however internal submodules needs these subtypes to maintain acyclic dependencies. +* `register_tensor_conversion_function` - should it support static type verifications (e.g. using the [ABCMeta.register](https://docs.python.org/3/library/abc.html#abc.ABCMeta.register) mechanism)? From 451b627ea41b1034507a4e565eda39135ce7088d Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Tue, 10 Mar 2020 16:53:58 -0400 Subject: [PATCH 235/365] Add discussion topic for tf.TypeSpec --- rfcs/20200211-tf-types.md | 1 + 1 file changed, 1 insertion(+) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index a316fac2c..a9c58297e 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -228,3 +228,4 @@ It is not fully equivalent with `typing.Optional`, as TensorFlow has no explicit * Single flat vs. hierarchical namespace - for example: `tf.types.distribute.Dataset`, or `tf.types.DistributedDataset`? * The inclusion of more specialized `Graph` types, such as `FuncGraph`, `CondBranchFuncGraph`, `WhileCondFuncGraph`, `WhileBodyFuncGraph`. It’s unclear where these should be defined, however internal submodules needs these subtypes to maintain acyclic dependencies. * `register_tensor_conversion_function` - should it support static type verifications (e.g. using the [ABCMeta.register](https://docs.python.org/3/library/abc.html#abc.ABCMeta.register) mechanism)? +* Unification with `tf.TypeSpec` - although largely orthogonal at the moment, the distinction is subtle and confusing even for experts, which perhaps indicates we should unify them. From 6e75f040b91712720c5cc8184fa6ca671e45cae3 Mon Sep 17 00:00:00 2001 From: Yuefeng Zhou Date: Thu, 12 Mar 2020 00:53:07 -0700 Subject: [PATCH 236/365] Add one more paragraph for single client --- rfcs/20200306-single-client-parameter-server.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rfcs/20200306-single-client-parameter-server.md b/rfcs/20200306-single-client-parameter-server.md index e825b56b1..fb16554f7 100644 --- a/rfcs/20200306-single-client-parameter-server.md +++ b/rfcs/20200306-single-client-parameter-server.md @@ -20,9 +20,12 @@ Distribution Strategy’s [custom training loop](https://www.tensorflow.org/tuto ### Single-Client Distributed Training +We recommend a single client architecture for parameter server training in TensorFlow 2. This means there is only one client in a training cluster that coordinates the training of all workers in contrast to the multi-client setup in TensorFlow 1.x where each worker has its own coordinator. + We believe that a single-client architecture can provide a simpler programming model than multi-client setup. A single source of truth can avoid bugs due to inconsistencies in multi-client setup. Furthermore, a single source of control can enable more determinism. In extreme cases, it can launch long-running tasks and turn into multi-client effectively. + ## Goal The goal of this project is to support multi-worker asynchronous training with `ParameterServerStrategy` and CTL API, and in the long term also Keras `model.fit()`. In the first stage of this project, we focus more on design ideas rather than the APIs. From 651c0cb7ea31642749409504f43416ac14357df1 Mon Sep 17 00:00:00 2001 From: Alex Passos Date: Fri, 17 Aug 2018 10:38:45 -0700 Subject: [PATCH 237/365] changes --- rfcs/variables-20.md | 140 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 rfcs/variables-20.md diff --git a/rfcs/variables-20.md b/rfcs/variables-20.md new file mode 100644 index 000000000..b5243705e --- /dev/null +++ b/rfcs/variables-20.md @@ -0,0 +1,140 @@ +# Variables in TensorFlow 2.0 + +| Status | Proposed | +:-------------- |:---------------------------------------------------- | +| **Author(s)** | apassos@google.com | +| **Sponsor** | wicke@google.com, joshl@google.com, ashankar@google.com | +| **Updated** | 2018-08-17 | + + +## Objective + +The API for TensorFlow variables has many drawbacks: impossible-to-reason-about semantics, reliance on global scopes, and reliance on global collections. As the TensorFlow API moves to become more pythonic and object oriented, with the Keras layers and models and the object-based serialization, we no longer have a need for much of this global infrastructure around variables. + + +## Main changes + +The API for Variables will then change in the following ways for TF 2.0: + + + +* tf.Variable will become an abstract base class with a well-defined interface and a scoped factory to construct instances + * users will be able to implement their own variable-like objects by subclassing tf.Variable and adding a scoped factory function to use those variables +* variable_scope and get_variable will be removed + * the tf 1.0 version of variable_scope and get_variable will be left in tf.compat.v1 + * to control variable naming users can use tf.name_scope + tf.Variable + * whether a variable is shared across sessions / processes will be controlled by a constructor argument to tf.Variable; no other type of scope reuse will be done in the framework + * scoped partitioning will be implemented as a factory function at first + * libraries and users are encouraged to reuse variables by reusing their objects, like Keras layers do + * custom_getters will have the following API: [variable_creator_scope](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/variable_scope.py#L2395) +* the default implementation of the tf.Variable interface will be ResourceVariable + * RefVariable will be kept in tf.compat.v1 and will be the default implementation for tf.compat.v1.Variable + * tf.compat.v1.Variable will have a use_resource argument to control whether a resource variable or a ref variable will be created +* symbols like tf.assign* will be removed in favor of methods in tf.Variable + * in tf.compat.v1 these symbols will be marked as deprecated and will call the corresponding methods in the Variable object instead + + +## Detailed changes + + +### tf.Variable class + +The tf.Variable class will be an abstract base class which defines a tf.Variable interface. Initially this interface will have enough abstract methods such that the user-visible API of tf.Variable does not change. + +There will be two main implementations of this interface: RefVariable, with the legacy ref edges, available only in tf.compat.v1, and ResourceVariable, which is the default for the v2 API. PartitionedVariable, MirroredVariable, _UnreadVariable, CastVariable, etc, are other implementations which are part of the core library. None of these implementations will be publicly visible, only tf.Variable will be. + +Constructing variables is done by calling tf.Variable(*args, **kwargs). Under the hood this will call a hierarchy of scoped constructor functions, similar to what is now done in variable_scope.variable. Each such constructor function can do some combination of: + + + +* calling a base constructor to actually create a variable +* returning preexisting variables +* changing some arguments to the base constructor, and maybe calling it multiple times + +This is implemented by having a custom metaclass for tf.Variable which, when asked to construct a tf.Variable directly will call the factory functions, but when asked to construct subclasses of tf.Variable will do nothing and construct the child class. + +The tf.Variable interface will make no reference to graph collections, and tf.Variable will not add the Variable to any collections by default. tf.compat.v1.Variable, on the other hand, will have the collections argument and respect the existing semantics for it. Things which currently rely on collections (saving / loading, Optimizer.minimize, etc) will instead be expected to be passed either a list of variables or a CheckpointableBase-inheriting object. + + +### Variable sharing + +Sharing within a model will not be a part of the public API for tf.Variable. Users are strongly encouraged to share variables by sharing a reference to their objects. + +That said, the tf.compat.v1.variable_scope library can be made self-contained if we replace the per-graph variable scope stack with a module-global weak key dictionary from graphs to scope objects, and we call the protected methods to access graph collections. This will remain available for users who are not willing to port their libraries to have object-based sharing, as the support burden of maintaining that file in tf.compat.v1 is negligible and the volume of code written to use it is broad. + + +### Checkpointing + +Checkpointing will be done in tf 2.0 via the object-oriented checkpointing API. + + +### Optimizers + +The Optimizer.minimize method will no longer work if it's passed a Tensor and no list of variables. Users are expected to pass the list of variables to minimize wrt or pass an object which implements the CheckpointableBase interface to let the optimizer find the variables. The behavior of tf.compat.v1.Optimizer will not change. + + +### Assignment operations + +Instead of having free functions which access internal state of variables, reading from and writing to variables will be done via methods. Current tf.assign*(variable, ...) will become variable.assign*(...). tf.compat.v1 will keep the old aliases, but they will call the new methods instead. + +This is an easy LSC to make (once the current operations are modified to return a RefVariable object instead of a Ref tensor) and will make the code more homogeneous and pythonic. + + +### Ref edges versus resources + +TensorFlow graphs need to represent state (information which survives calls to session.run, or generally information produced by an op which depends on something other than the content of its input tensors) so most nontrivial programs can be useful. Examples of state are input pipelines, model parameters, queues, mutexes, and random number generators. + +There are a number of ways of representing state in TensorFlow directly in the graph, but the most robust and flexible is using resource handles. A **resource handle** is a regular immutable Tensor which represents a name to a shared out-of-graph resource (any C++ class inheriting from ResourceBase can be used as a resource). The resource handle itself doesn't change during the program execution. The resource pointed to by a handle lives on a specific device (so while it's possible to serialize resource handle tensors it's usually not a good idea), and can be accessed by any op which runs on that device and has access to the resource handle tensor. These ops can do things such as reading from the resource, modifying the resource, initializing the resource, and deleting it. + +A resource handle is a scalar tensor of dtype DT_RESOURCE (or dtypes.resource in Python), and can be manipulated as any other Tensor: you can concatenate resources, they can go through conditionals, you can slice into them, etc. This means that while it's often possible to determine statically whether two operations can access the same resource some graphs might be structured in ways which make this difficult. + +When you can determine statically that two ops touch the same resource you can make inferences about the state of the resource when one op is executing solely by looking at the graph. For example, if there is a path formed of control or data edges connecting a resource-using op O to a resource-using op O', you know that O' is guaranteed to see the effects of O on the resource and, conversely, that O is guaranteed to not see the effects of O' on the resource. If, on the other hand, there is no path in the graph connecting ops O and O' which use the same resource then whether one sees the effects of the other is undefined, and might vary from one execution to another. + +Resource variables were the motivating case for introducing the explicit notion of resources to TensorFlow graphs. This was done to avoid complicated issues related to the lack of a memory model for the deprecated ref-edge-based variables and allow compilation of TensorFlow graphs containing mutable state. + +A resource-based variable is the simplest type of resource. What's stored in the device's resource manager is a pair of a Tensor and a mutex. The main operation to read the value of a variable is read_variable_op, and it simply outputs a Tensor which has the same value as the Tensor in the resource handle state. There are many ops which write to the resource (assign_variable_op, assign_add_variable_op, resource_apply_gradient_descent, etc), and the basic properties of the resource edges ensure that it's possible to order reading and writing ops to avoid undefined behavior. + +These ops are currently implemented using copy-on-write, but they could also be implemented using copy-on-read or other, more complex, mechanisms, as long as the semantics of the read-before-writes and write-before-read are respected and as long as no mutation is done to the Tensor returned by a read_variable_op after it's been read. Here are two examples of why mutating a Tensor returned by a read_variable_op might be dangerous: + + + +* tf.cond predicates: a tf.cond takes a boolean tensor as a predicate and conditionally executes ops in the true or false branch of the conditional based on the value of the predicate. The way this is implemented in TensorFlow, to allow for graph pruning and non-strict execution is that there are many "switch" ops in the graph, each of which looks at the value of the predicate and decides which operations downstream from it can execute. If the predicate is a variable and one branch modifies the value of this variable, we would like to ensure that, because the "read" operation happened before the switch ops, only one branch of the conditional will execute. If, instead, writing to a variable could mutate the value of the tensor returned by "read", then a subset of both branches could execute, leading to hard-to-debug errors. +* gating gradients: when computing the backward pass and training a deep neural network there is by default no in-graph order between the operation to update the parameters of a layer based on its gradients and to use the value of the parameters of the layer to compute the gradient with respect to the previous layer. If the value of a variable was allowed to change after it was read, it would be possible for the value after the update to be used in the backward pass, leading to incorrect gradients for the layers closer to the input of the network. + +These are just two examples of how it's much harder to reason about TensorFlow programs when the value of a variable can change after it was read. + +Before resource handles TensorFlow variables were represented using a "ref" edge. A ref edge is a pair of pointers, one to a Tensor and one to a mutex, owned by something other than the tf runtime. When an op takes a ref tensor its input has to be a ref tensor, but when an op takes a non-ref tensor but its input is a ref tensor the pointer is silently dereferenced. This means that normal tensor objects in the graph can silently alias a mutable tensor, and hence two ops with the same input can see it having different values. Which value will be seen can depend on execution-specific details such as whether the variables are on a local or remote device, and in general it's not easy to ensure that a read happens before or after a specific write. + + +### Internal resource variable ops + +We will expose the internal ops used to implement ResourceVariable as tf.experimental.variable_operations (name TBD). This way users and libraries can, if they need to, modify the behavior of variables at will. + + +## Migration plan + +The migration plan is roughly as follows. TODO(apassos): flesh out this section with cost estimates. + + + +1. Implement the abstract base class and factory function scope under the hood +1. Expose the factory function scope as tf.variable_creator_scope +1. LSC to change tf.variable_scope / tf.get_variable to tf.compat.v1.* +1. Removal of tf.variable_scope and tf.get_variable from the tf 2 namespace +1. Implement the subclass to be returned from tf.assign* +1. LSC to change tf.assign*(v, …) to v.assign*(...) +1. Change the implementation of tf.compat.v1.variable_scope to not rely on a per-graph variable scope stack +1. Remove the get_variable_scope and related public methods from tf.Graph (leaving them on tf.compat.v1.Graph) +1. Implement PartitionedVariable as a subclass of the tf.Variable interface +1. Add a partitioner scope to the tf 2.0 API +1. Add a deprecation warning to the tf.compat.v1 partitioned variable scope with a migration warning +1. [questionable] Implement a variable creator factory function which calls get_variable under the hood +1. Make this function active in all tf.compat.v1 endpoints which currently call get_variable (with a decorator, probably) +1. Change the behavior in tf2 to call tf.Variable (which will redirect to tf.get_variable in tf.compat.v1, keeping the existing behavior but cleaning the codebase) +1. [WARNING: checkpoint-breaking change] drop calls to variable_scope in parts of our API which use it. Right now they are: feature_column, rnn, canned estimators, optimizer slots, TPU estimator. Most can be replaced with judicious use of name= arguments +1. [optional] Implement tf v2 make_template which does not rely on variable_scope internally and uses a factory creator function to track and reuse variables + + +## Questions and Discussion Topics + +1. How should we deal with the deprecation of model building APIs? From 6a8e4a04b58a1fd0f01afb948868dadf2ef95b4f Mon Sep 17 00:00:00 2001 From: Alex Passos Date: Fri, 17 Aug 2018 10:59:23 -0700 Subject: [PATCH 238/365] changes --- rfcs/variables-20.md | 140 ------------------------------------------- 1 file changed, 140 deletions(-) delete mode 100644 rfcs/variables-20.md diff --git a/rfcs/variables-20.md b/rfcs/variables-20.md deleted file mode 100644 index b5243705e..000000000 --- a/rfcs/variables-20.md +++ /dev/null @@ -1,140 +0,0 @@ -# Variables in TensorFlow 2.0 - -| Status | Proposed | -:-------------- |:---------------------------------------------------- | -| **Author(s)** | apassos@google.com | -| **Sponsor** | wicke@google.com, joshl@google.com, ashankar@google.com | -| **Updated** | 2018-08-17 | - - -## Objective - -The API for TensorFlow variables has many drawbacks: impossible-to-reason-about semantics, reliance on global scopes, and reliance on global collections. As the TensorFlow API moves to become more pythonic and object oriented, with the Keras layers and models and the object-based serialization, we no longer have a need for much of this global infrastructure around variables. - - -## Main changes - -The API for Variables will then change in the following ways for TF 2.0: - - - -* tf.Variable will become an abstract base class with a well-defined interface and a scoped factory to construct instances - * users will be able to implement their own variable-like objects by subclassing tf.Variable and adding a scoped factory function to use those variables -* variable_scope and get_variable will be removed - * the tf 1.0 version of variable_scope and get_variable will be left in tf.compat.v1 - * to control variable naming users can use tf.name_scope + tf.Variable - * whether a variable is shared across sessions / processes will be controlled by a constructor argument to tf.Variable; no other type of scope reuse will be done in the framework - * scoped partitioning will be implemented as a factory function at first - * libraries and users are encouraged to reuse variables by reusing their objects, like Keras layers do - * custom_getters will have the following API: [variable_creator_scope](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/variable_scope.py#L2395) -* the default implementation of the tf.Variable interface will be ResourceVariable - * RefVariable will be kept in tf.compat.v1 and will be the default implementation for tf.compat.v1.Variable - * tf.compat.v1.Variable will have a use_resource argument to control whether a resource variable or a ref variable will be created -* symbols like tf.assign* will be removed in favor of methods in tf.Variable - * in tf.compat.v1 these symbols will be marked as deprecated and will call the corresponding methods in the Variable object instead - - -## Detailed changes - - -### tf.Variable class - -The tf.Variable class will be an abstract base class which defines a tf.Variable interface. Initially this interface will have enough abstract methods such that the user-visible API of tf.Variable does not change. - -There will be two main implementations of this interface: RefVariable, with the legacy ref edges, available only in tf.compat.v1, and ResourceVariable, which is the default for the v2 API. PartitionedVariable, MirroredVariable, _UnreadVariable, CastVariable, etc, are other implementations which are part of the core library. None of these implementations will be publicly visible, only tf.Variable will be. - -Constructing variables is done by calling tf.Variable(*args, **kwargs). Under the hood this will call a hierarchy of scoped constructor functions, similar to what is now done in variable_scope.variable. Each such constructor function can do some combination of: - - - -* calling a base constructor to actually create a variable -* returning preexisting variables -* changing some arguments to the base constructor, and maybe calling it multiple times - -This is implemented by having a custom metaclass for tf.Variable which, when asked to construct a tf.Variable directly will call the factory functions, but when asked to construct subclasses of tf.Variable will do nothing and construct the child class. - -The tf.Variable interface will make no reference to graph collections, and tf.Variable will not add the Variable to any collections by default. tf.compat.v1.Variable, on the other hand, will have the collections argument and respect the existing semantics for it. Things which currently rely on collections (saving / loading, Optimizer.minimize, etc) will instead be expected to be passed either a list of variables or a CheckpointableBase-inheriting object. - - -### Variable sharing - -Sharing within a model will not be a part of the public API for tf.Variable. Users are strongly encouraged to share variables by sharing a reference to their objects. - -That said, the tf.compat.v1.variable_scope library can be made self-contained if we replace the per-graph variable scope stack with a module-global weak key dictionary from graphs to scope objects, and we call the protected methods to access graph collections. This will remain available for users who are not willing to port their libraries to have object-based sharing, as the support burden of maintaining that file in tf.compat.v1 is negligible and the volume of code written to use it is broad. - - -### Checkpointing - -Checkpointing will be done in tf 2.0 via the object-oriented checkpointing API. - - -### Optimizers - -The Optimizer.minimize method will no longer work if it's passed a Tensor and no list of variables. Users are expected to pass the list of variables to minimize wrt or pass an object which implements the CheckpointableBase interface to let the optimizer find the variables. The behavior of tf.compat.v1.Optimizer will not change. - - -### Assignment operations - -Instead of having free functions which access internal state of variables, reading from and writing to variables will be done via methods. Current tf.assign*(variable, ...) will become variable.assign*(...). tf.compat.v1 will keep the old aliases, but they will call the new methods instead. - -This is an easy LSC to make (once the current operations are modified to return a RefVariable object instead of a Ref tensor) and will make the code more homogeneous and pythonic. - - -### Ref edges versus resources - -TensorFlow graphs need to represent state (information which survives calls to session.run, or generally information produced by an op which depends on something other than the content of its input tensors) so most nontrivial programs can be useful. Examples of state are input pipelines, model parameters, queues, mutexes, and random number generators. - -There are a number of ways of representing state in TensorFlow directly in the graph, but the most robust and flexible is using resource handles. A **resource handle** is a regular immutable Tensor which represents a name to a shared out-of-graph resource (any C++ class inheriting from ResourceBase can be used as a resource). The resource handle itself doesn't change during the program execution. The resource pointed to by a handle lives on a specific device (so while it's possible to serialize resource handle tensors it's usually not a good idea), and can be accessed by any op which runs on that device and has access to the resource handle tensor. These ops can do things such as reading from the resource, modifying the resource, initializing the resource, and deleting it. - -A resource handle is a scalar tensor of dtype DT_RESOURCE (or dtypes.resource in Python), and can be manipulated as any other Tensor: you can concatenate resources, they can go through conditionals, you can slice into them, etc. This means that while it's often possible to determine statically whether two operations can access the same resource some graphs might be structured in ways which make this difficult. - -When you can determine statically that two ops touch the same resource you can make inferences about the state of the resource when one op is executing solely by looking at the graph. For example, if there is a path formed of control or data edges connecting a resource-using op O to a resource-using op O', you know that O' is guaranteed to see the effects of O on the resource and, conversely, that O is guaranteed to not see the effects of O' on the resource. If, on the other hand, there is no path in the graph connecting ops O and O' which use the same resource then whether one sees the effects of the other is undefined, and might vary from one execution to another. - -Resource variables were the motivating case for introducing the explicit notion of resources to TensorFlow graphs. This was done to avoid complicated issues related to the lack of a memory model for the deprecated ref-edge-based variables and allow compilation of TensorFlow graphs containing mutable state. - -A resource-based variable is the simplest type of resource. What's stored in the device's resource manager is a pair of a Tensor and a mutex. The main operation to read the value of a variable is read_variable_op, and it simply outputs a Tensor which has the same value as the Tensor in the resource handle state. There are many ops which write to the resource (assign_variable_op, assign_add_variable_op, resource_apply_gradient_descent, etc), and the basic properties of the resource edges ensure that it's possible to order reading and writing ops to avoid undefined behavior. - -These ops are currently implemented using copy-on-write, but they could also be implemented using copy-on-read or other, more complex, mechanisms, as long as the semantics of the read-before-writes and write-before-read are respected and as long as no mutation is done to the Tensor returned by a read_variable_op after it's been read. Here are two examples of why mutating a Tensor returned by a read_variable_op might be dangerous: - - - -* tf.cond predicates: a tf.cond takes a boolean tensor as a predicate and conditionally executes ops in the true or false branch of the conditional based on the value of the predicate. The way this is implemented in TensorFlow, to allow for graph pruning and non-strict execution is that there are many "switch" ops in the graph, each of which looks at the value of the predicate and decides which operations downstream from it can execute. If the predicate is a variable and one branch modifies the value of this variable, we would like to ensure that, because the "read" operation happened before the switch ops, only one branch of the conditional will execute. If, instead, writing to a variable could mutate the value of the tensor returned by "read", then a subset of both branches could execute, leading to hard-to-debug errors. -* gating gradients: when computing the backward pass and training a deep neural network there is by default no in-graph order between the operation to update the parameters of a layer based on its gradients and to use the value of the parameters of the layer to compute the gradient with respect to the previous layer. If the value of a variable was allowed to change after it was read, it would be possible for the value after the update to be used in the backward pass, leading to incorrect gradients for the layers closer to the input of the network. - -These are just two examples of how it's much harder to reason about TensorFlow programs when the value of a variable can change after it was read. - -Before resource handles TensorFlow variables were represented using a "ref" edge. A ref edge is a pair of pointers, one to a Tensor and one to a mutex, owned by something other than the tf runtime. When an op takes a ref tensor its input has to be a ref tensor, but when an op takes a non-ref tensor but its input is a ref tensor the pointer is silently dereferenced. This means that normal tensor objects in the graph can silently alias a mutable tensor, and hence two ops with the same input can see it having different values. Which value will be seen can depend on execution-specific details such as whether the variables are on a local or remote device, and in general it's not easy to ensure that a read happens before or after a specific write. - - -### Internal resource variable ops - -We will expose the internal ops used to implement ResourceVariable as tf.experimental.variable_operations (name TBD). This way users and libraries can, if they need to, modify the behavior of variables at will. - - -## Migration plan - -The migration plan is roughly as follows. TODO(apassos): flesh out this section with cost estimates. - - - -1. Implement the abstract base class and factory function scope under the hood -1. Expose the factory function scope as tf.variable_creator_scope -1. LSC to change tf.variable_scope / tf.get_variable to tf.compat.v1.* -1. Removal of tf.variable_scope and tf.get_variable from the tf 2 namespace -1. Implement the subclass to be returned from tf.assign* -1. LSC to change tf.assign*(v, …) to v.assign*(...) -1. Change the implementation of tf.compat.v1.variable_scope to not rely on a per-graph variable scope stack -1. Remove the get_variable_scope and related public methods from tf.Graph (leaving them on tf.compat.v1.Graph) -1. Implement PartitionedVariable as a subclass of the tf.Variable interface -1. Add a partitioner scope to the tf 2.0 API -1. Add a deprecation warning to the tf.compat.v1 partitioned variable scope with a migration warning -1. [questionable] Implement a variable creator factory function which calls get_variable under the hood -1. Make this function active in all tf.compat.v1 endpoints which currently call get_variable (with a decorator, probably) -1. Change the behavior in tf2 to call tf.Variable (which will redirect to tf.get_variable in tf.compat.v1, keeping the existing behavior but cleaning the codebase) -1. [WARNING: checkpoint-breaking change] drop calls to variable_scope in parts of our API which use it. Right now they are: feature_column, rnn, canned estimators, optimizer slots, TPU estimator. Most can be replaced with judicious use of name= arguments -1. [optional] Implement tf v2 make_template which does not rely on variable_scope internally and uses a factory creator function to track and reuse variables - - -## Questions and Discussion Topics - -1. How should we deal with the deprecation of model building APIs? From efbb1623bd2573b4278440a4f500be8ca136f1c6 Mon Sep 17 00:00:00 2001 From: Alex Passos Date: Wed, 22 Aug 2018 09:34:55 -0700 Subject: [PATCH 239/365] fix link From 89ba29dec3e0717c4331be0830129c4403408874 Mon Sep 17 00:00:00 2001 From: Alex Passos Date: Mon, 16 Mar 2020 10:03:52 -0700 Subject: [PATCH 240/365] .. From 9b4c282d767da8d466201bcd55b46f5dbc3d5d9b Mon Sep 17 00:00:00 2001 From: Alex Passos Date: Mon, 16 Mar 2020 10:04:01 -0700 Subject: [PATCH 241/365] . From 04158798bb6187efd04f78a03add04cae43ec3ea Mon Sep 17 00:00:00 2001 From: Alex Passos Date: Fri, 21 Dec 2018 14:56:11 -0800 Subject: [PATCH 242/365] new-rfc --- rfcs/20181225-tf-backeng.md | 56 +++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 rfcs/20181225-tf-backeng.md diff --git a/rfcs/20181225-tf-backeng.md b/rfcs/20181225-tf-backeng.md new file mode 100644 index 000000000..38a77154d --- /dev/null +++ b/rfcs/20181225-tf-backeng.md @@ -0,0 +1,56 @@ +# `tf.backend` + +| Status | Proposed | +| :------------ | :------------------------------------------------------ | +| **Author** | apassos@google.com | +| **Sponsor** | wicke@google.com | +| **Updated** | 2018-12-25 | + +## Objective + +Expose a `tf.backend` namespace containing all raw operations in TensorFlow. + +## Motivation + +Some parts of the TensorFlow Python API, such as variables, optimizers, and +control flow, are currently not implementable by third parties. Moreover, with +the tf.contrib deprecation, there is now no valid Python endpoint from which to +use many TF operations. + +## Design Proposal + +We'll add a `tf.backend` namespace to TensorFlow with Python bindings to all +non-deprecated TensorFlow ops which is usable in a backwards-compatible +way. This is designed to be consumed by downstream library writers and not end +users (in this way it's similar to `tf.keras.backend`, from which it gets its +name). + +## Detailed Design + +The namespace will be automatically populated with generated bindings for every +operation in TensorFlow. These generated bindings will be similar to the ones +currently used for the python API, with the following differences: + +* All arguments are keyword arguments. + - This allows us to add new attributes to existing ops without breaking users + who call by positional arguments (given that there is an always-last `name` + argument added by the tf op binding generator). + - This also prevents users from assuming that calling conventions from the + existing python bindings apply to the backend versions (we often do argument + reordering in our python bindings, for example). +* Any op marked as deprecated will be in the namespace but will raise an + exception when used. + - This includes ops which take or produce ref tensors. + - This allows us to deprecate ops eventually and to be less strict with the API + here than with the main API. + - This is mostly OK since only library writers are supposed to use these + symbols, and the deprecation messages should include upgrading instructions. + + +## Questions and Discussion Topics + +* Naming: is tf.backend the best name we can have for this? +* Backward compatibility policy: is it acceptable to have a subnamespace with a +different compatibility guarantee? +* Flat namespace vs nested? Currently the TF ops are loosely grouped in + `gen_*_ops.py` files; is it worth to preserve this grouping here? From 6fbc0f09a4903b8a782c37f2a1e6335202108bf1 Mon Sep 17 00:00:00 2001 From: Alex Passos Date: Fri, 6 Dec 2019 13:53:14 -0800 Subject: [PATCH 243/365] changes --- governance/api-reviews.md | 203 +++++++++++++++++++++++++++++++ governance/design-reviews.md | 227 +++++++++++++++++++++++++++++++++++ 2 files changed, 430 insertions(+) create mode 100644 governance/api-reviews.md create mode 100644 governance/design-reviews.md diff --git a/governance/api-reviews.md b/governance/api-reviews.md new file mode 100644 index 000000000..c37b10013 --- /dev/null +++ b/governance/api-reviews.md @@ -0,0 +1,203 @@ +# tf-api-owners review practices + +## Overview + +This is an attempt to gather commonly discussed topics when doing tf-api-owners +reviews. It’ll hopefully be a useful resource to both API owners and people +proposing API changes. Process TF API Owners meet twice weekly to discuss +changes. We try to get to PRs on the next meeting, but we don’t always make it +all the way through. If your change is particularly urgent, please ping the PR +to notify us of any urgency. + +## Process + +We only look at changes which have already been approved by other reviewers. If +there are major outstanding comments, we will wait with API review until those +are resolved. If there are questions for API owners, explicitly raise this in +the comments to get an answer. + + +## High level points + +### Backward and forward compatibility +We avoid backwards-incompatible API changes. We also avoid +backwards-incompatible behavior changes, such as restricting the set of valid +inputs to a function or extending the set of valid outputs of a function. Adding +support for previously not supported behavior is okay, as are changes to +explicitly experimental APIs (within reason). When needing to provide a new or +different behavior, we strongly prefer a new version of the API over breaking +backwards compatibility. Note that we are free to deprecate APIs; we just cannot +break code which relies on their documented behavior. We need to worry about +backward compatibility both of our python APIs and of the serialized GraphDefs, +and in general breaking serialized GraphDefs is worse than breaking the python +APIs. + +Forward compatibility is more subtle: we should avoid changing the graph +produced by currently correct python code without a three weeks notice . This +comes up most frequently when adding new ops, but also applies to non-obvious +things such as the graph emitted by gradients or pfor. + +Including the name “experimental” in an API endpoint allows you to break +backwards compatibility in the future, as noted above. However, we still prefer +to mark the experimental API as deprecated for one release before removing it in +the subsequent release. Please do not use the experimental namespace as an +escape hatch for bad code or functionality you +don’t-really-want-but-need-for-now; experimental APIs should be APIs that we +intend to make standard in the near future, but have some lingering questions to +resolve first. + + +### Docstrings + +TF APIs should have comprehensive documentation in the form of docstrings. If at +all possible these docstrings should have runnable examples, and these examples +should form a doctest so they stay correct. The examples should demonstrate an +end-to-end user workflow, such that it’s clear how to generate the necessary +inputs for the API and what to do with the outputs. The docstring should be +understandable by someone who is not familiar with TF. + +Our documentation generator for classes only sees methods, so prefer defining +members as properties instead of assigning them in `__init__`. + +Docstrings should only refer to other public TF API symbols (i.e. do not refer +to other symbols defined in the same file as a function which is just now being +made public) and should refer to public API symbols by their full exported name. + +### Common names + + +Prefer keepdims over keep_dims. Prefer axis over dim. Data types are called +dtype. name is a common last argument of ops but backward compatibility mandates +that new arguments are added after the last existing argument, even if that +results in name not being the last argument. + +We generally prefer spelling things out over using abbreviations except when +abbreviations are more standard than spelling things out (i.e. don’t spell out +linalg or svd). When in doubt we ask domain experts or use web search to see +what spelling is most common. + +If possible we prefer to name things in a similar way to numpy (e.g., we would +not pick einsum as a name, but numpy and MatLab before it has, and that +precedent is very strong). + +We prefer experimental namespaces (i.e. tf.data.experimental.foobar) over +experimental-prefixed names (i.e. tf.data.experimental_foobar) except when +adding an experimental class method, or an experimental argument. Experimental +endpoints should be deprecated in a minor release before they can be removed in +the next. We would like new experimental symbols to be things which will +eventually end up in core TF as opposed to things we expect will be phased out +with no clear replacement. The best expectation to have for an experimental +endpoint is that the “experimental” will simply be removed. If you don’t believe +that’ll work, it should probably not be added in its current form. Style +Generally, follow Google style. + +Avoid redundancy. Do not write arguments of the form `function(..., +enable_feature=False, feature_config=None)` if you can also write `function(..., +feature_config=None)`, where implicitly, `enable_feature = feature_config is not +None`. + +Try to embed well with the ambient language. Think about how your API interacts +with language idioms (e.g., in Python: can it be hashed, i.e., used as a dict +key? Is it iterable? Is it a mapping? Can it be equality compared? +Ordered?). Think about how your API interacts with other pieces of the Python +ecosystem as well— is there an analogue in Numpy or PyTorch that we should +consider aligning with? + +Use language-native constructs wherever you can. In Python, a tuple should be a +tuple. The bar for custom configuration objects is relatively high, a dict or +namedtuple goes a long way. + +In particular, do not expose protobufs directly as part of an API. You can use +protobufs for serialization or to encode network traffic. Protobufs should +always be an implementation detail, and never visible on the API surface. Use +language native constructs (dicts or classes for Python, structs for C/C++) if +you need configuration objects. + +Avoid global (or any non-local) state as much as possible (this includes Python +'with' scopes). If you need global context, consider whether it can be +thread-local. The TF API is supposed to be thread-safe. Avoid stateful operation +(mutability) if you can. Both features make it hard to reason about code, and +make composability harder to achieve. + +### Orthogonality and integration with the existing APIs + +Is the new API implementable in terms of existing APIs? If so, we might want to +consider pointing users to using the existing APIs. Does the new API add enough +value over a combination of existing APIs? Does the API solve only a specific +problem (that’s usually a sign combinations of existing APIs would be +preferred)? + +If not, are existing APIs implementable in terms of the new API? If this is +simple, we might want to steer users towards the new and away from the old API +(possibly, old APIs should be deprecated along with introducing the new API). + +If neither is the case, it might be possible that there is a more general API +which makes both the existing API and the new API easy to express. We try to +keep global consistency of our API in mind when reviewing new changes. + +How will this API work together with others? Does it do something slightly +differently than others? Does it expect inputs which match what other parts of +TensorFlow produce? Does its output match what other parts of TensorFlow can +consume? + +Does it do things the same way other similar pieces in TensorFlow do it? E.g., +if a common pattern to achieve a behavior is an extra argument, don't use a +function decorator to achieve the same in a different area of the API. + +Two wrongs don’t make a right. That is, if a bad API already exists in TF, that +does not give license to new APIs to be bad in the same way. Improvement must be +balanced with consistency, however, and sometimes it’s okay to carry small +imperfections into new APIs for the sake of consistency with old APIs. + +### Does it belong in TF at all? + +As TF evolves there’s a tendency to put everything inside of it, with costs +compounding over the long term. If there is a reasonable home for a new API +outside core TF (say in addons, io, TFP, or other projects entirely) that can be +strongly preferrable. If new code can be released as independent libraries, it +should be. This is especially true for APIs that are actively evolving; core TF +imposes many restrictions, so it’s far better to trial new APIs outside of the +core library. + +## Adding new ops + +Adding new ops to TF should be done with care. We generally prefer not adding +new ops if possible, but performance, hardware compatibility, and other concerns +often do require new ops. + +When adding new ops, look for: + - closure under automatic differentiation (i.e. we avoid ops which are + differentiable but not twice-differentiable, or which are technically + differentiable but not marked as such) + - performant kernels (it’s better not to have an op than to have an op with a + suboptimal kernel; we need to make sure kernel experts have reviewed the + code) + - broadcasting (all numerical ops should broadcast using numpy rules) + - does support for this op have to be added to pfor? + - dtype support (in general all numerical ops should support the common + integer, floating point, and complex dtypes, if they all make sense; we need + to watch out for int32 on GPUs though) + - device support (cuda kernels should be implemented if possible, and similarly + a tf/xla bridge entry should be added if it makes sense) + - attributes versus inputs (anything which can be an input to an operation + should be an input, and attributes should only be used to parametrize the + operation in ways that affect the output dtypes or sometimes shapes) + - state management (is the op stateful? Can it instead be made stateless and + rely on optimizations like memory reuse for performance? Can it be made to + keep its state using one of the existing mechanisms like variables? If not, + its state should be encapsulated using resource handles if at all possible) + - we generally don’t like ops which are supported only on a single device (be + it CPU, GPU, XLA, TPU, etc) and prefer to have at least a plan for writing + device-agnostic code + - should the python layer for this operation support raggedtensor/sparsetensor? + + +## Keras changes + +Keras has its own external API and maintainers, as well as an internal +team. Keras API changes tend to be cross-cutting as core Keras classes are base +classes to many TF API endpoints. We generally only look at keras changes after +a keras owner (say, fchollet or karmel) has already approved it on their +end. fchollet has guidelines for changes to the Keras API at +go/keras-api-guidelines. These include many generally good practices that are +useful to keep in mind outside of Keras as well. diff --git a/governance/design-reviews.md b/governance/design-reviews.md new file mode 100644 index 000000000..7fe586eff --- /dev/null +++ b/governance/design-reviews.md @@ -0,0 +1,227 @@ +# tf-design-reviews criteria + +## Overview + +The TensorFlow team has run internal and public design reviews for a while +now. This document tries to capture what type of questions get asked and +concerns get addressed in TF design reviews. It is intended to be used by design +authors as a way of spot checking whether a design review will be useful for +them and by design sponsors as a way of making sure a design proposal clears the +bar for review (ideally every topic in this document should be addressed by the +design proposal for it to be considered). + +The main goal of tf-design-reviews is to socialize big changes to TF, document +them, and ensure all stakeholders get a chance to comment on planned +improvements before they’re implemented. Any time a change is made to TF that +will affect multiple aspects of its design or user interface, we should solicit +a design review. TF design reviews themselves are not binding: final approval +rests with whoever has the authority to approve the required code changes, and +the design review is a tool to get consensus and feedback on big changes before +actual approval. + +By default TF design reviews should go through the open RFC process in the +tensorflow/community repository, but we will on rare occasions accept design +reviews of google-internal TF-related infrastructure which should be kept +private due to reasons beyond our control. + +## General considerations + +Every item in this section should be addressed by a TF design review. We do not +require a solution prior to review but we do want to see that the review author +has considered these issues. It is the design sponsor’s job to ensure that +review documents have thought through these issues. + +### Performance +Performance is the core reason why most end users use TensorFlow at all; hand +writing code with the same level of performance is prohibitively expensive, and +any other similarly-performing or better-performing solution can also be +integrated in the ecosystem in principle. In that vein, all new designs to TF +should carefully consider their performance implications. + +Performance in TF is multi-faceted: we need to worry about scaling from very +small devices (including microcontrollers) to very large devices (beyond TPU +pods); we need to worry about interactive usage (so the cost of making small +changes should be small) and about batch usage (where it’s ok to sacrifice some +startup time to improve steady-state performance); we care both about throughput +(maximizing accelerator utilization saves a lot of money) and latency (as TF is +used in all parts of Google’s software stack); we also care about performance on +many types of hardware. + +Can a particular design proposal be implemented efficiently? Does it impose any +inherent limits on the performance in any of the scenarios above? How will it +interact with our other tools for performance (grappler, XLA, eigen, tf.data, +etc)? + +### Scope + +Does this proposal even belong in TF? As TF itself grows, it’s becoming +substantially more expensive to develop software inside TF itself than as a +separate TF-using project. In this light we need to evaluate whether it’s at all +possible to release a broadly new API or library as its own separate project in +the TF ecosystem. + +Even separate projects in the TF ecosystem can benefit from TF’s devrel, blog, +twitter, etc for promotion. It might be possible to share resources dedicated to +CI or github triage, or share infrastructure around syncing to/from google3. + +Ideally the only things being added to core TF at this point are things which, +if they are not in core TF, they dramatically limit the usefulness of core TF +itself. General protocols and APIs which different libraries in the TF ecosystem +can implement / accept are good examples of things which undoubtedly belong in +core TF. Ops and kernels used to need to be in core TF, but this is no longer +the case as other projects have sustainable releases of their own binary blobs +and the TF team is working to make it cheaper to release ops and kernels outside +core TF. + +Note that we also encourage using the TF design review slot for reviewing +proposals which despite not living inside core TF are expected to be a part of +the broader TF ecosystem. + +### Programmability / flexibility + +TensorFlow is fundamentally a library to be programmed, and not a collection of +packaged black-box solutions. While it’s cheaper for any individual problem to +solve it with a simple one-line push-button packaged solution this tends to work +poorly in the long run, and lead to usability cliffs and undue API pressures. + +For example, let’s think about what would happen if instead of providing tools +to build neural network layers, TF only provided a function that built an entire +network for you. At first we could have very impressively short code examples +(“switch from inception to resnet50 in one line of code!”), but over time users +whose use cases are not exactly covered by this API would either have to +reimplement substantial parts of it themselves or would (most likely) file bugs +asking for small extensions to the API (“can we make resnet52? resnet36?”). Over +time, these bottleneck APIs develop large parameter lists of mutually exclusive +parameters which amount to a poorly defined configuration language for how to +use them. + +A key consideration when evaluating a TF design proposal is what would happen +for use cases that are slightly different from the use cases covered in the +proposal itself. The goal is not that the proposal should cover everything but, +rather, that it should be possible to easily reimplement parts of the proposal +using lower level APIs already in TF. If this is not the case then instead of +first implementing the end-to-end solution we need to discuss what low-level +APIs TF should have in such that this proposal could be easily implemented, and +only then reevaluate this proposal. + +We also worry about proposals which are too device-specific (be it TPU-specific +or GPU-specific or CPU-specific). While many such things seem reasonable when +first proposed, they break down over time as the set of users for different +devices overlaps quite a bit. + +### Integration + +As TF has grown, it has sprouted an ecosystem of tools and libraries both +internal and external to TF. New entries to this ecosystem should, as much as +possible, coexist and peacefully cooperate with other entities in the TF +ecosystem. Failing that, new entries should cleanly replace existing +ones. Awkwardly coexisting is not an option we recommend. + +The ecosystem includes both things currently inside TF such as Estimator, Keras, +tf.data, tf.distribute, tf.tpu, XLA, or tf.saved_model as well as things +developed outside TF, such as TF probability, vizier, TF serving, MLIR, TFRT, +Sonnet, among others. If existing integration points do not suffice, we should +consider developing new integration points (i.e. how the Sonnet team developed +tf.Module to integrate sonnet, which lives outside TF, with tf.train.Checkpoint, +tf.keras, tf.function, or tf.saved_model). + +It is also important that new designs don’t break existing abstractions which TF +supports, such as eager execution, functions, control flow, gradients, or +automatic vectorization. In general, libraries which use simpler TF primitives +(like tf.data) are easier to integrate into the ecosystem than libraries which +try to rewrite TF programs (like TF transform v1). Similarly, we should prefer +proposals which rely on explicit APIs to accomplish things over proposals which +want to do post-hoc graph rewriting (or make converters, or exporters) as those +tend to integrate poorly with each other and tend to be hard to directly +program. + +### Maintenance + +As many proposals for TF improvements come from outside TF or from outside the +subteams in TF which currently maintain related functionality, TF design +proposals should be upfront about the maintenance story for new functionality +and code. + +It is perfectly fine (and common) to punt maintenance on the TF team, but we +should — ahead of the design review — figure out who specifically in the TF team +is signing up to maintain this specific design. + +### User groups + +While TensorFlow cannot be everything for everyone we do try to cover a broad +swath of machine learning use cases, spanning the spectrum from research to +production, from small to large devices, and from commercial to educational +uses. + +It is important for every proposal to TF to talk about which segments of our +user community’s needs are being addressed and for which ones this is expected +to be irrelevant. Specifically, consider stereotypical pure researcher in ML, +researcher applying ML to other fields, students learning ML, industry +professionals applying ML with little to no understanding, industry applied ML +developers, mobile developers, and others. + +## Specific considerations + +Some particular subsystems of TF have their own considerations which are often +relevant for TF design reviews. It is up to individual designs’ sponsors whether +any of these topics needs to be addressed in the document before review. + +### Eager/graph mode + +In TF1.x many libraries implicitly or explicitly assume graph-based +execution. As TF 2.0 has been released, eager execution is on by default. This +means that all new TF APIs should be usable from eager execution or from graphs, +and new design proposals should be implemented so they work with both. + +In practice this means we cannot rely on per-graph global state, reference +dtypes, and graph pruning to ensure program correctness. Similarly it was +possible in some cases in TF1.x to treat a Tensor as a Promise. In TF2, however, +a Tensor is an already-computed value, and if you need a promise use instead a +function which can compute a tensor on-demand. + +### Keras + +Keras has a special status existing both inside and outside TF. As such, changes +to Keras need to consider the impact on the entire Keras community. New APIs to +be added to Keras can comfortably live in tf-addons. Changes to core Keras APIs +need a review owners or sponsor from the Keras team before a TF-wide review. + +Further, changes outside the scope of Keras should address how the change will +interact with Keras users, if at all. For example, if a new CompositeTensor is +proposed, will it be a plausible input to Keras layers? If so, how will support +be implemented? + +### tf.data + +tf.data is TensorFlow recommended API for data (pre)processing and any designs +that pertain to handling data should consider how they relate to tf.data. New +designs pertaining to handling data should provide useful functionality on top +of tf.data (such as the TFDS project or a library of common transformations for +tf.data.Dataset.map) as opposed to alternatives to tf.data. + +In addition, new CompositeTensor subclasses should strongly consider +implementing the optional BatchableTypeSpec interface which is needed for +tf.data to be able to batch and unbatch instances of the subclass. + +### SavedModel + +SavedModel changes in particular need to be both forward and backwards +compatible, as SavedModel files will be written by and read from different TF +versions entirely. In general, removing things from the format is not OK but +adding things is possible if new additions are not required to correctly read +the model from older binaries. + +### “Impossible” designs + +There are many things which are possible to make work for specific cases but +impossible to make work in general. We should avoid proposing changes to TF that +look like they work in general but in practice each new use case needs to be +covered by manual work from the TF team. + +### Distribution Strategies + +tf.distribute is the recommended API for distributing computation over GPUs, +TPUs and multiple machines. It is important to consider the implications of a +new design wrt how it would work in a distributed setting. There may be explicit +changes required to ensure the new functionality works seamlessly with / without +tf.distribute. From 9853bd14027479c78c53531df2a895f47eea9c86 Mon Sep 17 00:00:00 2001 From: Alex Passos Date: Fri, 6 Dec 2019 13:55:08 -0800 Subject: [PATCH 244/365] oops --- rfcs/20181225-tf-backeng.md | 56 ------------------------------------- 1 file changed, 56 deletions(-) delete mode 100644 rfcs/20181225-tf-backeng.md diff --git a/rfcs/20181225-tf-backeng.md b/rfcs/20181225-tf-backeng.md deleted file mode 100644 index 38a77154d..000000000 --- a/rfcs/20181225-tf-backeng.md +++ /dev/null @@ -1,56 +0,0 @@ -# `tf.backend` - -| Status | Proposed | -| :------------ | :------------------------------------------------------ | -| **Author** | apassos@google.com | -| **Sponsor** | wicke@google.com | -| **Updated** | 2018-12-25 | - -## Objective - -Expose a `tf.backend` namespace containing all raw operations in TensorFlow. - -## Motivation - -Some parts of the TensorFlow Python API, such as variables, optimizers, and -control flow, are currently not implementable by third parties. Moreover, with -the tf.contrib deprecation, there is now no valid Python endpoint from which to -use many TF operations. - -## Design Proposal - -We'll add a `tf.backend` namespace to TensorFlow with Python bindings to all -non-deprecated TensorFlow ops which is usable in a backwards-compatible -way. This is designed to be consumed by downstream library writers and not end -users (in this way it's similar to `tf.keras.backend`, from which it gets its -name). - -## Detailed Design - -The namespace will be automatically populated with generated bindings for every -operation in TensorFlow. These generated bindings will be similar to the ones -currently used for the python API, with the following differences: - -* All arguments are keyword arguments. - - This allows us to add new attributes to existing ops without breaking users - who call by positional arguments (given that there is an always-last `name` - argument added by the tf op binding generator). - - This also prevents users from assuming that calling conventions from the - existing python bindings apply to the backend versions (we often do argument - reordering in our python bindings, for example). -* Any op marked as deprecated will be in the namespace but will raise an - exception when used. - - This includes ops which take or produce ref tensors. - - This allows us to deprecate ops eventually and to be less strict with the API - here than with the main API. - - This is mostly OK since only library writers are supposed to use these - symbols, and the deprecation messages should include upgrading instructions. - - -## Questions and Discussion Topics - -* Naming: is tf.backend the best name we can have for this? -* Backward compatibility policy: is it acceptable to have a subnamespace with a -different compatibility guarantee? -* Flat namespace vs nested? Currently the TF ops are loosely grouped in - `gen_*_ops.py` files; is it worth to preserve this grouping here? From 57528b61738bd457976b4f42bbc2f6ce52c8e1b9 Mon Sep 17 00:00:00 2001 From: Alex Passos Date: Mon, 9 Dec 2019 13:58:41 -0800 Subject: [PATCH 245/365] added docstring link --- governance/api-reviews.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/governance/api-reviews.md b/governance/api-reviews.md index c37b10013..762cd992f 100644 --- a/governance/api-reviews.md +++ b/governance/api-reviews.md @@ -54,7 +54,9 @@ all possible these docstrings should have runnable examples, and these examples should form a doctest so they stay correct. The examples should demonstrate an end-to-end user workflow, such that it’s clear how to generate the necessary inputs for the API and what to do with the outputs. The docstring should be -understandable by someone who is not familiar with TF. +understandable by someone who is not familiar with TF. See the [guide to writing +TF docstrings](https://www.tensorflow.org/community/contribute/docs_ref) for +more information. Our documentation generator for classes only sees methods, so prefer defining members as properties instead of assigning them in `__init__`. From 6b6dfe94e2b935c692673f6e6712ab13b561b314 Mon Sep 17 00:00:00 2001 From: Alex Passos Date: Mon, 9 Dec 2019 14:26:10 -0800 Subject: [PATCH 246/365] style is a section header --- governance/api-reviews.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/governance/api-reviews.md b/governance/api-reviews.md index 762cd992f..dbb4feba4 100644 --- a/governance/api-reviews.md +++ b/governance/api-reviews.md @@ -90,7 +90,9 @@ the next. We would like new experimental symbols to be things which will eventually end up in core TF as opposed to things we expect will be phased out with no clear replacement. The best expectation to have for an experimental endpoint is that the “experimental” will simply be removed. If you don’t believe -that’ll work, it should probably not be added in its current form. Style +that’ll work, it should probably not be added in its current form. + +### Style Generally, follow Google style. Avoid redundancy. Do not write arguments of the form `function(..., From 34e8f5482d17c962af710ed25abc58343aba9ef2 Mon Sep 17 00:00:00 2001 From: Alex Passos Date: Mon, 16 Dec 2019 15:31:08 -0800 Subject: [PATCH 247/365] strings over enums --- governance/api-reviews.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/governance/api-reviews.md b/governance/api-reviews.md index dbb4feba4..205afbfd6 100644 --- a/governance/api-reviews.md +++ b/governance/api-reviews.md @@ -123,6 +123,11 @@ thread-local. The TF API is supposed to be thread-safe. Avoid stateful operation (mutability) if you can. Both features make it hard to reason about code, and make composability harder to achieve. +We prefer strings ("auto", "never", etc) over enums (tf.namespace.AUTO, +etc). Strings are easier to type, and forces us to document all possible values +and their semantics in the docstrings of all places which accept the string, as +opposed to only in the enum definition, which is a little friendlier. + ### Orthogonality and integration with the existing APIs Is the new API implementable in terms of existing APIs? If so, we might want to From 2b916a8466b1475c80c708fc2c6ece451da16e27 Mon Sep 17 00:00:00 2001 From: Alex Passos Date: Mon, 16 Mar 2020 09:05:58 -0700 Subject: [PATCH 248/365] changes --- governance/api-reviews.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/governance/api-reviews.md b/governance/api-reviews.md index 205afbfd6..5cb115c06 100644 --- a/governance/api-reviews.md +++ b/governance/api-reviews.md @@ -79,7 +79,7 @@ linalg or svd). When in doubt we ask domain experts or use web search to see what spelling is most common. If possible we prefer to name things in a similar way to numpy (e.g., we would -not pick einsum as a name, but numpy and MatLab before it has, and that +not pick einsum as a name, but numpy and others before it have, and that precedent is very strong). We prefer experimental namespaces (i.e. tf.data.experimental.foobar) over @@ -207,6 +207,6 @@ Keras has its own external API and maintainers, as well as an internal team. Keras API changes tend to be cross-cutting as core Keras classes are base classes to many TF API endpoints. We generally only look at keras changes after a keras owner (say, fchollet or karmel) has already approved it on their -end. fchollet has guidelines for changes to the Keras API at -go/keras-api-guidelines. These include many generally good practices that are -useful to keep in mind outside of Keras as well. +end. fchollet has guidelines for changes to the Keras API (location TBD). These +include many generally good practices that are useful to keep in mind outside of +Keras as well. From 614bb255f9346f36b3d6ddcfd3af9e45ff740b96 Mon Sep 17 00:00:00 2001 From: Alex Passos Date: Mon, 16 Mar 2020 09:25:19 -0700 Subject: [PATCH 249/365] s/tf-api/owners/ tensorflow/api-owners' --- governance/api-reviews.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/governance/api-reviews.md b/governance/api-reviews.md index 5cb115c06..0a72956a5 100644 --- a/governance/api-reviews.md +++ b/governance/api-reviews.md @@ -1,8 +1,8 @@ -# tf-api-owners review practices +# tensorflow/api-owners review practices ## Overview -This is an attempt to gather commonly discussed topics when doing tf-api-owners +This is an attempt to gather commonly discussed topics when doing API reviews. It’ll hopefully be a useful resource to both API owners and people proposing API changes. Process TF API Owners meet twice weekly to discuss changes. We try to get to PRs on the next meeting, but we don’t always make it From c6dc8b1921de6d1e343864b456ccf39a652bb49f Mon Sep 17 00:00:00 2001 From: Martin Wicke <577277+martinwicke@users.noreply.github.com> Date: Mon, 16 Mar 2020 09:48:46 -0700 Subject: [PATCH 250/365] final touches --- governance/api-reviews.md | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/governance/api-reviews.md b/governance/api-reviews.md index 0a72956a5..61dc3e64e 100644 --- a/governance/api-reviews.md +++ b/governance/api-reviews.md @@ -4,10 +4,10 @@ This is an attempt to gather commonly discussed topics when doing API reviews. It’ll hopefully be a useful resource to both API owners and people -proposing API changes. Process TF API Owners meet twice weekly to discuss -changes. We try to get to PRs on the next meeting, but we don’t always make it -all the way through. If your change is particularly urgent, please ping the PR -to notify us of any urgency. +proposing API changes. [TF API Owners](https://github.com/orgs/tensorflow/teams/api-owners) +meet twice weekly to discuss changes. We try to get to PRs on the next meeting, +but we don’t always make it all the way through. If your change is particularly +urgent, please ping the PR to notify us of any urgency. ## Process @@ -33,7 +33,7 @@ and in general breaking serialized GraphDefs is worse than breaking the python APIs. Forward compatibility is more subtle: we should avoid changing the graph -produced by currently correct python code without a three weeks notice . This +produced by currently correct python code without a three weeks notice. This comes up most frequently when adding new ops, but also applies to non-obvious things such as the graph emitted by gradients or pfor. @@ -67,7 +67,6 @@ made public) and should refer to public API symbols by their full exported name. ### Common names - Prefer keepdims over keep_dims. Prefer axis over dim. Data types are called dtype. name is a common last argument of ops but backward compatibility mandates that new arguments are added after the last existing argument, even if that @@ -93,6 +92,7 @@ endpoint is that the “experimental” will simply be removed. If you don’t b that’ll work, it should probably not be added in its current form. ### Style + Generally, follow Google style. Avoid redundancy. Do not write arguments of the form `function(..., @@ -175,6 +175,7 @@ new ops if possible, but performance, hardware compatibility, and other concerns often do require new ops. When adding new ops, look for: + - closure under automatic differentiation (i.e. we avoid ops which are differentiable but not twice-differentiable, or which are technically differentiable but not marked as such) @@ -182,7 +183,7 @@ When adding new ops, look for: suboptimal kernel; we need to make sure kernel experts have reviewed the code) - broadcasting (all numerical ops should broadcast using numpy rules) - - does support for this op have to be added to pfor? + - does support for this op have to be added to pfor/vectorized_map? - dtype support (in general all numerical ops should support the common integer, floating point, and complex dtypes, if they all make sense; we need to watch out for int32 on GPUs though) @@ -199,14 +200,3 @@ When adding new ops, look for: it CPU, GPU, XLA, TPU, etc) and prefer to have at least a plan for writing device-agnostic code - should the python layer for this operation support raggedtensor/sparsetensor? - - -## Keras changes - -Keras has its own external API and maintainers, as well as an internal -team. Keras API changes tend to be cross-cutting as core Keras classes are base -classes to many TF API endpoints. We generally only look at keras changes after -a keras owner (say, fchollet or karmel) has already approved it on their -end. fchollet has guidelines for changes to the Keras API (location TBD). These -include many generally good practices that are useful to keep in mind outside of -Keras as well. From c3a1c2df3262a19a87cf2fc9f8a7640053e5a290 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Tue, 17 Mar 2020 09:04:05 -0400 Subject: [PATCH 251/365] Detail the relationship with tf.TypeSpec --- rfcs/20200211-tf-types.md | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index a9c58297e..fab49bc21 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -117,6 +117,40 @@ Although this RFC proposes the deprecation of `register_tensor_conversion_functi ### Support for `tf.function`'s `input_signature` The type system listed here can be expanded to allow input signatures using type annotations, see for instance [this thread](https://github.com/tensorflow/tensorflow/issues/31579). +Presently, the [input_signature](https://www.tensorflow.org/api_docs/python/tf/function) optional mechanism uses [tf.TensorSpec](https://www.tensorflow.org/api_docs/python/tf/TensorSpec) to describe the function arguments: + +``` +>>> @function(input_signature=[TensorSpec([3], dtype=int32)]) +... def f(x): +... tf.print(x) +>>> f(constant([1, 2, 3])) +[1 2 3] +>>> f(constant([1, 2])) # Shape mismatch +ValueError: Python inputs incompatible with input_signature +>>> f(constant([1.0, 2.0, 3.0])) # DType mismatch +ValueError: Python inputs incompatible with input_signature +``` + +It is expected however that some or all of this information will be repeated by the function's type annotations. Type annotations may be generic, for example by only specifying a dtype: + +``` +>>> @function(input_signature=[TensorSpec([3], dtype=int32)]) +... def f(x: Tensor[int32]): +... ... +``` + +In such cases, `tf.function` is expected to verify that the type annotation matches the `input_signature`. + +In the long term, this RFC recommends that type annotations fully replace the `input_signature`, so far as the Python type annotation system allows it: + +``` +>>> @function +... def f(x: Tensor[int32, [3]]): +... ... +``` + +Internally. such type annotations will still be represented as `tf.TypeSpec` objects, ensuring backward compatbility. + ### Initial Type Hierarchy TensorFlow generally adopts an incremental development method. This RFC aims to remain consistent with that. @@ -228,4 +262,3 @@ It is not fully equivalent with `typing.Optional`, as TensorFlow has no explicit * Single flat vs. hierarchical namespace - for example: `tf.types.distribute.Dataset`, or `tf.types.DistributedDataset`? * The inclusion of more specialized `Graph` types, such as `FuncGraph`, `CondBranchFuncGraph`, `WhileCondFuncGraph`, `WhileBodyFuncGraph`. It’s unclear where these should be defined, however internal submodules needs these subtypes to maintain acyclic dependencies. * `register_tensor_conversion_function` - should it support static type verifications (e.g. using the [ABCMeta.register](https://docs.python.org/3/library/abc.html#abc.ABCMeta.register) mechanism)? -* Unification with `tf.TypeSpec` - although largely orthogonal at the moment, the distinction is subtle and confusing even for experts, which perhaps indicates we should unify them. From 4f31a44d4e9a011ce4b34867f8181b2458809870 Mon Sep 17 00:00:00 2001 From: Yuefeng Zhou Date: Wed, 18 Mar 2020 00:27:40 -0700 Subject: [PATCH 252/365] Update based PR comments. --- rfcs/20200306-single-client-parameter-server.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/rfcs/20200306-single-client-parameter-server.md b/rfcs/20200306-single-client-parameter-server.md index fb16554f7..163752d40 100644 --- a/rfcs/20200306-single-client-parameter-server.md +++ b/rfcs/20200306-single-client-parameter-server.md @@ -59,7 +59,7 @@ One of our goals is to make `ParameterServerStrategy`’s API consistent with ot #### Constraints -Function is first-class citizen. Users should only schedule functions instead of running individual ops, in addition to creating variables. +Function is first-class citizen. Users should only schedule functions instead of running individual ops, in addition to creating variables. We will only support `tf.function`s. Scheduling arbitrary Python functions will not be supported in the first cut. Users can occasionally run individual ops on the client, only for reporting purposes such as printing a metric’s value. @@ -94,6 +94,9 @@ class ParameterServerStrategyV2: If there are barriers in `replica_fn`, it is users' responsibility to make sure they won't cause deadlock. + + It will throw an exception if any previously scheduled functions have + non-retryable errors. """ pass @@ -169,7 +172,7 @@ with strategy.scope(): strategy.join() model.save() # save checkpoint/summary... print ("Loss = %f, accuracy = %f" % ( - strategy.local_results(loss), accuracy.result())) + strategy.local_results(loss) or float('nan'), accuracy.result())) ``` @@ -183,7 +186,7 @@ Another option from calling `join` every epoch, users can choose to schedule all with strategy.scope(): # … omitted for _ in range(total_steps)): - strategy.schedule(step_fn, args=(iterators,)) + strategy.schedule(step_fn, args=(distributed_iter,)) # Print accuracy value every one minute. while not strategy.done(): @@ -257,7 +260,7 @@ For functions that bound to a specific worker, e.g. resource creation function, When the failed worker is back, we will update the cluster configuration with `context.update_server_def` which would also reset all the states. After resources on the restarted worker are built, we can resume scheduling functions on the worker. -###### When materialing a `Future` object +###### When materializing a `Future` object It is possible that a function is executed but its corresponding worker fails when users try to consume its output. In this case, we will give users a `None` value and set an error in the `Future` object. From f551da1527a3c8ef2aaaf4eb5c71dc97e1bc33f3 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Fri, 20 Mar 2020 08:55:28 -0400 Subject: [PATCH 253/365] Formatting --- rfcs/20200211-tf-types.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index fab49bc21..ea77eeab6 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -11,6 +11,7 @@ This RFC proposes a new TensorFlow module and namespace (`tf.types`) dedicated to storing implementation-free type definitions, similar to Java interfaces or C++ forward declarations. This module has no other dependencies inside TensorFlow, so any other internal module can depend on it to ensure interoperability without the risk of creating circular dependencies. These definitions can also be used by external users, for example in pytype annotations. The RFC focuses on the Python API, however the design should be reviewed with cross-language consistency in mind. + ## Motivation **Interoperability and composability**. A set of standard types that formalize an interface and decouples it from implementation ensures composability between components, especially when multiple implementations are involved. @@ -32,6 +33,7 @@ Developers of modules internal to TensorFlow can use this module to avoid creati ## Design Proposal ### The `tf.types` Namespace / Module + All the declarations exposed under the `tf.types` namespace reside in the `python/types/*.py` module. These are [abstract base classes](https://docs.python.org/3.7/library/abc.html) with a bare minimum of method definitions and minimal or no implementation, which serve to formalize and document the contract of common types such as `Tensor`, `Variable`, etc. These definitions may be used as PEP 484 type hints, although in some cases they may be type- or shape- erased (for example, `tf.types.Tensor` may not necessarily be parametrized by `dtype` or `shape`). Note however that designs which parametrize on shape do exist, see for instance [tensorflow#31579](https://github.com/tensorflow/tensorflow/issues/31579). @@ -39,6 +41,7 @@ These definitions may be used as PEP 484 type hints, although in some cases they The type definitions are consistent with standard Python [subtyping mechanics](https://docs.python.org/3.8/library/typing.html#nominal-vs-structural-subtyping) such as instance checks or protocols (in versions prior to Python 3.8, it is difficult to simultaneously support both). ### General Principles + This module should not contain any implementation code. An advantage of that is that users exploring the implementation of specific types will not need to inspect this module. However, users who do not wish to inspect the code may visit the documentation of these generic types to better understand specifically what are the concrete subclasses of this type expected to do. The `tf.types` module may depend on external packages (such as `numpy`) _strictly for the purpose of defining type annotations and documentation_. No dependencies to other TensorFlow interfaces are allowed. Any dependencies on external packages which themselves depend on TensorFlow are expressly forbidden. @@ -115,6 +118,7 @@ Note that `Protocol` subtypes require [@runtime_checkable](https://www.python.or Although this RFC proposes the deprecation of `register_tensor_conversion_function`, it does not set a timeline for removing it. It remains an open question whether interim support for type annotations should be added to `register_tensor_conversion_function`. ### Support for `tf.function`'s `input_signature` + The type system listed here can be expanded to allow input signatures using type annotations, see for instance [this thread](https://github.com/tensorflow/tensorflow/issues/31579). Presently, the [input_signature](https://www.tensorflow.org/api_docs/python/tf/function) optional mechanism uses [tf.TensorSpec](https://www.tensorflow.org/api_docs/python/tf/TensorSpec) to describe the function arguments: @@ -152,6 +156,7 @@ In the long term, this RFC recommends that type annotations fully replace the `i Internally. such type annotations will still be represented as `tf.TypeSpec` objects, ensuring backward compatbility. ### Initial Type Hierarchy + TensorFlow generally adopts an incremental development method. This RFC aims to remain consistent with that. Below are listed the major types presently used in TensorFlow. All types included in this list are subject to [normal compatibility rules](https://www.tensorflow.org/guide/versions), so they are unlikely to change in the future. It is therefore preferable to maintain a strict minimum of orthogonal declarations and carefully vet any additions. @@ -224,35 +229,44 @@ Example graph code: It is not fully equivalent with `typing.Optional`, as TensorFlow has no explicit type or value for `None`. ### Alternatives Considered + * N/A ### Performance Implications + * There is a potential performance concern if using `abc` for the abstract base types, which are about an order of magnitude slower for `isinstance` checks. The cost of `isinstance` may be non-negligible for eager execution or scaling to large graphs. In such cases, we may want to avoid using `abc`. See https://github.com/tensorflow/community/pull/208#discussion_r382494902. ### Dependencies + * None, by definition. ### Engineering Impact + * Engineering impact: Separate interfaces allow for faster loading times by reducing coupling between modules. * Maintenance: Minimal maintenance overhead since there is no functionality involved. The TensorFlow team and contributors will maintain the documentation up to date. Changes should be reviewed and approved by the TensorFlow team leads. ### Platforms and Environments + * Platforms: Python only, in the first stage. However, the type system should be aligned as much as possible with the core types in the TensorFlow runtime, and be language-independent as much as possible. * Execution environments: The type system is independent of platform. This also implies that no platform-specific types (such as `TPUTensor`) exist. ### Best Practices + * This set of type definitions support the acyclic dependencies principle, by requiring that implementations avoid lateral dependencies (e.g. with a linter rule). ### Tutorials and Examples + * As the design matures, we plan to showcase libraries that leverage this pattern. * Type annotations will be included in existing tutorials as definitions become final. ### Compatibility + * New minor version. Existing classes (`tf.Tensor`) will become subclasses of the new type interfaces. * Most subcomponents of TF (Lite, distributed, function, SavedModel) will depend on this new module, although their functionality is not impacted. * Libraries which depend on TensorFlow are encouraged to refer to `tf.types` definitions, rather than the concrete implementations for better future compatibility. ### User Impact + * Users will see a new `tf.types` module, that may be referenced from documentation and type annotations. From cbe5eafe341cc8780cf9f003d58627f79b8a00b3 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Fri, 20 Mar 2020 09:11:52 -0400 Subject: [PATCH 254/365] Draft guidance for adding new types --- rfcs/20200211-tf-types.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index ea77eeab6..c476296b4 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -209,7 +209,22 @@ Many of these are expected to be required when breaking the cyclic dependencies * Low-level execution primitives * `Graph` - GraphDef/IR program * `FunctionGraph` - IR of a single concrete function - + +#### Adding new types + +This module may contain public symbols, exported using `@tf_export`, and private (unexported) symbols. Private symbols are reserved exclusively for internal submodules. Only public types are subject to the normal compatibility guarantees. + +Private types should only be added here if more than one submodule requires them. + +Public types represent established, well-known types that are critical to the TensorFlow API. They may only be added with API owners approval. In general, a type should be thoroughly scrutinized before being made public. Prefer to err on the side of keeping it private, when in doubt. Ideally, new public types should be introduced using the RFC process. + +Use the following guidance when adding a new definition to `tf.types`: + * has at least two concrete implementations, and at least one is part of the core TensorFlow API + * represents a well-established programming abstraction (e.g. list, map) + * does not overlap with existing definitions + * is consistent with existing definitions + * is compatible with all applicable core APIs + #### Detailed notes ##### Optional From b8aae737fe809d0f33acb3129dab8a900be87ac3 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Fri, 20 Mar 2020 09:17:54 -0400 Subject: [PATCH 255/365] Minor edit --- rfcs/20200211-tf-types.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index c476296b4..6bd8f9bf0 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -218,9 +218,9 @@ Private types should only be added here if more than one submodule requires them Public types represent established, well-known types that are critical to the TensorFlow API. They may only be added with API owners approval. In general, a type should be thoroughly scrutinized before being made public. Prefer to err on the side of keeping it private, when in doubt. Ideally, new public types should be introduced using the RFC process. -Use the following guidance when adding a new definition to `tf.types`: +A good candidate for a public `tf.types` definition meets the following criteria: * has at least two concrete implementations, and at least one is part of the core TensorFlow API - * represents a well-established programming abstraction (e.g. list, map) + * represents a well-established programming abstraction (e.g. list, map, object) * does not overlap with existing definitions * is consistent with existing definitions * is compatible with all applicable core APIs From e7b0fef6a5cf8d5b7d6861c1ebdcb25187080656 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Fri, 20 Mar 2020 19:26:32 -0400 Subject: [PATCH 256/365] Use a proper example for type annotations --- rfcs/20200211-tf-types.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index 6bd8f9bf0..561d55bda 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -148,8 +148,10 @@ In such cases, `tf.function` is expected to verify that the type annotation matc In the long term, this RFC recommends that type annotations fully replace the `input_signature`, so far as the Python type annotation system allows it: ``` +>>> class BatchSize(Dimension): +... value = 32 >>> @function -... def f(x: Tensor[int32, [3]]): +... def f(x: Tensor[Int32, Shape1D[BatchSize]]): ... ... ``` From 8797e7394d7e996aee01e8e6c3fc73d7c1899b89 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Fri, 20 Mar 2020 19:29:15 -0400 Subject: [PATCH 257/365] Update 20200211-tf-types.md --- rfcs/20200211-tf-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index 561d55bda..d5fc17926 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -149,7 +149,7 @@ In the long term, this RFC recommends that type annotations fully replace the `i ``` >>> class BatchSize(Dimension): -... value = 32 +... value = 32 >>> @function ... def f(x: Tensor[Int32, Shape1D[BatchSize]]): ... ... From 882dbb6d8dfacfbbc1a4f89bc9e21ee7d7053f68 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Fri, 20 Mar 2020 19:30:00 -0400 Subject: [PATCH 258/365] Fix typo. --- rfcs/20200211-tf-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index d5fc17926..19afff3f2 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -155,7 +155,7 @@ In the long term, this RFC recommends that type annotations fully replace the `i ... ... ``` -Internally. such type annotations will still be represented as `tf.TypeSpec` objects, ensuring backward compatbility. +Internally, such type annotations will still be represented as `tf.TypeSpec` objects, ensuring backward compatbility. ### Initial Type Hierarchy From 97d5d8db182091c8570a03a893f2b3dd81119025 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Sat, 21 Mar 2020 13:58:26 -0400 Subject: [PATCH 259/365] Clarify that example is non-prescriptive --- rfcs/20200211-tf-types.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index 19afff3f2..c686a2375 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -119,7 +119,7 @@ Although this RFC proposes the deprecation of `register_tensor_conversion_functi ### Support for `tf.function`'s `input_signature` -The type system listed here can be expanded to allow input signatures using type annotations, see for instance [this thread](https://github.com/tensorflow/tensorflow/issues/31579). +The type system listed here can be expanded to allow input signatures using type annotations, see for instance [`](https://github.com/tensorflow/tensorflow/issues/31579). Presently, the [input_signature](https://www.tensorflow.org/api_docs/python/tf/function) optional mechanism uses [tf.TensorSpec](https://www.tensorflow.org/api_docs/python/tf/TensorSpec) to describe the function arguments: @@ -145,7 +145,9 @@ It is expected however that some or all of this information will be repeated by In such cases, `tf.function` is expected to verify that the type annotation matches the `input_signature`. -In the long term, this RFC recommends that type annotations fully replace the `input_signature`, so far as the Python type annotation system allows it: +In the long term, this RFC recommends that type annotations fully replace the `input_signature`, so far as the Python type annotation system allows it. This RFC does not prescribe a scheme for such type annotations; the implementation should make best use of the available Python capabilities and standards. + +An example of such annotations could be: ``` >>> class BatchSize(Dimension): From e86de57bb43a9bfc7bd28cd1567d3d6d56f72285 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Sat, 21 Mar 2020 13:58:43 -0400 Subject: [PATCH 260/365] Update status to proposed --- rfcs/20200211-tf-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index c686a2375..f8717ff4f 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -1,6 +1,6 @@ # TensorFlow Canonical Type System -| Status | WIP | +| Status | Proposed | :-------------- |:---------------------------------------------------- | | **RFC #** | [208](https://github.com/tensorflow/community/pull/208) | **Author(s)** | Dan Moldovan (mdan@google.com) | From fac8975a4bc2f1f2185bc1e5824c5ecb33e780a0 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Sat, 21 Mar 2020 13:59:08 -0400 Subject: [PATCH 261/365] Update time stamp --- rfcs/20200211-tf-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index f8717ff4f..ed2251c5f 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -5,7 +5,7 @@ | **RFC #** | [208](https://github.com/tensorflow/community/pull/208) | **Author(s)** | Dan Moldovan (mdan@google.com) | | **Sponsor** | Gaurav Jain (gjn@google.com) | -| **Updated** | 2020-03-04 | +| **Updated** | 2020-03-21 | ## Objective From 9c2f37f59e8069506e0d4614c6f9ebaef7c2b86a Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Sat, 21 Mar 2020 14:00:49 -0400 Subject: [PATCH 262/365] Fix typo --- rfcs/20200211-tf-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index ed2251c5f..766290fb4 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -119,7 +119,7 @@ Although this RFC proposes the deprecation of `register_tensor_conversion_functi ### Support for `tf.function`'s `input_signature` -The type system listed here can be expanded to allow input signatures using type annotations, see for instance [`](https://github.com/tensorflow/tensorflow/issues/31579). +The type system listed here can be expanded to allow input signatures using type annotations, see for instance [this thread](https://github.com/tensorflow/tensorflow/issues/31579). Presently, the [input_signature](https://www.tensorflow.org/api_docs/python/tf/function) optional mechanism uses [tf.TensorSpec](https://www.tensorflow.org/api_docs/python/tf/TensorSpec) to describe the function arguments: From 8e47bc13bc5f96151ca5c0db2d1cd541141c9607 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Sat, 21 Mar 2020 14:04:04 -0400 Subject: [PATCH 263/365] Slight update to example --- rfcs/20200211-tf-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index 766290fb4..bf8b29d86 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -153,7 +153,7 @@ An example of such annotations could be: >>> class BatchSize(Dimension): ... value = 32 >>> @function -... def f(x: Tensor[Int32, Shape1D[BatchSize]]): +... def f(x: Tensor[Int32, Shape2D[BatchSize, DynamicSize, DynamicSize]]): ... ... ``` From bc33a1aabce6483f9a8de3f95089bdf771a7807d Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Tue, 24 Mar 2020 10:47:17 -0400 Subject: [PATCH 264/365] Add link to an example --- rfcs/20200211-tf-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index bf8b29d86..05eee03a4 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -16,7 +16,7 @@ The RFC focuses on the Python API, however the design should be reviewed with cr **Interoperability and composability**. A set of standard types that formalize an interface and decouples it from implementation ensures composability between components, especially when multiple implementations are involved. -**Supports the [acyclic dependencies principle](https://en.wikipedia.org/wiki/Acyclic_dependencies_principle)**. In many instances, circular dependencies are caused between low-level complex components that need to compose (e.g. autograph needs to recognize datasets, and datasets need to use autograph). Interface extraction is a common pattern for breaking such cycles. +**Supports the [acyclic dependencies principle](https://en.wikipedia.org/wiki/Acyclic_dependencies_principle)**. In many instances, circular dependencies are caused between low-level complex components that need to compose (in this [example](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/autograph/operators/control_flow.py#L361), AutoGraph needs to recognize datasets, and datasets need to use AutoGraph). Interface extraction is a common pattern for breaking such cycles. **Supports pytype**. A set of static types that is consistent under Python’s `isinstance`/`issubclass` is required to support [PEP-484 type annotations](https://www.python.org/dev/peps/pep-0484/) in TensorFlow. This module can serve as the basis for that. From af51680b9daf5292fe7582047408aabca9a825ad Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Tue, 24 Mar 2020 19:00:34 -0400 Subject: [PATCH 265/365] Add design review notes --- rfcs/20200211-tf-types.md | 57 ++++++++++++++++++++++++++++++++++----- 1 file changed, 50 insertions(+), 7 deletions(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index 05eee03a4..f36afee11 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -288,10 +288,53 @@ It is not fully equivalent with `typing.Optional`, as TensorFlow has no explicit * Users will see a new `tf.types` module, that may be referenced from documentation and type annotations. - -## Questions and Discussion Topics - -* Whether to create entries for well-known types already exported like `tf.Tensor` and `tf.Variable`. Internally, superclasses for these types will be created, but the existing `tf.Tensor` can just point to those to avoid unnecessary duplication. -* Single flat vs. hierarchical namespace - for example: `tf.types.distribute.Dataset`, or `tf.types.DistributedDataset`? -* The inclusion of more specialized `Graph` types, such as `FuncGraph`, `CondBranchFuncGraph`, `WhileCondFuncGraph`, `WhileBodyFuncGraph`. It’s unclear where these should be defined, however internal submodules needs these subtypes to maintain acyclic dependencies. -* `register_tensor_conversion_function` - should it support static type verifications (e.g. using the [ABCMeta.register](https://docs.python.org/3/library/abc.html#abc.ABCMeta.register) mechanism)? +## Design Review Notes + +Changes since initial PR: + * New section discusses overlap of type system with existing register tensor conversion function: + * TLDR: The python protocol mechanism is much more compatible with type annotations compared to register_tensor_conversion_function. + * Python Protocol works with type annotations. + * We should be able to deprecate `register_tensor_conversion_function`. + * Protocol support for type annotations introduced with typing in 3.8, backported to 3.x except 3.5, so type annotations will not work correctly in 3.5. + * New section discussing relationship with TensorSpec/TypeSpec/input signatures: + * TLDR: Will continue to have input_signature in conjunction with function type annotations. A complete design for annotation-based input_signature is future work and currently out of scope. + * We will need to verify that input_signarture agrees with type annotations when both are present. + * There is concern about having two ways of expressing signatures (type annotations and input_signature). + * There were many questions around the best way to represent known and unknown shapes, interaction with concrete functions, the concrete type of the result of tf.function, etc. A few points raised: + * `input_signature` cannot be recognized as type annotation. + * Supporting parameterized types with values as required for shapes is tricky. + * Dimension values can be known or not known in today’s implementation; `Literal` may be able specify dimension sizes, but that needs to be verified. + * Supporting meta functions where signature is an argument still requires the input signature mechanism (e.g. get_concrete_function). + * If we add this to `tf.function`, should the function take a signature argument that looks like the type annotation? Unclear whether that’s possible or makes sense. + * Will need to support both at the same time at least for a while. + * If both are present then they will likely need to be merged to the most specific common signature. + * There is a concern about whether to choose specific or generic shapes when the type annotation is incomplete. + * Union types will also need to instantiate multiple concrete functions (like `tf.function` does today). + * A proposal was to allow a function with types to be passed to tf.function as long as you don’t pass a `input_signature`. +This also applies to `tf.map_fn` and other APIs, not just `tf.function`. + * Another question was about using type annotations to parametrize structures of types, e.g. where output has the same structure but different types. This may be beyond the expressivity of the current type annotation system. + * New section containing guidance on adding new public generic types: + * TLDR: The RFC only adds a very small number of types, a complete type system is out of scope. + * There is some concern about the graph-vs-eager distinction when composing `Tensor` objects, e.g. with `CompositeTensor`. + * For now we’ll try to avoid exporting specific types for Graph vs. Eager until the `CompositeTensor` issue is resolved. Most likely we’ll need some type erasure. + * RFC proposes guidance for adding new types in the future. + * Other changes: + * Added mention on `Tensor`-like types + * List of lists can be converted to tensor but only if they are not ragged. The type annotation system will not enforce that. + * Clarified difference between `tf.Optional` and `typing.Optional`. + * Added clarifications that the spirit of RFC is to be compatible with Python standards and support all python static checkers, not just pytype. + * `isinstance` is not necessary the recommended mechanism, but the type system should be compatible with it and other Python mechanisms + * Discussion on open questions + * Having multiple type definitions (e.g. `tf.Tensor`, `tf.types.Tensor`) can be confusing to users: + * We want to try to expose only one type. + * The preference is to only expose the generic type, but in some cases the specialized one is already exported. In some cases, like `tf.Tensor` we can make the switch. + * In other cases, like `tf.Variable`, we can’t because `Variable` objects are instantiated directly. + * So we’ll punt on `tf.Variable` for now. + * Flat vs. hierarchical namespace: + * Does not need to be answered now, since the initial number of types is small. + * A good default is to mimic the existing namespace structure (e.g. for datasets use `tf.types.data.Dataset`) + * Should we include highly specialized types? e.g. `FuncGraph` classes for cond/while branches: + * They may be needed for Keras. + * In general, if an external library needs a type that’s an indication that it might be useful to export that type. + * `isinstance` support for `register_tensor_conversion_function` using e.g. ABC magics. + * Decision made to accelerate the deprecation of register_tensor_conversion_function instead. From c8816c42da44aa7b5b9056c0a8d4542a3e43c44b Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Tue, 24 Mar 2020 19:02:32 -0400 Subject: [PATCH 266/365] Fix indentation in notes --- rfcs/20200211-tf-types.md | 82 +++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index f36afee11..996690188 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -292,49 +292,49 @@ It is not fully equivalent with `typing.Optional`, as TensorFlow has no explicit Changes since initial PR: * New section discusses overlap of type system with existing register tensor conversion function: - * TLDR: The python protocol mechanism is much more compatible with type annotations compared to register_tensor_conversion_function. - * Python Protocol works with type annotations. - * We should be able to deprecate `register_tensor_conversion_function`. - * Protocol support for type annotations introduced with typing in 3.8, backported to 3.x except 3.5, so type annotations will not work correctly in 3.5. + * TLDR: The python protocol mechanism is much more compatible with type annotations compared to register_tensor_conversion_function. + * Python Protocol works with type annotations. + * We should be able to deprecate `register_tensor_conversion_function`. + * Protocol support for type annotations introduced with typing in 3.8, backported to 3.x except 3.5, so type annotations will not work correctly in 3.5. * New section discussing relationship with TensorSpec/TypeSpec/input signatures: - * TLDR: Will continue to have input_signature in conjunction with function type annotations. A complete design for annotation-based input_signature is future work and currently out of scope. - * We will need to verify that input_signarture agrees with type annotations when both are present. - * There is concern about having two ways of expressing signatures (type annotations and input_signature). - * There were many questions around the best way to represent known and unknown shapes, interaction with concrete functions, the concrete type of the result of tf.function, etc. A few points raised: - * `input_signature` cannot be recognized as type annotation. - * Supporting parameterized types with values as required for shapes is tricky. - * Dimension values can be known or not known in today’s implementation; `Literal` may be able specify dimension sizes, but that needs to be verified. - * Supporting meta functions where signature is an argument still requires the input signature mechanism (e.g. get_concrete_function). - * If we add this to `tf.function`, should the function take a signature argument that looks like the type annotation? Unclear whether that’s possible or makes sense. - * Will need to support both at the same time at least for a while. - * If both are present then they will likely need to be merged to the most specific common signature. - * There is a concern about whether to choose specific or generic shapes when the type annotation is incomplete. - * Union types will also need to instantiate multiple concrete functions (like `tf.function` does today). - * A proposal was to allow a function with types to be passed to tf.function as long as you don’t pass a `input_signature`. + * TLDR: Will continue to have input_signature in conjunction with function type annotations. A complete design for annotation-based input_signature is future work and currently out of scope. + * We will need to verify that input_signarture agrees with type annotations when both are present. + * There is concern about having two ways of expressing signatures (type annotations and input_signature). + * There were many questions around the best way to represent known and unknown shapes, interaction with concrete functions, the concrete type of the result of tf.function, etc. A few points raised: + * `input_signature` cannot be recognized as type annotation. + * Supporting parameterized types with values as required for shapes is tricky. + * Dimension values can be known or not known in today’s implementation; `Literal` may be able specify dimension sizes, but that needs to be verified. + * Supporting meta functions where signature is an argument still requires the input signature mechanism (e.g. get_concrete_function). + * If we add this to `tf.function`, should the function take a signature argument that looks like the type annotation? Unclear whether that’s possible or makes sense. + * Will need to support both at the same time at least for a while. + * If both are present then they will likely need to be merged to the most specific common signature. + * There is a concern about whether to choose specific or generic shapes when the type annotation is incomplete. + * Union types will also need to instantiate multiple concrete functions (like `tf.function` does today). + * A proposal was to allow a function with types to be passed to tf.function as long as you don’t pass a `input_signature`. This also applies to `tf.map_fn` and other APIs, not just `tf.function`. - * Another question was about using type annotations to parametrize structures of types, e.g. where output has the same structure but different types. This may be beyond the expressivity of the current type annotation system. + * Another question was about using type annotations to parametrize structures of types, e.g. where output has the same structure but different types. This may be beyond the expressivity of the current type annotation system. * New section containing guidance on adding new public generic types: - * TLDR: The RFC only adds a very small number of types, a complete type system is out of scope. - * There is some concern about the graph-vs-eager distinction when composing `Tensor` objects, e.g. with `CompositeTensor`. - * For now we’ll try to avoid exporting specific types for Graph vs. Eager until the `CompositeTensor` issue is resolved. Most likely we’ll need some type erasure. - * RFC proposes guidance for adding new types in the future. + * TLDR: The RFC only adds a very small number of types, a complete type system is out of scope. + * There is some concern about the graph-vs-eager distinction when composing `Tensor` objects, e.g. with `CompositeTensor`. + * For now we’ll try to avoid exporting specific types for Graph vs. Eager until the `CompositeTensor` issue is resolved. Most likely we’ll need some type erasure. + * RFC proposes guidance for adding new types in the future. * Other changes: - * Added mention on `Tensor`-like types - * List of lists can be converted to tensor but only if they are not ragged. The type annotation system will not enforce that. - * Clarified difference between `tf.Optional` and `typing.Optional`. - * Added clarifications that the spirit of RFC is to be compatible with Python standards and support all python static checkers, not just pytype. - * `isinstance` is not necessary the recommended mechanism, but the type system should be compatible with it and other Python mechanisms + * Added mention on `Tensor`-like types + * List of lists can be converted to tensor but only if they are not ragged. The type annotation system will not enforce that. + * Clarified difference between `tf.Optional` and `typing.Optional`. + * Added clarifications that the spirit of RFC is to be compatible with Python standards and support all python static checkers, not just pytype. + * `isinstance` is not necessary the recommended mechanism, but the type system should be compatible with it and other Python mechanisms * Discussion on open questions - * Having multiple type definitions (e.g. `tf.Tensor`, `tf.types.Tensor`) can be confusing to users: - * We want to try to expose only one type. - * The preference is to only expose the generic type, but in some cases the specialized one is already exported. In some cases, like `tf.Tensor` we can make the switch. - * In other cases, like `tf.Variable`, we can’t because `Variable` objects are instantiated directly. - * So we’ll punt on `tf.Variable` for now. - * Flat vs. hierarchical namespace: - * Does not need to be answered now, since the initial number of types is small. - * A good default is to mimic the existing namespace structure (e.g. for datasets use `tf.types.data.Dataset`) - * Should we include highly specialized types? e.g. `FuncGraph` classes for cond/while branches: - * They may be needed for Keras. - * In general, if an external library needs a type that’s an indication that it might be useful to export that type. - * `isinstance` support for `register_tensor_conversion_function` using e.g. ABC magics. - * Decision made to accelerate the deprecation of register_tensor_conversion_function instead. + * Having multiple type definitions (e.g. `tf.Tensor`, `tf.types.Tensor`) can be confusing to users: + * We want to try to expose only one type. + * The preference is to only expose the generic type, but in some cases the specialized one is already exported. In some cases, like `tf.Tensor` we can make the switch. + * In other cases, like `tf.Variable`, we can’t because `Variable` objects are instantiated directly. + * So we’ll punt on `tf.Variable` for now. + * Flat vs. hierarchical namespace: + * Does not need to be answered now, since the initial number of types is small. + * A good default is to mimic the existing namespace structure (e.g. for datasets use `tf.types.data.Dataset`) + * Should we include highly specialized types? e.g. `FuncGraph` classes for cond/while branches: + * They may be needed for Keras. + * In general, if an external library needs a type that’s an indication that it might be useful to export that type. + * `isinstance` support for `register_tensor_conversion_function` using e.g. ABC magics. + * Decision made to accelerate the deprecation of register_tensor_conversion_function instead. From 327ceda727a40a83a0981dfdae46db8f3b6392c7 Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Tue, 24 Mar 2020 19:07:25 -0400 Subject: [PATCH 267/365] Minor updates following design review --- rfcs/20200211-tf-types.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index 996690188..e2688fc5d 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -119,6 +119,8 @@ Although this RFC proposes the deprecation of `register_tensor_conversion_functi ### Support for `tf.function`'s `input_signature` +Note: this section is non-normative, and only establishes direction for future work. + The type system listed here can be expanded to allow input signatures using type annotations, see for instance [this thread](https://github.com/tensorflow/tensorflow/issues/31579). Presently, the [input_signature](https://www.tensorflow.org/api_docs/python/tf/function) optional mechanism uses [tf.TensorSpec](https://www.tensorflow.org/api_docs/python/tf/TensorSpec) to describe the function arguments: @@ -157,7 +159,7 @@ An example of such annotations could be: ... ... ``` -Internally, such type annotations will still be represented as `tf.TypeSpec` objects, ensuring backward compatbility. +Internally, such type annotations should still be represented as `tf.TypeSpec` objects, ensuring backward compatbility. ### Initial Type Hierarchy @@ -178,20 +180,21 @@ These types will be added with the initial creation of the `tf.types` namespace. * `DType` * `Shape` * `Tensor` - generic dense tensor - - * `Symbol` - the regular graph tensor - * `Value` - eager tensors - * `TensorLike` - any type that can be implicitly converted to `Tensor` (see for example https://github.com/tensorflow/addons/blob/master/tensorflow_addons/utils/types.py) - * `Variable` - #### Potential types for subsequent implementation These types are raised for discussion by this RFC, but are not part of the original implementation, unless they are strictly required for consistency (to be determined during the initial submission). Many of these are expected to be required when breaking the cyclic dependencies that currently exist between submodules. However, it is hoped that opening them up for discussion early can help create a more coherent type system. +* Core types + + * Tensor specializations + * `Symbol` - the regular graph tensor + * `Value` - eager tensors + * `Variable` + * Container types * `Composite` - low-level static structure (opaque to GraphDef/IR) @@ -220,7 +223,7 @@ This module may contain public symbols, exported using `@tf_export`, and private Private types should only be added here if more than one submodule requires them. -Public types represent established, well-known types that are critical to the TensorFlow API. They may only be added with API owners approval. In general, a type should be thoroughly scrutinized before being made public. Prefer to err on the side of keeping it private, when in doubt. Ideally, new public types should be introduced using the RFC process. +Public types represent established, well-known types that are critical to the TensorFlow API. They may only be added with API owners approval. In general, a type should be thoroughly scrutinized before being made public. Prefer to err on the side of keeping it private, when in doubt. Ideally, new public types should be introduced using the RFC process. Using `experimental` to pilot new types before a complete implementation is encouraged. A good candidate for a public `tf.types` definition meets the following criteria: * has at least two concrete implementations, and at least one is part of the core TensorFlow API From aeff1248e2ad28e3b710dc0eecd4e19ffa84a37e Mon Sep 17 00:00:00 2001 From: Dan Moldovan Date: Tue, 24 Mar 2020 19:08:20 -0400 Subject: [PATCH 268/365] Update status --- rfcs/20200211-tf-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200211-tf-types.md b/rfcs/20200211-tf-types.md index e2688fc5d..ba027eeb2 100644 --- a/rfcs/20200211-tf-types.md +++ b/rfcs/20200211-tf-types.md @@ -1,6 +1,6 @@ # TensorFlow Canonical Type System -| Status | Proposed | +| Status | Accepted | :-------------- |:---------------------------------------------------- | | **RFC #** | [208](https://github.com/tensorflow/community/pull/208) | **Author(s)** | Dan Moldovan (mdan@google.com) | From 14b28d6dbf2d41864b8a347859a05278ec04dcb8 Mon Sep 17 00:00:00 2001 From: Jiri Simsa Date: Wed, 25 Mar 2020 13:43:08 -0700 Subject: [PATCH 269/365] Optional arguments with defaults. --- governance/api-reviews.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/governance/api-reviews.md b/governance/api-reviews.md index 61dc3e64e..3b8cddc4c 100644 --- a/governance/api-reviews.md +++ b/governance/api-reviews.md @@ -158,6 +158,16 @@ does not give license to new APIs to be bad in the same way. Improvement must be balanced with consistency, however, and sometimes it’s okay to carry small imperfections into new APIs for the sake of consistency with old APIs. +### Optional arguments with default values + +Many APIs have optional arguments with a default value. Our recommendation is to +use `None` as the default value of any optional arguments and have the +implementation be responsible for handnling it as opposed to using a default +value that directly represents the behavior (e.g. `aggregate='sum'`). The +latter prevents the implementation from distinguishing between the caller not +setting the argument vs. the caller setting the argument to the default value, +which may be needed when the default behavior is changing. + ### Does it belong in TF at all? As TF evolves there’s a tendency to put everything inside of it, with costs From 2a2ca08a5cdf354e2c96018b4681003b3cb82eec Mon Sep 17 00:00:00 2001 From: Jiri Simsa Date: Wed, 25 Mar 2020 13:58:19 -0700 Subject: [PATCH 270/365] Fix typo. --- governance/api-reviews.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/governance/api-reviews.md b/governance/api-reviews.md index 3b8cddc4c..d9ab08766 100644 --- a/governance/api-reviews.md +++ b/governance/api-reviews.md @@ -162,7 +162,7 @@ imperfections into new APIs for the sake of consistency with old APIs. Many APIs have optional arguments with a default value. Our recommendation is to use `None` as the default value of any optional arguments and have the -implementation be responsible for handnling it as opposed to using a default +implementation be responsible for handling it as opposed to using a default value that directly represents the behavior (e.g. `aggregate='sum'`). The latter prevents the implementation from distinguishing between the caller not setting the argument vs. the caller setting the argument to the default value, From d62848650f6526357eb2f4267bdb2608bedd52a9 Mon Sep 17 00:00:00 2001 From: Sean Morgan Date: Mon, 30 Mar 2020 13:11:42 -0400 Subject: [PATCH 271/365] * Updated procedure (#203) --- sigs/addons/RELEASE.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/sigs/addons/RELEASE.md b/sigs/addons/RELEASE.md index 79c241992..02973bb1b 100644 --- a/sigs/addons/RELEASE.md +++ b/sigs/addons/RELEASE.md @@ -4,15 +4,10 @@ SIG Addons release process consists of the folowing steps: 1. Create new rX.X branch on tensorflow/addons 2. Create and merge a new PR into the release branch * Set the correct version and suffix in [version.py](https://github.com/tensorflow/addons/blob/master/tensorflow_addons/version.py) - * Freeze the tensorflow version in - - [setup.py](https://github.com/tensorflow/addons/blob/master/setup.py) - - [requirements.txt](https://github.com/tensorflow/addons/blob/master/requirements.txt) - * Remove `--nightly` flag from [release scripts](https://github.com/tensorflow/addons/tree/master/tools/ci_build/builds) -3. Trigger [Travis build](https://travis-ci.org/tensorflow/addons) - * This will test and build linux+macos wheels and publish to PyPi -4. Publish and tag a [release on Github](https://github.com/tensorflow/addons/releases) +3. Publish and tag a [release on Github](https://github.com/tensorflow/addons/releases) * Add updates for new features, enhancements, bug fixes * Add contributors using `git shortlog ..HEAD -s` + * **NOTE: This will trigger a GitHub action to release the wheels on PyPi** ## SIG Addons Release Team @@ -20,3 +15,4 @@ SIG Addons release process consists of the folowing steps: Current Release Team: - Sean Morgan - GitHub: [@seanpmorgan](https://github.com/seanpmorgan) - PyPI: [seanmorgan](https://pypi.org/user/seanmorgan/) - Yan Facai(颜发才) - GitHub: [@facaiy](https://github.com/facaiy) - PyPI: [facaiy](https://pypi.org/user/facaiy/) + \ No newline at end of file From bdc6dad343832d7292a7e7459ed638954f09f47e Mon Sep 17 00:00:00 2001 From: Yuefeng Zhou Date: Mon, 30 Mar 2020 23:15:52 -0700 Subject: [PATCH 272/365] Update 20200306-single-client-parameter-server.md --- rfcs/20200306-single-client-parameter-server.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rfcs/20200306-single-client-parameter-server.md b/rfcs/20200306-single-client-parameter-server.md index 163752d40..2816894eb 100644 --- a/rfcs/20200306-single-client-parameter-server.md +++ b/rfcs/20200306-single-client-parameter-server.md @@ -289,7 +289,7 @@ Keeping track of resources and rebuilding them will be achieved depending how us * we will capture the creation of worker-local variables via variable creator scopes. * in the future we will provide users an API to create worker-local resources. We will capture these resources in the API. -If users create iterators or other resources inside a function but don’t expose them as outputs, we will not rebuild them. +If users create iterators or other resources inside a function but don’t expose them as outputs, we don't need to rebuild them. #### The Unknown of Scheduled Functions From c0929ea1c4605eb16f7843e30b5aa7bce02ecb50 Mon Sep 17 00:00:00 2001 From: Alex Passos Date: Mon, 16 Mar 2020 10:25:50 -0700 Subject: [PATCH 273/365] experimental API policy --- governance/api-reviews.md | 53 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/governance/api-reviews.md b/governance/api-reviews.md index d9ab08766..d8921fedf 100644 --- a/governance/api-reviews.md +++ b/governance/api-reviews.md @@ -210,3 +210,56 @@ When adding new ops, look for: it CPU, GPU, XLA, TPU, etc) and prefer to have at least a plan for writing device-agnostic code - should the python layer for this operation support raggedtensor/sparsetensor? + +## Experimental APIs + +Experimental APIs are APIs which have the word 'experimental' somewhere in their +name; for example `tf.experimental.foo`, or `tf.foo.experimental.Bar`, or +`tf.foo(experimental_bar=True)` or `tf.Foo().experimental_bar()`. + +Experimental APIs are APIs intended to be added to TensorFlow as-is, but which +we reserve the right to change in backwards-incompatible ways if we have +to. + +No temporary APIs should be added to experimental (i.e. "we just need this until +certain bugfix or certain new feature becomes available" is not a valid reason +to add an API with experimental in the name.) + +No API with known deficiencies should be added to experimental. Experimental +APIs should, to the best of our knowledge, not be expected to change in a known +way (no argument with a known bad name, etc). + +The same amount of due diligence required for a real API is required for an +experimental API: this means tests, benchmarks, documentation, end-to-end +examples, etc + +Experimental APIs are not a license to break users. This means: + 1. we do not remove experimental APIs which are widely used without an effort + to help migrate users away + 2. experimental APIs are not removed without warning and don't have + backwards-incompatible changes made to them without warning (the warning can be + a deprecation on version 2.x and removal on 2.x+ 1, but plain removal on 2.x + with no notice on 2.x-1 is not ok) + +Small changes which are mentioned in relnotes and have obvious fixes might be +made (for example if adding a new argument to a long argument list and we +believe there are no pass-by-position users we might allow the new argument to +be added to the middle and not the end of the parameter list). + +Large backwards-incompatible changes to experimental APIs still require an +`experimental_foo_v2` or similar backwards-compatible evolution plan to avoid +breaking users of the existing experimental API. + +No API endpoint should stay in experimental forever. If a particular +experimental API hasn't had major changes in two minor releases we should remove +the experimental annotation from the API name or delete it. If we do want to +delete it we need to have a deprecation plan that can migrate all users to some +other API endpoint or composition of existing APIs. + +When removing the experimental annotation we should, if at all possible, allow +escape routes to not break existing code. This means toplevel symbols +`tf.experimental.foo` and methods like `tf.Class.experimental_foo` should get a +deprecation warning on 2.x before deletion on 2.x+1; we should use the +doc_controls decorators to not pollute API docs with deprecated "graduated" +experimental APIs. For experimental function arguments we should consider +catching **kwargs to raise the proper warnings for at least one version. From b27593415f3d3ba2d99ca3e389be0baf54bd3015 Mon Sep 17 00:00:00 2001 From: Alex Passos Date: Mon, 16 Mar 2020 10:30:07 -0700 Subject: [PATCH 274/365] clarifying known deficiency --- governance/api-reviews.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/governance/api-reviews.md b/governance/api-reviews.md index d8921fedf..eab747d4a 100644 --- a/governance/api-reviews.md +++ b/governance/api-reviews.md @@ -227,7 +227,10 @@ to add an API with experimental in the name.) No API with known deficiencies should be added to experimental. Experimental APIs should, to the best of our knowledge, not be expected to change in a known -way (no argument with a known bad name, etc). +way (no argument with a known bad name, etc). Experimental can, however, be used +for APIs which are a work-in-progress: it's fine to add experimental methods to +a base class even if those methods are only implemented on some subclasses as +long as we expect all classes to eventually implement those. The same amount of due diligence required for a real API is required for an experimental API: this means tests, benchmarks, documentation, end-to-end From 6e4cd52ac7740a321eafcdcdcd6c221bdfc83cce Mon Sep 17 00:00:00 2001 From: Alexandre Passos Date: Fri, 20 Mar 2020 10:28:23 -0700 Subject: [PATCH 275/365] Update governance/api-reviews.md Co-Authored-By: Martin Wicke <577277+martinwicke@users.noreply.github.com> --- governance/api-reviews.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/governance/api-reviews.md b/governance/api-reviews.md index eab747d4a..640af8ed2 100644 --- a/governance/api-reviews.md +++ b/governance/api-reviews.md @@ -241,7 +241,7 @@ Experimental APIs are not a license to break users. This means: to help migrate users away 2. experimental APIs are not removed without warning and don't have backwards-incompatible changes made to them without warning (the warning can be - a deprecation on version 2.x and removal on 2.x+ 1, but plain removal on 2.x + a deprecation on version 2.x and removal on 2.x+1, but plain removal on 2.x with no notice on 2.x-1 is not ok) Small changes which are mentioned in relnotes and have obvious fixes might be From cf483b8e80f88875f261dcf3bdc2401336fcb2cd Mon Sep 17 00:00:00 2001 From: Alexandre Passos Date: Fri, 20 Mar 2020 10:28:32 -0700 Subject: [PATCH 276/365] Update governance/api-reviews.md Co-Authored-By: Martin Wicke <577277+martinwicke@users.noreply.github.com> --- governance/api-reviews.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/governance/api-reviews.md b/governance/api-reviews.md index 640af8ed2..be42ad230 100644 --- a/governance/api-reviews.md +++ b/governance/api-reviews.md @@ -265,4 +265,4 @@ escape routes to not break existing code. This means toplevel symbols deprecation warning on 2.x before deletion on 2.x+1; we should use the doc_controls decorators to not pollute API docs with deprecated "graduated" experimental APIs. For experimental function arguments we should consider -catching **kwargs to raise the proper warnings for at least one version. +catching `**kwargs` to raise the proper warnings for at least one version. From 581d21a543283294d6dcca04dffd95bb8c12b66f Mon Sep 17 00:00:00 2001 From: Alex Passos Date: Fri, 20 Mar 2020 13:10:11 -0700 Subject: [PATCH 277/365] clarifications --- governance/api-reviews.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/governance/api-reviews.md b/governance/api-reviews.md index be42ad230..31413fa14 100644 --- a/governance/api-reviews.md +++ b/governance/api-reviews.md @@ -215,7 +215,9 @@ When adding new ops, look for: Experimental APIs are APIs which have the word 'experimental' somewhere in their name; for example `tf.experimental.foo`, or `tf.foo.experimental.Bar`, or -`tf.foo(experimental_bar=True)` or `tf.Foo().experimental_bar()`. +`tf.foo(experimental_bar=True)` or `tf.Foo().experimental_bar()`. We generally +prefer experimental namespaces when possible, so prefer +`tf.foo.experimental.Bar` over `tf.foo.ExperimentalBar`. Experimental APIs are APIs intended to be added to TensorFlow as-is, but which we reserve the right to change in backwards-incompatible ways if we have @@ -246,7 +248,7 @@ Experimental APIs are not a license to break users. This means: Small changes which are mentioned in relnotes and have obvious fixes might be made (for example if adding a new argument to a long argument list and we -believe there are no pass-by-position users we might allow the new argument to +believe there are few pass-by-position users we might allow the new argument to be added to the middle and not the end of the parameter list). Large backwards-incompatible changes to experimental APIs still require an From eb15bc4375d1e7e22ab6c1e4d9e39dc24ca211ca Mon Sep 17 00:00:00 2001 From: Alex Passos Date: Mon, 6 Apr 2020 09:13:02 -0700 Subject: [PATCH 278/365] clarify policy for stuff which keeps changing --- governance/api-reviews.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/governance/api-reviews.md b/governance/api-reviews.md index 31413fa14..03a2dd03f 100644 --- a/governance/api-reviews.md +++ b/governance/api-reviews.md @@ -259,7 +259,9 @@ No API endpoint should stay in experimental forever. If a particular experimental API hasn't had major changes in two minor releases we should remove the experimental annotation from the API name or delete it. If we do want to delete it we need to have a deprecation plan that can migrate all users to some -other API endpoint or composition of existing APIs. +other API endpoint or composition of existing APIs. In rare cases experimental +APIs can continue to be iterated on after many releases (see TPUStrategy); this +only applies for fairly large API surfaces. When removing the experimental annotation we should, if at all possible, allow escape routes to not break existing code. This means toplevel symbols @@ -267,4 +269,6 @@ escape routes to not break existing code. This means toplevel symbols deprecation warning on 2.x before deletion on 2.x+1; we should use the doc_controls decorators to not pollute API docs with deprecated "graduated" experimental APIs. For experimental function arguments we should consider -catching `**kwargs` to raise the proper warnings for at least one version. +catching `**kwargs` to raise the proper warnings for at least one version (note +though that `**kwargs` is generally discouraged from our APIs; we prefer +explicitly named keyword arguments if at all possible). From cd8f9ca36437233568dbd98368479669daf08eb7 Mon Sep 17 00:00:00 2001 From: Alex Passos Date: Mon, 6 Apr 2020 09:14:13 -0700 Subject: [PATCH 279/365] reference experimental section from other places --- governance/api-reviews.md | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/governance/api-reviews.md b/governance/api-reviews.md index 03a2dd03f..bc9fb2fd0 100644 --- a/governance/api-reviews.md +++ b/governance/api-reviews.md @@ -24,8 +24,8 @@ We avoid backwards-incompatible API changes. We also avoid backwards-incompatible behavior changes, such as restricting the set of valid inputs to a function or extending the set of valid outputs of a function. Adding support for previously not supported behavior is okay, as are changes to -explicitly experimental APIs (within reason). When needing to provide a new or -different behavior, we strongly prefer a new version of the API over breaking +explicitly experimental APIs (see section below). When needing to provide a new +or different behavior, we strongly prefer a new version of the API over breaking backwards compatibility. Note that we are free to deprecate APIs; we just cannot break code which relies on their documented behavior. We need to worry about backward compatibility both of our python APIs and of the serialized GraphDefs, @@ -37,15 +37,6 @@ produced by currently correct python code without a three weeks notice. This comes up most frequently when adding new ops, but also applies to non-obvious things such as the graph emitted by gradients or pfor. -Including the name “experimental” in an API endpoint allows you to break -backwards compatibility in the future, as noted above. However, we still prefer -to mark the experimental API as deprecated for one release before removing it in -the subsequent release. Please do not use the experimental namespace as an -escape hatch for bad code or functionality you -don’t-really-want-but-need-for-now; experimental APIs should be APIs that we -intend to make standard in the near future, but have some lingering questions to -resolve first. - ### Docstrings @@ -89,7 +80,7 @@ the next. We would like new experimental symbols to be things which will eventually end up in core TF as opposed to things we expect will be phased out with no clear replacement. The best expectation to have for an experimental endpoint is that the “experimental” will simply be removed. If you don’t believe -that’ll work, it should probably not be added in its current form. +that’ll work, it should probably not be added in its current form. ### Style From 62e34f5dca174411caa08bd432786f3bd41be047 Mon Sep 17 00:00:00 2001 From: Alex Passos Date: Mon, 6 Apr 2020 13:18:41 -0700 Subject: [PATCH 280/365] clarify addons --- governance/api-reviews.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/governance/api-reviews.md b/governance/api-reviews.md index bc9fb2fd0..509dfd983 100644 --- a/governance/api-reviews.md +++ b/governance/api-reviews.md @@ -212,7 +212,10 @@ prefer experimental namespaces when possible, so prefer Experimental APIs are APIs intended to be added to TensorFlow as-is, but which we reserve the right to change in backwards-incompatible ways if we have -to. +to. This is different from apis in `tensorflow/addons`, many of which are not +necessarily intended to be added to core TF as they might have a more narrow use +case initially (if APIs in `tensorflow/addons` do become widely useful they can +"graduate" to core, either using experimental or not). No temporary APIs should be added to experimental (i.e. "we just need this until certain bugfix or certain new feature becomes available" is not a valid reason From 9cdd68b1eb424a63972ca2f73f756882125727d5 Mon Sep 17 00:00:00 2001 From: "tongxuan.ltx" Date: Thu, 9 Apr 2020 18:19:45 +0800 Subject: [PATCH 281/365] RFC: FuseRecv --- rfcs/20200409-fuse_recv.md | 227 ++++++++++++++++++ .../current_graph_partition_strategy.png | Bin 0 -> 352753 bytes .../fuse_recv_procedure.png | Bin 0 -> 169424 bytes ...raph_partition_strategy_with_fuse_recv.png | Bin 0 -> 353333 bytes .../20200409-fuse_recv/performance_result.png | Bin 0 -> 82325 bytes 5 files changed, 227 insertions(+) create mode 100644 rfcs/20200409-fuse_recv.md create mode 100644 rfcs/20200409-fuse_recv/current_graph_partition_strategy.png create mode 100644 rfcs/20200409-fuse_recv/fuse_recv_procedure.png create mode 100644 rfcs/20200409-fuse_recv/graph_partition_strategy_with_fuse_recv.png create mode 100644 rfcs/20200409-fuse_recv/performance_result.png diff --git a/rfcs/20200409-fuse_recv.md b/rfcs/20200409-fuse_recv.md new file mode 100644 index 000000000..c8402294b --- /dev/null +++ b/rfcs/20200409-fuse_recv.md @@ -0,0 +1,227 @@ +# FuseRecv + +| Status | (Proposed / Accepted / Implemented / Obsolete) | +:-------------- |:---------------------------------------------------- | +| +| **Author(s)** | Tongxuan Liu(tongxuan.ltx@alibaba-inc.com) Peng Tao(jiankeng.pt@alibaba-inc.com) Langshi Chen (langshi.cls@alibaba-inc.com) | +| **Sponsor** | i | +| **Updated** | 2020-04-09 | + +## Objective +This RFC proposes a new FuseRecv Op which would recv multiple tensors with +different types through one RPC. This feature could significantly reduce the +number of RPC calls in most rank or match models in Search, Recommend or Ad +System. + +## Motivation +When very many small tensors are being transferred around the same time, +it's more efficient to transfer multiple values in a single RPC rather than +using a separate RPC for each. + +In the case the neural network graph is complicated, each iteration through +the graph may introduce tens or even hundreds of RPC calls between the running +nodes. In general there are a large number of small tensors, such as multiple +feature columns gather from the same Parameter Server which have no dependence +on each other, and each feature column results in at least one RPC call in +the forward stage. In CTR (Click Through Rate) model or most sparse models +(Match or Rank models widely used in Recommend system or Ad system), there +would be hundreds of feature columns (in our scenario, each sample includes +at least hundreds of features). One job normally have to use thousands of +workers and tens of parameter servers. One worker generally has to gather +or get variables from all the parameter servers, and each feature column +at least in the forward stage has at least one request from the parameter +server. There could be hundreds of RPC for these feature columns, +and even more some big feature columns (such as ids) would be partitioned +could be dozens of RPCs for one feature column. In summary there would be +at least hundreds of RPC per worker only for these feature columns, and +hundreds * thousands RPCs in each parameter server in the forward stage +of one step. Most feature column only gather very small data from parameter +server, normally less than 100KB. Logically these small tensors could be +sent together. Furthermore, tensors that belong to the same layer can also +be fused which would significantly reduce the number of RPC calls. + +As we know, each RPC call will introduce some satellite overhead besides the +real tensor value transfer, which includes: +* Serialization/Deserialization introduce extra overhead for each RPC operation. +* The execution engine overhead for executing a recv node, and the corresponding thread pool action to execute the RPC callback. + +## User Benefit + +Performance improvement: From feedbacks of the feature, in a large traning job +(> 400 workers), normally traning speed would be 1.5-2x timer faster in +ps-worker mode. + +## Design Proposal + +![Figure 1: Current graph partition strategy](20200409-fuse_recv/current_graph_partition_strategy.png "Current graph partition strategy") +![Figure 2: Graph partition strategy with FuseRecv](20200409-fuse_recv/graph_partition_strategy_with_fuse_recv.png "Graph partition strategy with FuseRecv") + +In original design of Recv/Send, each Recv node only recv one tensor +even if there're Recv Ops output to same destination Op. Moreover each +Recv node would trigger one RPC call even received tensor is a scalar. + +In this design, we traverse graphs, replace Recv nodes by FuseRecv node in +partitioned graphs according to its topology while iteratively searching +and fusing potential Recv node. + +As shown in Figure 1 and 2, instead of adding a Recv node for each tensor +‘a’ and ‘x’, we use one FuseRecv to replace two Recv nodes which fetch two +tensors together. The FuseRecv node will have two output ‘slots’(‘ports’): +slot 0 feeds input ‘b’ and ‘c’ and slot 1 feeds ‘y’. Notice that there is +no need to fuse the send node, because the RPC call is Recv driven. + +A new RPC method ‘FuseRecvTensorAsync’ and it's +Handler (FuseRecvTensorHandlerRaw) is added into WorkInterface and +WorkerService. FuseRecvTensor keeps similar optimizations as +RecvTensor to avoid copying the repsonse buffer. + +### Alternatives Considered +#### Fuse the tensors into a single Send/Recv Solution 1(Derek Murray) +Pack the N tensors to be sent into a length-N DT_VARIANT vector. + +Cons: Reuse currently RPC, avoid potiential intricate changes in zero-copy +repsonse buffer code. +Pros: Introduce memcopy overhead. + +#### Fuse the tensors into a single Send/Recv Solution 2(Derek Murray) +Pack the tensor contents into a single flattened buffer. Pack the tensor +contents into a single flattened buffer. This would be very similar to the +ScopedAllocator optimization that +ayushd@google.com and +tucker@google.com +implemented for collectives, and it might be possible to reuse some of +the graph analysis code + +Cons: Reuse currently RPC, avoid potiential intricate changes in zero-copy +repsonse buffer code. +Pros: The fused tensors could be different types and dynamic shape, +which couldn't be handled by the solution. + +#### Dynamic Fusion in runtime(Paul Tucker) +Instead of adding a new FuseRecvTensor method to the Worker interface, +we add a slightly different RecvSomeTensors method. The client sends a +list of keys for which it's ready to receive values to the server and the +server streams back one or more when it's ready. It's the responsibility of +the client to retry any key that was not included in the response. + +To make this work well there needs to be some dynamic bundling on each side. +For example, on the client side a call to RecvTensor on the local Rendezvous +for a remote value does not necessarily result in an immediate RPC. It might +if the value is expected to be large, but it might also just add the key to +a ready set associated with the remote host. An RPC may not be sent until +the ready set reaches a certain size, or a mininum time has elapsed since the +last RPC against that host was started. When the response is received any +missing keys go back in the ready set. + +On the server side there could be some logic to decide for a RecvSomeTensors +method whether to wait for more of the requested values to be ready or just +immediately send what's available now and let the client re-request anything +missing. + +Cons: Dynamic fusion in runtime seems get better result, and also brings +ability to control priority of tensors (which Recv is more important). +Pros: Potential bottleneck of the solution is the time window of ready set. +For different models it would be much different, manually set the value +would be hard. This solution is another good candidate of FuseRecv. + +### Performance Implications +With a wide and deep model, the number of RPCs calls per step has been reduced +by 55%, and the overall training throughput has increased by 40%. +![Figure 3: performance_result](20200409-fuse_recv/performance_result.png "Performance result") + +### Dependencies +* None + +### Engineering Impact +* Engineering impact: Once manually enable the feature (in ConfigProto.GraphOptions.do_fuse_recv), test times would be slower because FuseRecv post-partitioned optimizer would traverse and update graph. +* Maintenance: Minimal maintennace overhead. The TensorFlow team and contributors will maintain the documentation up to date. Changes should be reviewed and approved by the TensorFlow team leads. + +### Platforms and Environments +* Platforms: The feature is independent of platforms. +* Execution environments (Cloud services, accelerator hardware): The first stage would support CPU & GPU device. We consider more device supported as much as possible. + +### Best Practices +* We strongly suggest enable FuseRecv in rank or match models such as [W&DL](https://arxiv.org/abs/1606.07792), [Dien](https://arxiv.org/abs/1809.03672). + +### Tutorials and Examples +Example enable FuseRecv feature: + +``` + >>> config = tf.ConfigProto() + >>> config.graph_options.optimizer_options.experimental.do_fuse_recv = True +``` + +### Compatibility +* This feature work with ParameterServerStrategy. +* This feature consider tensors on difference devices such as CPU, GPU and TPU. +* Independent with SaveModel or checkpoint. + +### User Impact +* None + +## Detailed Design + +### FuseRecv Op +We introduce FuseRecv Op and an RPC call named FuseRecvTensorAsync in +RemoteWorker and WorkerService. FuseRecv Op definitions as follows: + +``` + >>> REGISTER_OP("FuseRecv") + >>> .Output("tensor: tensor_type") + >>> .Attr("tensor_type: list(type)") + >>> .Attr("tensor_name: list(string)") + >>> .Attr("send_device: list(string)") + >>> .Attr("send_device_incarnation: list(int)") + >>> .Attr("recv_device: list(string)") + >>> .Attr("client_terminated: bool = false") + >>> .SetIsStateful() + >>> .SetShapeFn(shape_inference::UnknownShape); +``` + +FuseRecv request list of tensors with different types from remote, generally +we only fuse the recv ops in the same recv device and the same send device. + +### FuseRecv Optimizer in Grappler +In post partition phase, we add a new pass in the post-partitioning optimizer +called “FuseRecv” to fuse recv ops together. We traverse partitioned graphs & +whole graph, replace Recv ops by FuseRecv ops in partitioned graphs according +to its topology while iteratively searching and fusing potential recv +operations. + +![Figure 4: fuse_recv_procedure](20200409-fuse_recv/fuse_recv_procedure.png "Fuse Recv Procedure") + +The procedure RECVFUSE takes two input arguments: 1) the TF computation +graph g, 2) a Partitioned graph. It is worth noting that the iteration of +all nodes at line 11 shall start from `root` nodes, which do not have any +source edge (node). The process between line 17 and 37 would be iteratively +executed until all of the nodes are moved from nodes to nodes_done. The +RECVFUSE also makes sure that no deadlock exists after the change to the +original graph. Also, the RPC call of FuseRecvTensor overlaps the computation +and communication by using the topology of the graph. + +### FuseRecv RPC Method and Handler +A new RPC method ‘FuseRecvTensorAsync’ is added to the WorkerInterface +we extend the ‘FuseRecvTensorAsync’ method with the ability to handle +multi rendezvous keys and fetch multi key tensors. + +At the server side, we add a ‘FuseRecvTensorHandlerRaw’, which handles +the multi rendezvous key for the ‘local recv’ instantiated by the local +tensor operations. As mentioned before, the sending nodes are not fused +and we therefore have to do multiple local recvs corresponding to the +multi send nodes. + +Because the ‘FuseRecvTensorAsync’ handler might be executed before +the send operations happen, a call back wrapper is required. We use +a counter, initialized with the fuse count, and each send action triggers +the call back wrapper and performs an atomic decrease of the counter, +when the counter reaches 0, the real callback is executed and the tensors +are sent to the recv node. + +### Dead Tensor Handling +We treat output of the FuseRecv node as dead if and only if all the +fused tensors are dead. + +### FuseRecv Error Handling +Status of FuseRecv node would be similar as Recv op, which include more +informations of every recv tensors. + +## Questions and Discussion Topics + diff --git a/rfcs/20200409-fuse_recv/current_graph_partition_strategy.png b/rfcs/20200409-fuse_recv/current_graph_partition_strategy.png new file mode 100644 index 0000000000000000000000000000000000000000..1d882cd9626a9eb82ca333ae70b9f47c71edce9a GIT binary patch literal 352753 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

Uqmyp%t^R~b@e%p4CJSbor`S1NErWS6a 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 i^_ifK%wk; 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 U?XC8}@k@zK8=UP6?3nTY3$l?sLI3~& literal 0 HcmV?d00001 diff --git a/rfcs/20190630-tfx-on-kfp/tfx-oss-xcom-passing.png b/rfcs/20190630-tfx-on-kfp/tfx-oss-xcom-passing.png new file mode 100644 index 0000000000000000000000000000000000000000..d7f249466aaa6db855d4db0dfcfdfad93cbcb33d GIT binary patch literal 55791 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 Rl_oyFyo{oBmej3#{|6l6Zb|?E literal 0 HcmV?d00001 diff --git a/rfcs/20190718-tfx-orchestration.md b/rfcs/20190718-tfx-orchestration.md new file mode 100644 index 000000000..98ecaffcc --- /dev/null +++ b/rfcs/20190718-tfx-orchestration.md @@ -0,0 +1,559 @@ +# TensorFlow Extended (TFX) orchestration and configuration + +| Status | Implemented | +| :------------ | :-------------------------------------------------- | +| **Author(s)** | Kevin Haas (khaas@google.com), Zhitao Li | +: : (zhitaoli@google.com), Ruoyu Liu (ruoyu@google.com) : +| **Sponsor** | Konstantinos Katsiapis (katsiapis@google.com) | +| **Created** | 2018-12-18 | + +Note: This design document captures the initial state of the TFX design as of +Q4 2018 and is being published for historical informational purposes only. It is +not a representation of the current TFX design at the time of publication, but +rather the initial design document as proposed in Q4 2018. + +## Objective + +This RFC documents the initial design of TensorFlow Extended (TFX) using open +source orchestration frameworks, and defining a Python-based configuration +language (DSL). + +TFX will use [Apache Beam](http://beam.apache.org) for data processing, +[ml-metadata](https://www.tensorflow.org/tfx/guide/mlmd) for artifact +management, [TensorFlow](http://tensorflow.org) for training, and will support +two OSS orchestrators ([Apache Airflow](http://airflow.apache.org) and +[Kubeflow Pipelines](https://github.com/kubeflow/pipelines/)). This is achieved +using a Python-based embedded DSL +([domain specific language](https://en.wikipedia.org/wiki/Domain-specific_language)) +as an abstraction layer between the user’s pipeline configuration and the +underlying orchestrators. User pipelines will be constructed as an +implementation-agnostic Python library. + +## TL;DR + +* TFX will be tightly integrated with ml-metadata for artifact tracking. +* TFX will run on two open source orchestrators, Apache Airflow and Kubeflow + Pipelines. It will run on a single machine as well as running at scale. +* TFX pipelines will be configured using Python. The pipelines are also + portable, allowing a single pipeline to be moved interchangeably between all + open source orchestrators. +* Wherever possible, internal TFX code will be reused for the open source TFX + version. +* TFX will be extensible and allows users to create their own components and + executors to be used within a TFX pipeline. + +## Motivation + +### Architecture + +![TFX orchestration](20190718-tfx-orchestration/tfx-oss-architecture.gif) + +### Overview + +The goal of TFX is to allow external users to configure and run TFX pipelines +which are similar to those configured and run internally at Google. The emphasis +Note that these pipelines are smiilar not not identical: + +* Internal TFX pipelines are configured with service configs (protobufs), + while external pipelines will use Python. To achieve parity, the Python DSL + must be serializable into internal TFX service configs. +* The internal TFX pipelines primarily use the (pubsub design + pattern)[https://en.wikipedia.org/wiki/Publish–subscribe_pattern], whereas + the first few workflow engines targeted for orchestration are true + orchestrators. While the pipeline DAG and the executors can be expressed + using the same DSL, the execution of the pipeline will vary across + orchestration and pubsub systems. Given this difference, not all + functionality is expected to be portable across orchestrators. Ideally all + deltas are “system internal” and do not need to be exposed to the pipeline + authors. + +Users will define their pipeline using the TFX DSL and a set of Python classes +that emulate the existing TFX protobufs. The DSL provides methods to instantiate +TFX components link the outputs of one component to the inputs of another. The +pipeline must be a (DAG)[https://en.wikipedia.org/wiki/Directed_acyclic_graph] +and cycles will cause an exception to be thrown. + +### Orchestration vs choreography + +TFX and Kubeflow both follow a runtime design pattern generally known as +(service +orchestration)[https://en.wikipedia.org/wiki/Orchestration_(computing)], which +is different from (service +choreography)[https://en.wikipedia.org/wiki/Service_choreography#Service_choreography_and_service_orchestration]. +While both TFX and Kubeflow have eventual plans to support both patterns, the +initial launch for each will be service orchestration. + +Note: For anyone not familiar with the differences, Stack Overflow has a good +[explanation](https://stackoverflow.com/questions/4127241/orchestration-vs-choreography) +describing the differences of each. + +## User Benefit + +### The TFX pipeline configuration will be written in Python + +Python will be used for the user-facing +[DSL](https://en.wikipedia.org/wiki/Domain-specific_language). Of the many +options to choose from (go, protos, yaml), Python was chosen due to its +popularity within the machine learning community. The TFX pipeline configuration +language will be called “DSL” for the remainder of this document. + +### The DSL must be portable + +The DSL must be orchestrator-agnostic, and the implementation details of the +orchestrator must not bleed up to the configuration. This will allow users to +easily migrate their pipelines across orchestrators, primarily from a local +implementation into a managed production cluster (for example, Kubeflow). + +### The DSL must be extensible + +As this DSL will also be used by Kubeflow, the DSL must be able to express +non-Tensorflow pipelines as well. The TFX components should be interoperable +with non-Tensorflow pipelines provided the input and output types match what the +TFX components expect. + +### The DSL must be declarative + +The DSL must focus on defining which operations are to be performed. The order +of operations will be determined based on data dependencies. The DSL will allow +users to configure individual components and reuse prior components’ outputs. +Some orchestrator-specific parameters may need to be configured via an external +config file. + +### The DSL must support existing TFX pipelines + +Wherever possible, the DSL must be capable of configuring Google-internal TFX +pipelines using the same APIs and data structures. + +### Component execution must be portable + +The execution of a TFX component must have the same semantics regardless of the +underlying execution environment (local, on-cloud, on-premise). This will ensure +portability of the pipeline between environments. + +### Multiple orchestrators need to be supported + +The initial launch of TFX is based on Apache Airflow and Kubeflow Pipelines, +both of which are +[centrally orchestrated](https://stackoverflow.com/questions/4127241/orchestration-vs-choreography). +Internally at Google, TFX also supports a +[pubsub](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern) design +pattern. Support for the pubsub orchestration pattern is intended for the +future. + +The DSL must be serializable into a variety of orchestrators, including Apache +Airflow (Python-based) and Kubeflow Pipelines (argo/yaml-based). While this does +add some constraints on the orchestration functionality exposed to the DSL, this +is essential for portability as we do want TFX to be extended to additional +workflow engines as needed. + +### Requirements on Orchestrator + +The underlying orchestration system should support: + +* Linux, macOS and Windows; +* Python 2.7, Python 3.5, Python 3.6, and Python 3.7; +* Running executors/drivers in any language through subprocess and/or + container image; +* Local-mode and cloud execution environments, including GCP +* Support skipping of operations, as cached artifacts from prior runs should + not be recomputed + +## Design Proposal + +### Pipeline configuration + +The pipeline configuration allows users to connect TFX components into a +pipeline with a high-level Python SDK that abstracts both the TFX protos and the +runtime environments (local/cloud, Apache Airflow/Kubeflow Pipelines, etc) from +the user, allowing the pipeline to be portable across all supported environments +with minimal changes. TFX leverages +[ml_metadata](https://github.com/google/ml-metadata) to provide a fully +typechecked system, where the inputs and outputs of a component are defined +using the existing TFX protos. The full definition used internally includes the +artifact names and expected types for each input or output artifact. The pipeline +config will also perform type checks on component interfaces to ensure that a +pipeline is well-constructed. + +Because TFX already has a configuration API for internal usage, we will annotate +these component definitions and use code-gen to generate Python classes for each +component. + +Additional helper libraries will be provided on top of components to connect +them into pipelines, which can be executed on supported orchestrators (for +example, Apache Airflow and Kubeflow). + +## Detailed design + +### Component + +A TFX component is a wrapper around the corresponding TF/TFX libraries, and +manages existing pipeline details such as input type-checking, local/remote +worker execution, and metadata publishing. While users won’t see the internals +of a +[TFX component](https://www.tensorflow.org/tfx/guide#anatomy_of_a_component), +the components contain the following “sandwiched structure”: + +* **Driver**: The driver provides a pre-executor hook for both TFX and + user-specific logic to be executed prior to the executor. The outcome of the + driver may affect whether the executor runs. With the internal pubsub + design, the driver manages the worker scheduling and monitors the actual + work, and determines the inputs for the executor. For TFX, this task is + performed by the workflow engine, and as a result, the drivers perform a + different role. In both cases (orchestration and choreography), the driver + is responsible for checking if a cached artifact already exists. If the + artifact has already been generated using the same executor logic and input, + the executor will be skipped and the cached artifact will be reused. +* **Executor**: An executable, Docker image, or Python module; including + wrappers around other TensorFlow libraries. The executor focuses on running + a specific task. An executor performs the task with no local state + maintained across executions. Filesystem locations of outputs are managed by + TFX and passed down to the executor via command line flags. In some cases, + the executor may execute functions provided by the user (for example, a + [user-supplied preprocessing_fn](https://github.com/tensorflow/tfx/blob/master/tfx/examples/chicago_taxi_pipeline/taxi_utils.py#L106) + for tf.transform). +* **Metadata publisher**: [ml-metadata](http://github.com/google/ml-metadata) + allows TFX to register the artifacts created and executions performed by + each task to track provenance and enable further analytics on executions and + artifacts. Component inputs and outputs are passed using artifact ids, + ensuring all execution and artifact access is properly logged within + ml-metadata. + +![TFX orchestration](20190718-tfx-orchestration/tfx-oss-component.gif) + +The component interface is meant to be extensible to allow the open source +community to build additional components (for example, community-created +components for other machine learning libraries). + +All TFX components must have strongly typed inputs and outputs. It should be +possible to connect TFX components with non-TFX components provided that the +appropriate inputs and outputs are equivalent types. + +#### Driver + +Driver is an optional part of the component. The responsibility of the driver is +to resolve optional inputs to the component when some inputs are neither +explicit user inputs or outputs from upstream tasks in the same execution. This +usually happens within continuous training. + +Some examples how the driver will resolve ambiguous inputs: + +* The trainer component can be warm started by previous training’s checkpoints +* The model validator component needs to resolve the + [last blessed model](https://github.com/tensorflow/tfx/blob/master/tfx/components/model_validator/executor.py#L38) + within the ml-metadata database and compare its evaluation metrics with + current model +* The pusher component needs to resolve the last pushed model to avoid a + duplicate push to Tensorflow Serving + +Drivers must implement the following interface: + +``` +def Driver(input_artifacts: Mapping[Text, metadata.ArtifactAndType], + output_artifacts: Mapping[Text, metadata.ArtifactAndType], + execution_properties: Mapping[Text, Any], + fetch_history: Callable[[List[ArtifactAndType]], List[ArtifactAndType]]) + -> ExecutionDecision + +class ExecutionDecision(object): + __slots__ = ['input_artifacts', 'output_artifacts', 'execution_properties', execution_id'] +``` + +It can use the `fetch_history`functor to obtain additional artifacts by type, +and augment `input_artifacts`. Drivers should be stateless, idempotent and +side-effect free Python functions so it can be easily ported among different +platforms. + +We provide a _default_ driver if the component has no unresolved inputs after +pipeline construction. This usually satisfies simple one-off pipelines and can +reduce the barrier to create a custom component. In the future, users will be +able to extend the default driver with their own custom logic. + +An example flow of how a driver fits in an orchestrator: + +1. Orchestrator resolves ml-metadata artifacts based on inputs from upstream + tasks or less commonly, “external” user provided URIs; +1. Orchestrator invokes component driver with `_fetch_history:_` + * Driver invokes `_fetch_history_` to fetch all `_[execution -> + List[ArtifactAndType]] _mapping _history_mapping`._ + * Based on `_history_mapping_`, `_input_artifacts_` and + `_execution_properties_`, the driver either + * decides not to proceed to execution and skips to the _publishing the + output to ml-metadata_ step below, **OR** + * decides to execute, and then augments `_input_artifacts_` and + `_execution_properties_` accordingly. +1. Orchestrator records a pending execution with all the inputs in ml-metadata; +1. Orchestrator invokes the executor through Python/Docker/etc; +1. Orchestrator publishes the outputs and executions to ml-metadata. +1. Orchestrator records the outputs to its inter-component datastore. + +#### Executor + +The TFX executor is an executable, Docker image, or Python module that wrappers +and invokes TF libraries. TFX will use a common executor interface shared across +all TFX instances and add a thin wrapper on top to translate ml-metadata +artifacts into the common +[`_Do_()`](https://github.com/tensorflow/tfx/blob/master/tfx/components/base/base_executor.py#L51) +function. + +Docker images containing all of the TFX components will be available. The +image(s) will have 1:1 mapped versions to the underlying PyPi packages. This +ensures that an executor always produces the same results regardless of the +environment, thus satisfies the “Execution is portable” requirement. Initially, +the executors will be based on what was shipped as part of the +[TFMA end-to-end example](https://github.com/tensorflow/tfx/tree/master/examples/chicago_taxi). +The long term goal is to open source and reuse the Google-internal TFX executors +as they become available. + +##### Runtime + +Common logic shared by various executors will be provided from a family of +Runtime classes, to provide an abstraction for the underlying environment so +that executors can have consistent: + +* Beam pipeline argument passing +* Initialize logging configuration +* Optional cloud-specific connection and runtime parameters + +#### Publishing to ml-metadata + +After an execution succeeds in the executor, all generated artifacts and the +execution will be **published** to ml-metadata. Only published artifacts can be +used in orchestration to avoid feeding incomplete results to downstream +executors. + +Generalized publishing workflow: + +1. Ensure the executor returns with a successful return code +1. If execution failed, mark the execution as failed in ml-metadata and skip + all dependent downstream tasks +1. Publish the generated output artifacts to ml-metadata +1. Associate published artifacts with underlying execution with the component’s + “output” attribute for consumption by dependent downstream tasks +1. Mark the execution as **DONE** in ml-metadata + +#### Type Checking + +TFX is a strong-typed system, and type checking inputs/outputs of each component +is essential to the correctness of the underlying pipeline. The pipeline DSL +supports the following type checks: + +##### Consistency Validation + +Consistency validation ensures that output artifact type of an upstream +component matches expected type of the dependent downstream component’s input +parameter. This is implemented within the pipeline DSL level by explicitly +declaring the expected types of inputs for each component. In addition, all +artifacts generated by TFX are also strongly typed. The expected inputs and +outputs types of each component are defined by the internal TFX API component +specifications. The component specifications will not be pushed to github at the +initial launch, but will be released at a later date. + +##### Parameter Type Validation + +This ensures that the non-orchestrated parameters of each component have correct +type. This will be implemented by generating type hints in the codegen, allowing +us to integrate wth the +[ML Metadata’s Type System](https://github.com/google/ml-metadata) and support +more powerful type checks and semantics. + +### Pipeline DSL + +The following Python libraries are provided to connect components into a +pipeline and provide pipeline level configurations: + +* PipelineDecorator: A Python decorator using a context manager to register + the pipeline being constructed in the function. Possible parameters include: + + * pipeline_name + * User defined inputs: + + * inputs for + (ExampleGen)[https://github.com/tensorflow/tfx/tree/master/tfx/components/example_gen] + * Hyper-parameters + * user defined functions for the trainer and transform components + +* OrchestratorParameters: A family of place-holders to capture orchestrator + specific configurations. Each supported orchestrator will sub-class this to + allow pipeline users to configure orchestrator in the desired way. For + Airflow this includes: + + * ml-metadata connection config + + * scheduling_interval if running continuously + +### Orchestration + +User pipelines will be constructed as an implementation-agnostic Python library. +Helper APIs will exist for the two targeted orchestrators (Airflow and +Kubeflow). The external interface for the users will be the same, so it will be +trivial for a pipeline to be moved from one orchestrator to another. This +satisfies the “DSL is portable” requirement. + +#### Apache Airflow implementation + +Airflow workers are named Operators, and Airflow supports a +[variety of operators](https://github.com/apache/incubator-airflow/tree/master/airflow/operators) +as part of the base install package. Of these operators, the TFX components on +Apache Airflow will use the following operators: + +* PythonOperator will be used to execute TF/TFX libraries when the pipeline is + running in local mode, as well as any user-defined driver logic specified as + part of the pipeline. + +* The + [BranchPythonOperator](https://airflow.apache.org/concepts.html#branching) + allows branches within the DAG and for the execution path to be determined + at runtime. This approach is used as part of the artifact caching, as if the + artifact to be generated already exists, the executor and computation of + that artifact will be skipped. Downstream operators will continue to operate + unaware that the computation was not recomputed. + +* The SubDagOperator facilitates composition of Apache Airflow operators into + a single template for reuse. Currently, the TFXWorker is implemented as a + subdag with a BranchPythonOperator (artifact caching check), an optional + PythonOperator (the user-provided driver), and a Python/BashOperator (the + executor). + +The TFX Apache Airflow helper APIs provide the following libraries: + +* tfx_airflow.py: This file provides methods to build the Apache Airflow DAG + from the TFX DSL as well as an Apache Airflow template for the TFX + components. As components are defined in the TFX DSL, an internal method in + this file will also build the DAG based on data dependencies between the + various components. +* tfx_types.py: deprecated in 0.12; originally used for type-checking the + inputs. Functionality was moved to ml-metadata in 0.12. + +![Example of a TFX pipeline with Airflow](20190718-tfx-orchestration/tfx-oss-dag.png) + +###### Why no Kubernetes with TFX and Airflow? + +While Airflow supports Kubernetes operators, we’ve chosen to use Kubeflow as the +preferred TFX-on-Kubernetes implementation. + +#### Kubeflow implementation + +Coming soon! + +### Continuous Training + +There are several requirements for continuous training: + +* There must be a mechanism for users to choose to avoid duplicated + computation +* The system must be able to get the status of previous runs +* The system must provide a way to manually execute previous runs +* The system must provide garbage collection support + +We were able to fulfill the requirements above by the combination of +per-component drivers and ml-metadata integration: + +* Each driver will check for previous component runs and decide whether or not + a new run is necessary if caching is turned on +* If caching is turned off, the pipeline will proceed without skipping any + component +* Drivers in some components such as Trainer and Model Validator will fetch + results from previous runs that are necessary for the current run. The + driver of ExampleGen, the entrance of a TFX pipeline, will decide the data + to process in this pipeline run. +* We will provide Python utility function for marking artifacts as 'DELETABLE' + when certain conditions are met, and this garbage collector can be wired as + an optional component into a pipeline to automate the process. + +A pipeline is the smallest unit to run and each component always processes the +output data (cache or uncached) from upstream components. While this is not an +asynchronous system like Google-internal TFX, it is more natural to express +continuous pipeline runs compared to continuous component runs in workflow-based +orchestration systems without losing too much flexibility. + +#### Internal pipeline data representation + +TFX organizes the internal pipeline data in the hierarchy of span, version and +split: + +* Span and version are monotonically increasing integers determined by + ExampleGen driver. We also allow users to define the rule of generating span + number through UDF support. By default, we will associate span number with + execution time. +* Splits are currently fixed to train and eval, but we plan to support + customized splits through SplitConfig on split-aware components. + +#### Partial Success Handling + +Sometimes, a component (especially custom ones) could be a wrapper for a whole +bunch of other logic, producing multiple artifacts. If the component fails when +only part of the artifacts have been produced, this could problematic. + +The proposed solution: orchestrator will keep all artifacts in _PENDING_ state +when an execution is still ongoing, and atomically publish all artifacts into +_PUBLISHED_ state only after execution successfully completes. Notice that +drivers only consider _PUBLISHED_ artifacts as valid orchestrated outputs, so a +_PENDING_ state artifact would not affect cache calculation. The downside of +this design is that the executor might waste some resources to recompute the +already successful partial output. + +#### Component Hangs + +For various reasons, components could be in a “hanging” state in which it is +neither dead nor making progress. + +Proposed solution: Each execution of a component will be assigned a deadline, +and the executor will terminate itself with a DEADLINE_EXCEEDED status message +if work is not finished within this deadline. The deadline could be configured +to be minimum of (global deadline for current dag execution, deadline for +current component). + +### Extending the Pipeline + +(This is how to satisfy the “DSL must be extensible” requirement.) + +There are several levels of customizations to extend a pipeline. A pipeline +author can create new executors to override the default TFX executors or create +new components to run in the TFX pipeline. + +#### Custom Executor + +If an existing component (defined +by same inputs and outputs) can be reused, the pipeline author could choose to provide an +alternative implementation of the executor binary when initializing the +corresponding component. The executor could either be provided in Python as a +sub-class of BaseExecutor, or a binary (docker image) supporting the same +command-line interface. + +#### Custom Component + +Occasionally, TFX pipeline authors will need to create custom components which +are not part of official TFX components (for example, a custom example_gen +component for other data formats). This can be achieved by providing a custom +component which can be hooked into TFX pipelines just like official components. + +To implement a custom component, the component author needs to: + +1. Provide a component definition as a Python class which extends + “BaseComponent”, or a proto definition of the component which can be fed to + codegen +1. Provide an executor implementation which extends a “BaseExecutor” class +1. (Optionally) Provide a driver if the custom component requires one + +The TFX team will provide supporting infrastructure: + +* Build script for packaging the executor into Docker images; +* Abstract test class for testing component definition (mostly type checking), + executor implementation and driver logic. + +### Future work + +After the initial release of TFX with 0.12, we will be exploring the following +areas: + +* Additional workflow patterns beyond Airflow and Kubeflow, including pubsub + systems like Pulsar. +* Apache Beam-based orchestrator. +* Garbage collection policy. +* Incorporating additional TFX executors as they become available. +* Custom components and executors. +* Support for xgboost and pytorch. +* Composable sub-pipelines. +* Providing a symmetric experience between on-local and on-Kubeflow-on-cloud. +* Integration/support for a TFX frontend. + diff --git a/rfcs/20190718-tfx-orchestration/tfx-oss-architecture.gif b/rfcs/20190718-tfx-orchestration/tfx-oss-architecture.gif new file mode 100644 index 0000000000000000000000000000000000000000..863c5949c08e3ab0cd791f9c9ee093176fab33c4 GIT binary patch literal 36121 zcmW)mhdv}xz>$=S?&2;sAob4=a-opQfbucmm;j0g#ml1wXruTAh4^@R`Ozl<17Us) zzaZueU@9acC@6vz6Be=s?3@8-NvtSVTvS|AOj<(R7w{36l982?l#-DQ0)myKq!eVt z6=ZQYfEZbMS)9BgPEl1^L7Ds>>mJakd;Itb!chj$dQ4kgLrYyxORXR1CY(5FsHvr?M;HJzM}Uz@ zVB(anrjd@WuDXmo z5~8l;Mn+Jt2ZhHcM<+ytC(QDQR5Az4WwH`3y0Nzo;V3Hg-p#LOFU znS}`%<#&=PH*=DT)2>r;6UelRn)EbkJ~@?Eb0<4Kvncg0jog@%ol%@sSCEof-q4bt zN2|!ZRsNu3S2r6Q}iHovfTV4%FBl};;fEGlknAGk~JtSh89myO=7u51~f ztgG*DDywU)dU~&^v7@H8V`%7M)m+Pi=AQb-uDS8{nuq=O7F*le9yd>SH*^d?T!!Cxt=dip6)%HdAc&Ovp6vOdTR33@98(wldE4oE-_~|XTGeA%x_K2Z2nkyx3Ku` z>9@6s<&Sgw8&Cdi&ivk<{rB&m>>(7y4g3RCf&b0_(*%Iz0ROloEg1BnWTc>q$0XzK zNE$}os=}hRdMpd88Tfj#wPxZL&LmUPvaNRNHvU|b$5dP0lVXD3bcN-k`e)_35g%Sp zJ!+V(A|`W7S+zIL*I3+E@tkhI_g{m3jny5ij;81LT^|LmPIug2dPo|{lsenl{PI!2 ze@&iGI$K_Kg>FvYIotJMwJ+w|ht(%t58pf{LwKaEyBX^v>4HbSo_4oxPSE7fR$BM8 zy?s)md3Eh+&!cyK|23Yw@Aa&=H`srp#&6-i_w3-n z?|t^>lPbH%g9*RhefxMb{_*2~{{T3il?W9HC?O-28d;PBu^m=&ygGh8MTmn~PsJ{r zU#Ch&H+oTV)b64*g`!4!I=&uXl%d)gQ&=xTG^E zaCZh2t7?rqB4CrfJ_b^+ofrXmJXiv_gTK;2V2@Y_fak)+yAa^UhdE|xpmU(Ijh28c zGgh_ar8GaF>tkB+Nt>P=OCpjK1%PIAFq-3MVfDVQ{Y8^weRa^QGAhSAyA3`4)&huq@8Sw#p6r8L}1^Q z8xdNg#9@&5!43>8xPyUm1DIwLkd~7TL{N33Iciu--=}WC_~z zbiPIOjx8G`u<;;BXGkfyZP`wyQpr8S+3Vf-1Wnr zHWU02eCrHG@T%Ql90@mMa_EIII|H?m zfC$fG&We9r$^=+NM(^S?FG=4FqWQ^eadIJP>r;I6Q4?z-)t9gAznDKQJ zTtNC-eEp=wR{(EynuoX&t4mc2Bzu#P!dyzE4lV|NjvrZQr1`taePJN(!#vQu=m)dB zd=+qJC5M#|cnY@lXExlRXeRHilV@;`B8r zUcUkZnCMJDmQiJ`rHzQ|d$2LY1eI@2dH9U&+FDLIJ#kMuVoe|e{cRW_udGj+`Bw7+ zgb~QR)C_nKE5OV$MHtThHYf*nZY~MdV`WhL->XU?7n*DlL=v9d#t6Xk%>|*fu(#o;%sJ%?Nl?*A&sYn(YNxY? zy%9@P;1q$mRoB23X=*gUq(gWYnC8~@4enRS1CIvh>DEL*#eqJs);G@=Q&1xQfF6Iq|J%8CE$Ib zm(ZBD6NX-_q36HqCgCrCb`Kx6go|dp-sW8HnM=48(eR{v$L+e|;xo122Twdd#TK7< zJ@EPZ1W!5Jt+;>3=3(s8leM3{#hRe>FLCesbhsHq0vVw|!hW14cjJaMYwq|>L^k0c z*p&&jCA6a?Nic)u3n(*o@{#6xODaU{NU=*XFp6OzZ z6Ml3swjHLP?Jp@U_TRzy>sIyL>+w=j-wq}g_S9) z6f{&wD4#o=Zg15n>iQ#oEaLD<)1F4jgon8L?Zc;Zbxls$Qooq?qr+!KVVV{1B*pap zJDkaG)vVl)#~OY+oTcn((h;koMuNZQV$`*&MGcFge?%qWr1o00Ab=ZPUkGEGocJuu zcao&f>y9LXm23hB31pFdi;gCjgj?4NNQ-s3QCe{j;-s!sc^$`R~^| z9Ky*L&pt=@{a$6~cJ;rr`4ao;_u4_{_1-TPUlM=+egp7zGxu%$lO+DIkapdJT)h6N z27lHu|8zzqr1vu2|7?7$JSbP6*~^vp*u3_$dy->b8A5wlx`nsX>$l0hT-fLFR`qnm zXc#f6?A0F>8=v&-DknXt01(_=gCm0HKf4zItT{R`c-w2Qlb zQWon5(J=)Skc$q2_bcnOGydHcQZ&Q(FGn~iU^_DgI|#$Kze*)S8yE} zvU?fTVh-#g_+F976mrBTDi?|YOY$cVq>-KK$-@mdOdFE=CV;hx;Acz0`=U2X>~9ho z@oZZBgNf+x6Ty~qJc{&ab|{Y$J`rC+dD}()q!g)-h=NE}Wfq zvoU&`jdTx%=lI8QC~RaG5s<_qQjQ>g9%$>|0EeRXfz1V>#AO1}0?7BIN%~>c3A7G#d$XpWL=riwf$VXy!;pjSh z?mhn;2md$+#EqX5G0DZ@E69r~=CI?K>q0=JSy!?mF3u8wp0kMcXM%S9b6(&Px@1T= z6O@bO>p^71AtHWE`t6rMKStl&p1ak;j%PD()RB0F=3;J<^N<-4;q>e*B%gM7uoDd_ zbb*tn8+}WC5*TOZiF60wOiyw?NIJNl&t|9PEydnqf(%Qc9p<+*^lmGg!_K5f4KVYt zJ;66{h^zyoYewNVP|&SY;C=|caEP?C3_m+nfEUfkGY2+eA}{O25XoFp$k=h*bq~wv zzNOeYdvLM~x2i?aB}>13Wb%|nw4@k7EkQ^!uPfi+X|V@KW<+pZDbDxj-DZQ`88Ikw z4t~Fw{IY;zAG?M?hj&ry7_j`w;1UMRotV->k8XJ%Ro0Lpb9mFAURpj?N{GH?=NdhI zko}ih-t)4cFC%{7efa^r;&^@dI57(plQw=MWOB-PR`1R?kvm7t?kpb$zu;u}zI=IS zuKSMs_MKI(N(H6LmzI_5S1K1XDtBL2e!g;)iv|*5fWBX-`gx=3ptR~&Pt~87Rh+{r zK%9PX1ti9}_C-$sMFY6??F3kWH-@W|h!W7hE97=pB=#=0?5=q4UCEWZ(!cIv19^&Z za9$h;p&~#ea@P`r918$%BI=OAr=ee?w-GN5by>V2T)*M+FO-sgA}_68d#K)M2)Ga^&C5nb>Nj#y+!{|=p>H;Yp#Wqp zCRk^v;q(yDL`LMsN^>!JsAc!cdhdI8 z$Ux-vz;Ipwd5_Bb@I;g4FF`IcWQW{Ts4p#s;bXWpkGs`xEgw~+qc9Hv2}UCOUgt{le&)k%aiQN$4~C|tL})x9iPkUNC=p`lPpb!7 zc@O)`9=up#tmFajajkN3&3hQ&hZ|$_m!NoG>z@yt*5y1vUgFVMQ}a%AE3vgr^$FvR zELh{!qjG(Sc2*nWejC?WA)Z&QYwD0weeJ1%(07*~86`b>H{JTTNlKg9?rP9rN(#1@ z=rDB`GB*f%9oBKdz4Kyk$CmT`F8y||S9MnWolXCPj;o!K26X{Pg9EQJu=fQWj|zoe z?TC`-c8Kj-E$UKs7fSfpqUC57}HhWz!)O+=Nk!OiD%@}alG&hxAvqC}!6Pw3> zL9~ByQ$x9^Wj&)WI?UF4OpN*#efsp8V5uBpO&kvXo5)8cK}-qU8sdD^ImlU{^*4<# zmklwa_v^(D7{qdY3T++@t$FO;__Xip%NRnU00SPy<< z_}YlW8Y<`&9M9++Zw(3kn~j>C<85GbZ4heKh^WxOnjZ!=@0r{+EcB(=$8ANAe;w_! zn}0mF_xQvIGzc@QVZ{d`Jl=dVI!Zz}hk_gW_!8NDrE_5Y3e*CzW`TiNA)=$^;2KTn zR2=VyJ)%Uv2H#(k#T@2Lu_5{uyish_Mkp8f8d{Es$|AvEu;9OOXkQj$k%dkLP#P+{ zqrjAzbAK$~lG(MoI%+XJz9*vcW-$dTiv}Z3*KAvTBYnGv8 z`;dD_Yo7G;EtR86+#dT9`+qYKTCt;Fnx9_k=VM#f)&KDqA+^EtrkhR*54g45i^YIg zZA|qiT4h{@#F|uEUyS6G8Ewv##`TFX{{q9e#TQ#v+K@yAh{GIFLpqBu0 zdT3E2lP`({IFg{GvMD(RG%gejYeq}ZVdAUf?+Fl72I3fN{x=DoT7inf!M}Y(WZ}?@ zB%~<{)j0=mCh=HT)MSM&^aIns=Xm3Ys09|Xq!;B&iYemQR(fOld%{|MUH#EHBP79|w334E5MH_Z|aTB|MZp7|5$fs^%Jj{I9+K22BD2kMfyEN$!WF%Z|zK5z&E90p8nQ@9o0gndZI!3h+L~TyvYLVbY%)=yPY;H+s|iO<6DWRd`x@ z`NRm1FF*MZssz%W06;`Q$R12&z#JGmX8hi-rM(BE`E=(#z2*pkFfeykq7cR#Wgo%M z_-GIaADXE-hGS9#`QW4vdcOvK<9I>LnfnjwQAt7NKd;^wLEX*L4E93s5+InXJdPwt z9OKOa9R?yn7il~dpd zP#be_H)73qCYKlv{nH+Cf`oiXM2j%FH*h>neSD?_h+aQ*=?RY}j`sxtQp(_SV}N?> z_hA)0#~9Chp78Kk^CmKWXqNrYGJ#nPUn&knC7}~(a~mX31(CP!;}_8V?`QvcKQ2PX z59$QZ@bv%Yv`TQl14b#wvOnpY1TJv7W<|`iH3ugBA5R zBG?{zNE^~v;RUgVHOjb6aW!W-^ydw+}VfpFEzRJfqn)^ zbNb8gWAH%FHai=1AOUg=2d+Pg1`%dX;CP^)5pXtBRuVY*jB7>}2JBsVgK}R0r|aes zi2VuZ{ZD(3_^KdY=>6T7?{Fr=f^f1PRLpV9B45#ls`}OLtyR%6&%qS2bKBNs+Cgih zrRUz+RvIR7pyEzD_SL32(uMEIIsI|_bL%9s(+8)f^DSOufse*5)4bI_ojpIgejg)i z5^t?k?Q@c+YT=Wn!lgIL^62+4c9HF?Qz70Oqw*i^t?$P37LASYsG1mzuZ^be4h2?e zLw<^LNU5&ke&K8EFb+)0t$n26f=!j#9k(BWFIqewSH1_3z1JiKnB#Zc_dnlrHwrnh zcnThgJ~pUtElPepcs5X6yteDOXL@>++~>2GeX3e8MYrRQUL+m1LD!mL^dl9=z1|T{%M^Ds(885 z_@^a4eEdHTp2~)RX~vS8xiu41#hYws|mq$xhrxjn^<$tGsr5DwHH@>LV^i;e+jG3fY(W{0>3ET;} zGkK%387kDJ2?)+g*twa=fw_qE}?i+8HF^9BF94rlj}F>M#m5YLV! zu2ltX*Sy+$)~t3w5zAdJ8+kpe`btz6$>J3OgRf3&=M;o)0X2>>Lc&=H|hC2rLx=86t?3gp z&!{gBQHJq*A5#;ezZD1nivD5#WVKcXd){WO%b4Tv{CBiA=Q@i5q9Naokh zFaTD+?`eNk^j!RT9VdpVS`#4pY-dBH50oX*ICB0mJ4sBvXz)kJp28=2F2j@HeEsyh zvJFVG#HdIyZL~&eQqbH0tC6X=JHme=#+sjGQJl~(2V`L;q%Sl0Vk42~MCSgJyG+3I zD9D=z&6#Ovu=#n?r}^MmM}^%T%$5;B4DLF9YJ~y48sG>2-`rDVk)HX$@fX1iDhqc*?u?Il_T@yw9e=33vo%Bf6WF;7_#1t$tJ2;K$B?2O+{KtfEjbCoC$O) zepFyhHV+y)t8bB?6$zfpJ-gT-8_24VA!t;`g!;l=R?KC=`Vg;LdB|l8(~}y^0qXKF z5HgeoYRp3+cCW}(;a5%n+E1c>-WD_@UXd8APCZ|gS!yRGxb^~+s@HfGQ$Si$A~L|1 z1Yh5qlSZy%Zm?*kQM1q65xpiLBeKO0eNEd<>sxBJ#KDME8P-VqLlP$^w%tlxL-)MbovJ8>NeKZ zCucj`P*5M(L%;)jJ{e~9`3G3aX^-_}UR}EQ2on%{03?UDH%UYA=Ks4>Uk1WS&fOM( zR6OCr!i!udxyjd>3T(Oj5>Voiuu;CoA-ffDKwu}<6wo!&4&RakIhkk~svLTTxH5Z( zd~ZVpNbv5|ar8{sq#UOjjX1bnwV^xf_p^)Ep=wJF@iFy$QIlf|+Y^3j2s(mt;#<eNejr5d%vwL|7 zS3p-&L{)o65QcOk?~?sq+e|DDGmpDjpSeK8IxJjp>mpsF|^<`*ID!MkTmRl0`Q5u+h?FdBElK$hYQ921?g}Q?5pz z@(8mxMkk3Tv20h5g-a+>n^^MDOAy!-8qa#K64N)+O3{ua3C6^Aw-d5*GF)EE zi0-H5-Ji0#8R{`Dtz&e*njdgll;P(OeJ&jP^y|~!3eFF6*w?Ft;Y>0&w&et*f|R7G zH$tc4(sBZk>Lf``JVk^FM#QvRFv!P|pzQP%)Fj{*sBh8+s4kPY#bD=OL3q0J&*JaU zy7ku=dh@zdP|L|O43v+NAVN3EY3IZ|F&nK5LLkYgFr+(!EI0?A%BwUa0J*wJBZ3)c zb@LqpI7y#kD&*J@)#Wq?Lb5a=StKBNHinAUqKGvL8du{T@~Fk!`A8nE_dcmWx+0DJ zP%=CFCxLPt$Q8@WayUpbtN`g8psp-4xtj$~0|p^k17?dkeRoqNNof)3xv&Db`z{NIp8|UIPIE@%>raeh)a#+*Y2W8^4-G7$5| zdoA4qhu0)dB44G&6Tm+SMH=d4C?34{RUi&0afJcDxpDg<17;V94C%ILQ#ZITs2xkA z?$F>~>4@+cR5&gzh6O8|#+~NkFDgJ@LGqVC;THoDpRc4@MWkPE)C$}Yhy&mx_C4b; z$mt!y(rbvaKNdL`&zRR*g*_^lJV?G$LM4#FtDAuTBES!4<@35t}t)rz$x7n z5EfykYx+@MSCN#`TL6vnfx^-ObVRpjKQ<9d4#Yop1|@~WL;S84%41TU9iX?e+G4(r zIS;{|LJN-ou&WB1Gns{E*raQYP?UX*HuuDFeh}0#SuC`Y6Oqm2N~ww`37H&#&iqFq zS5JJKOfwE>I!nuvrr#C`O|}k5gR+(HpOs#>BA+GBoTV#=G00tU7V5GS`b_=!YFpZz zHuH0G=>?uoBOu@pTeib?jPfi5j4xnU^0x6kh0 z9*o*c6*~u33?1wK`Xoz?auI6w?IT4k06x^FdJPMB%pnZfpo=9i!BA@#+2kYX)BtwU zd=sD%QCKuG?rKB@Va*cRpcsK?(D+9OfoZ&v%*0;}TnhArNx-);nYSn15R<-gt=ACQ zNF}9O_C9o2hB(iG-6!!_)fq~~5RI887r=qIBgwuz23)NGk88?$^NdL5D7;Kh2E`{!&>>WRqzl?aIIbIB4G$=)T^KGHNI&dYaBoifS*#rypAZ!QA;+24M5IFxnC&%n`^73;T`->WbNnXJ>U^ z7_&vLU_cTAh+|2zN@KkqF^)6>l)nV869B6DEx;89T;<_EuI-XCWvg+1sfr+ORd6mc zFNIqdVeN6BaZNY&b_zc`^(u!95oC3_V#yjLgeMkI3l();oQ=AGP{V*-JW|C>7Axkk z*LTQ+)uqI_ly6hQo>FKp8)YtbHX08NVx>S!h?y9KIzv9({$b=ne%-V3zVMe=K*kik1WB12S-h5PzylS;z7ivm1N7Ms8qK*1aa?W&?(O@skzkq zzecaGg1+vmM7yS0?29+-fFs^y(nshZH-KVG&>f%Ehk;EFE&6X15#z|@*>OS z)1?k+5)9Xz4&hwkod3d+aR=aR3#uGF*CMpVn4TxNoUC>iehdS89++;Oemv|T>F8ZJ zuNI}_Wts)EonsMWlxLA9)2Q!@Q#sXxqgha87>>s+F+3Jz!^YnF=d0u!D~&%^%VO$T zXqkaRkwiAM>4rQT<&(!*dZ^x|WvElMNnzwZol@$t4u#D3}Q&5-=83Nh-{>0yWULJcM zie%yMXKzHkxHyGApda2q=XxSP3#25rO4G8E5L0JE5C>(8?mP%=zW%|jh#T|&xAcm6Xk;~3_HO~FkcJttP0)Nl}SR(Y8Eiws{{?Pw`B8EwRzss$| zg3XumIg_77TELGnlI$!}_vh{^PFAEe@rV2`xW1c)v4ELaY^2#YO14wcqqtMtMe0g^ ze+)N0oJ+N4urjP_i5M`%b2EO*M~73g#4?iUFOA;;r7VCCeAY1{3U^zQ4J{B}cyn6l z!%vgs6EW0t1VB9BE6f#+(1nFhreJ`jxQo4NhZN~_=%)_AeGaZXNp|6|^|j}ymzMqV zba7YkU}Yq~c?l@q0wxifF2hPevxRnF0`K+kKCN%ve|ma$?xe3@%DzXoYNQ4RP_2;U zQi<&=%9s6SN}s1sW^9Q$AMhyLFiMUj$uE=9fb^RTUUj_epD9m|v-d>)7lSV}P7o*t zHCJd%ghUK~T;l?Dl3aNegxxq2bdVxKRIU`sP~-v$${{*Oa@md_E&>;4yeyIp^#YT+Gi%Lmz-l(z7fnS6_O7H%z-7v#wx{~ z9_ZJTfe`1DgI*_BAkS=pDPm=pF0Lvc-tr&#m>SfYC*#tAR9Yy6Yi`$&#Fto|W|$6* z$EBYusfA3h9xn}OcXsj5Bpc1aJkwK8BY{8hA8RZZ2TQNItRt|*l>;U)m9O?3R;V@U{BL#vaY0kK>%r>d%8aF8$BymP1(7*m7#r|7dTZ>!w6n z$Q*3&jA$?$*88a|0uMhfQ`P-h6ubm6#6bk{@;}X*ftW8q<9VS^>RR1N6UMM$V=9s$ zpU|CjF$JW-N<06fe9Wxq20Y{V0pB%Eq1nka{XFU=)>@1O!gtcs=7D|~Jnev(0BtJ}r25G463 zVV^LW#1DYbN0U{6Bq=P=&B<|zak1O}W_UiO{_A!*w*|xo3H3jD{>P)EdK0Q+UlIB^ z=uIL-HIoX(jY|N`qa-IR-TIr+cRz>7jn<^}(3JCmh_}canhX#>CTSud`8Xy?jsReL zQ_v~%fr1eHVdQaT;l?_Tm8(@om%PC+jx zOS^(^szgZ#rn|gCBwb5)vLK7ifl;bI1+|hT6f+cwcvY=F!vntkl7f?Mc>um#j%AdK zeY^BAI(R8q?I8Iy86rjip$(wnI@crl$PoqzF?N%Ng>E!Gg_nfzu?Kpk(zg9h;dK%B zg=Mtf6@OEE#8IJq>pO8U`5j?cBBvFQ;(YIaIPq74Y<30{nU{MfTc-%UxU0`d5{${d z6_QRnl1B5dsL6dO?<5Q;YauTGGVueC;W7g=Q6Gk#?PCnU;>I@ZcfQ z-_U46mM;-m{rNG>@3&BeG>f#4vmDFT-C@g)rVAW#Y!29y8_yQk3E$n>lb@u?>9rlb@>OBFK*gmk zoB4LO43scacv7f-s|#2PS2@~4;DEg` zaeHaT-$qyvB1a6d`(YS=o8P%GTbu4|qoy0R-S4~*YoA=;liAHe2b$L4Zd}BeThM^;l1J2GMDgj*B(jB0w=UtScanqdCMoS0q5{V0 z#EzZ?MxCf0`em1ta*d+0UyRGaE&Z6M;@TOAg1FF)vRobTQl$yk9}>?g=h#EVlBo_q zDpIW5!M@~*+zZK~px&4EP^@J2Q+>Xb8%HW{e3)9$?MP84gF`6oM=HOSMw&xkGe(d? zkgpB@-AsV$(j92Kqkf8pT0^TmVI^O`QCO}ir|CzDWOpBE!i4P2rqnWqc8 z!_VuA{}P;$(D7(}az0WEqSEU2vQf!TPkJj2wzV6PAyUgF2IT$5in- zRKrQ`sCyi*0tv3Y+0>`j_lY`HPv6TFGD6fZPALx_e#knm6Ae}QV)lF3KY(MonH_pg zm3z_AS{SkmRW<;MWN`-2whc4*C6XzMi1fyR_#`R?=9&(gKcMtc>c@l*Y} z#B42ZYxhqb7AjL0^##u4^Qwz%$vv3nGJHpd=GLCm@>`1>*IIPA$#tB0{%S2*YLncr zz2y0@Hk)hrLQvk4s`A|@mc3h{PxX^aa3d;K@tU^0nbI9BoPBFeHbznT91N+K;^>GC zC?3e4JaTkUcT=F=qh07!;_qaw1Jwlzx<@t7_T*{R0Xv1_-A9vn_?691rxxR7jrp3f z7pYqgOWQ=A=4JUPK?|6*i$%)6GDoObl_$%c2KvYgI6e)ZFaKa>^M zbbr3o;dHZCZ;CmBxk&s5pWiP#nj^VfS@y`azJG&8$IhHSeTEzBWym=+@0byv`|sZ^ z4%oHxU+gekv^^ctq&*@lcT|e&fb?CCgb>zf zjeWxe1j_MawozND&i!)Jz80g$R4&T5`m2V!&wC-)<*LDryM3OuNV4lIxnv>6`T7(Yc5#GJhhX`KXj;@ie^nt0Pl3Q+Wo_ zQUk_I9+4TiHxuP`rd*=H0$jw*if5d?-hZyDT!3kHeN97Z^i|sjkEBUd{aOU&?_kQJvd@=w+8Uu{wO&^w-jvHL)$$Vu8>Vo zw)Ru`uXN#ivH*j;FfPpJbudH`gOxzeEIFJD2Xkt*|61@$)@FmWrWG`pTb2*zlaS3u z$nqE(hQ-hpq!0yc-WI6sMC1U?Lf$jF>kj`lz36D`XgU6Omjx#v;F z=O#)_V2f9||5c0#C9_jC+2>FrIVJ-f)?c`My!xsMq58-s`3!*FLwh5ad(&tsnxVd# z5!W^_{M1<>`2ITDe-tDcYQ%+QuJen|dc?8eB|@cK%3Aq%cteweFCR6D-5qLF2%Z#p z^C(wX(pL%+z;Jm9;=&_kQ8(?0SmV}=L8%&WsOzpw?m|J>8G6V^f|2U>IIq?xO z#xW^pAj4?+i}-maQ)cGwyP8O5KR@}Jsx>p!By?iz) zqfbeo+UJX4+3wL(A;+}CE*e7x=5%x4e9Phfv)-1V#x-aIocDC1+v*WuNgqmfuPpk) zJ_1In`mEiVqFNE_v1ZE|hu|@#4uzBc2$?2(fwvDvTFW*fhweWKzVy98;XE=%?2omO z+3UO9+)Pfb0B(raA4QUkz+AJ$--SjKL31xTT2CQ2owBOj*wkC;viv=g;giE?3FZ;^ zXC0tpLK^}_k56uEK0JIDG5D?W-^m@53$c$$xchRxs-mEf z-%Vx$DDcU=T0AQH#1LNoww@qH{39NLB{FRsFZ`2iQoiwcvG3Wlt+#CumfnTVD0xP1 z%p;Qz0h&fpvh&Z~cB)rlq6}p$53J{(KN_avArt;vIz#4^oEiYdo$d+Qeq@A~2%;VBRDg?-^UU?=J@ce86bbN7GxG3d3Xzia7RO0oBVJH)8 zX7{h|?q0#VnB2VP*mB6Oz3d{>vsG3)*9Y+cD!P+qDQN;^LmDhgEy+Nl#qe6rNYWx$ zGMjw!0K3;}0zFf0nPLpRW_%2v^rtXIAjRky5hU82tbqpV7brXn}@jr&i^VL)k86fKCT>TPO?Px zx+eIkxNS}U89%R}jETK*Y~j4vK#?|8{^=(ltN0Naj}i?ID0Dqd89Sr*XUM9>*gtFp z*PNuFAR>>oJyj2te=wv(tib(}w^AOFYBs{pjjF3!SfVI5uTkm?iY-UM3V0Jl%u_wd zVewH4fs}vT`h^Y(ELlR)fW9^bkI9m%j^iv;7cGww3-ydWMh)dpWNwx_$=h^JSr;w$ zSPSXo^Jmp9*uWLX^8Ab)##B;#>83;}ZT`P?KDOL%BbF7M^e4`N3n4<3M{KH2#jxn; z0^C;7H5lt4Qs?Ah!oq`wEF8||`kbdKT3FP%Q_i>#W2lU zT=OqE(W{TE*11jBidk)XCqg~cw#}Yiio+7YLZIVMsag)Vwe{*RgX>Ar^_IbDr(a%@lr}~fJKgfyMv4lM|UaZ`GocXC8qSu4a;HO zX3EVJ$|?ctfWgLUFIjR!F25g^wKw+l$*gZqP6(p-bZ)2=6c3znPx@ti?Bu$vRj}k|y(mZ%@o7KLlyrK< z=Svi89+E`?E2G9R6j%nC1h$6g9EiM`x^qzK0wd*XMgo!q3RkmlwS%z?nVH)*!t3!| zJakCOX^59ra1fTHkWDQ3D`k*vGH`NM=6gA+VwD>h)0VXENR@~xA>9prR>bX961ZKg z7a^cwMJjFotB@Mi_3U=cSkN&S2EO^%Lda}la&PzhPVkYRK7d<8NN_rSJJMm;!<9T zN<-wo4}BBD(tlBYrY52OBu&3~X^AwUSPhq}zp<3uNqg{4+rtFFRYgrfmO?Rn}Zh`RE5FX%ap6bN+Y(%Y;xXds3be3))GRKoY56;R9z;DNV+Xm zJr1gH0>y0QeV2-J%_Ja$Pj#ek7X9Glya^ow2zPds-7R;$ESrf|+eMdcTxJVXF5jhF zW&3q*=YrnvtHV-j1EF+_JP+o-y|I^^YA zNM2$1^LZH$D>0x<4g2Epw(J(CZfpEBYfx(x5slyq*49@V%t~GJ6uDnZ6`2KyP~W1${1?10Se>mLYm69sAdNYS|o0q{zkBzQ~`y!zRaRXwVc4WI=w3HI58 zK=?RUo4df*%bDSFRT_U)!{aTCp+qB?d6N^JF0e~P#DrCL%UQiPg6Vn>9)PU{xbf#I zl#>;euWoY)H5wZ3IVuwql$RRu*(T}-6q$EZy1L)ic7~73DE(Bryl|@V-@1y~m z!y~va6YO5An_N;ixU7HckwMplM)5bPJCB+=BJ3Z0^IiF7@a2)k=%bT%{Duu>r~Xqo z_3th5o2GF@%4wHbNz|BS#k(6`wJ(-aDivywu=Yl&NL`V3@4!goo9(8mT0eG~k}ex{ zn8tR;`%xDjC6887f;E$a@#YhC=E?0g=A&}A6y%Akg&Gv?ccMB(3PrglLF%Ga^Ae6o zd8%R(wqBWZzC=^#W8_P`=p=dK+OXC0B^*}U;J{cNQyjaVl3wkE_0n1h-?8qyWb;PL z{a?!4zqBZn0!dv8^{b!PM?)yH>zq@G3*IBaqSN%(WN^Yrj!pIt`@~@UV z)XlOZs!U)=EL>Mc@}N|C=h;YI^@Wj0=849u$%@w|qK)Hrv`fe{&$;@`&P3e|gJ~gU zB)k5WjH)DtsY-$+iJ-_d%DD8y{R^uWH$ICFrz|G8LtI3DDi57cFd3aDH?+P#yXh0l zX;{BucZqs`|J3oXdjD&$Lw|lROW~^=y_CEz1PM$kKO?paDDHq2vkL~wM!6Yyx=L_| zkA&ZzS};PchkGR6;05Lu(c;(tQFQN*O#Ocxz|ZcRjm>?o+gx(V{g&i1_d9dHq?k)o zWQvkpHut-UN};ACiJ~NxYI6yN5F)n;rAU;-ht}8k4>-S^bKd9uKCk!t^>|v~k>2O- zFi*_-X8oJZv|KE?uw_^jK2>TJcCbU*aMqAcwhxi|A$Z;;0N=Rn{_u#e#LDz3#I=V< z2+KATtJk}`_&RO`6BOxeqn_;d+j zT27qJC5^|Ozjps^riEJTw5p+g$qjv8d?vO@34j(2h}D~WZ9tfD z*5lnyZL$z6tuG`s^VB|w!i!;HvUC|0g?~P*%O3i&+xx@#-7;33C3<)!G2V!dR&JAc zV<|n77;QvGX;~UnCmG;)e@$3vAHyO29xtXW(?BTU|E1J~TrM<%fhsqDc%t(vdaBf7O zX+@&WL|NkMBfhmWbf zHy0AX7-Wf=T#G&a{@O{M%hjEq1(cV^ze zc&Jo*prWy30_DM8Jxo9Oa?~Pbps@V+$E-*TMrWZbems9y$NSawq@8FQ@kWc&`J0J5 zf7ZX8!<(n@QvUq|VVJi@#P;8Mat4ljU311s0xCd)8`?@NM+(V_JSA&UMaS=>=u+j% zjMPe1JXI+R{c0kVsqf7swX}}M)O9S6``Lo1u@XVj<>aMrWqhZX>Rym?)O3^rZMd#% z=F;KeUZtvh_ctnc>)p-3qVKhgFhPgI5gGklp2oZ7Rm#TQ<<=apFR`*(1#e}x)Wzz$58F!|$|?rcx7GGK9sEA> z-qoDnYvg^SRsFMN<+=8nV38#q#Fy3V($P34!4ZjN_}s-q_i!@ZSG+BI87;`nGr4Z3 z(s?<9HHXr(V+_s)OK_e%4@Q$!9GdzK?i^3gjvh%h`0G6t)2ser>dalW-;Kdw)#TS6@El?Tg429n)I$I_vGnka6(c87=i<;aU47-r(Q^l4odn zMFOP~dSc~p`++MU{N3A_v1aFkVcl(_2LfWLg?^u}9>4!oK92uzR`H>Ms_KyPbVgcH zi1*iT%;S-{iy>!Aw?iI8)81zYnMMtFi9}pE8dhL_zqq<={PUXi74&E*bO!rwy?39- z{oK_;9pZ%B;?t(2CyQ=@Eq*^Yh=q42f{Osjv zqIcJH1m6XmiBb=n^5|B<9@!YO*PJH4<$v}1YQJCf3%l@VqN1_yk3X2+oP1|J{d@ZS zkLi8>qHAq$CSo*aw&sh)Dd%RdM$5)LH&eXskW%|#=D+2pcSm==Km9SY^Miw(-O1ln znce+0FjfxJH@4_>`ltb7-k5*6py=JEB;2zH&HNr&liLD=l#ZFMGt zKb8w2M3|v$P$?=>-2n5otVBRmij3OuL1>2x;9yTj>dm3t%Gy^|aH;CCb7<<)OVj|( zUUX#4(4g}=`u;$giS)4cX_kU&ftG`!=bT`1nbmreR;F|8C*d!)mMXkEsqyknOuA2X0)SllcHKo?$ zfh2m!I)b?wdex*mWj(u|jbeKfr$k~5LYR_@CDKYY5QZvO3?zzmvSYI2Tq$zDR;<%M!J>$x-nmD+(x0!+ffA`W#sDZ{W0}iSsnpH z3MB;<2SDJZQjT?O^E}ct)A?)}+qk-V>_F_sz2*E{fz5hKAt#1F0h_j0Ts|#o&Plxc z0V^r{-K?}*c-3{-vytx|UmAvo8kJ!u$lo11~&lZ@C6h| z@o_u$d9&&@Gg8q9l?8LIpBGjpb3{%8oHzsRY4d!t*M}ZZ2+C1~CZGV~V{-N_*gQE& z(;@ruQ^H;$_^h@pWkASIjfZy%1wvcsyKCl#_r>`Mk*WE zL(4L&)24rqlLs&wM72Spsh+QI27av3+K{(G#l53Tuk6>}b*HBPY%;9hVa6OvzZ+uz zAQTwr6O&$LhxzLS7YXi_QdyDara`%t7x_o8Jypup*pindBI$fgb2xMdA|A@ky5}{> zZ^BAV=r>F?yJntwz%U5^d(aYL#L9XY(lpP1GwAE?qTg-q~kYB5}WOA%=s6-$HwfM*yeQFnDU9Kq+xYhx;VCVjP5l^t@ zS|Jq%Go^mWi>lMuLjJqFCCTm%DVywcm>LC3H(~O26!+#fhz}04dsvBz-?Z}pG9G@7n{}v=j7$h0pP|2gLU@UzhgZ0QQG|FYxGX(@nGfiI`V*q~&N%z! zJSl^>{zVQl%;|ERNwQO1^d?E@C0+K@JHgP1ZwgF# z%D%&eq*o6I((W@xB<12i6P=s8ng*P7hgZyoT`m{_;vdyPwcUu%_g9zH9&HpRYz_PX zb02*p0oSOqpQ|L`bWTmdx^%R-G@WBae!SU7pv=MJX|iBaMaWxDWB z5-8qW;4ujpo)dB*ihrtVm7{@=tjocHmpU{t!M)ZI8WBzgd9(7G!z5W;u`ly0%FA>i zmV|dBEO3wzOqtre|0A>N$1X_fs57kA4OY=lxK2S5Tw!(LFq|4nkOQi7gS8GK#EQmF zu@cBZc)ewm92b6yj$ZDk``$}zW+Ok5WDM9HZ@yqsTzC6y`Ap}8_N_uO?tGgZ0r7rG z!zyH7c-Q8fa3@{z7=TZvOH0#5-y-k{>_lmEkW37uwkmP!htL5wkzYqtuSsS%8vB?l z6zT+}{DjtWWL-2sFS$=Xei1!CEa#aa#u(PR55l9teY{q(`0Ge_UmH`0K{FSv3r2Jq zzXF)`59$3N__EVfHBPKT5L$bOeZQFSxgcSKK3R8XUG^RH*}9avlkjy`0^bAGy9n{& z;)F46X)s&V)DhdmLZAGBUN0b=Cjpota8SL#$YAFigs>kK-lrr>bSC`)VgEKJ#*-kM z=F$p8;a#Gv5Lc)VNTQoV`@*rWH5I6l5<&nWpDx^&CA~yd{HsY=acc#0XE#ZN9ui@O z^q<3k_PK{j870f<3d#k-`?G%%jlV}c43p;0>s@ziwV!j*xf4GLe}aV z67ZQr*a#Z^d4K=CFUSqzqkVgD&Muhe6e|TMZhRy0EegquHf_MU zk4899?EM-&K-M41%6wLvJz?wm2Xn#`OJZ^}ifZFqdx^BsS9o=^+#TE7AB@ zLbwk=ud@+25PbKd>j9 z%EdkOq$Tx8425liB;?N~~>vVTnF#Lq;XqklVlChkD0&6DWEK0-G|;ttv2-_RkN z@*p_Z>UEq6vwB4?^JN;68j?B&FbYSIU zh)P&$x^qW5Xk0Wx^Fk(v@|TLtAG%lnAwz=$iX0QP0>bAxUL}oMH({vxK*(Ch~MlMFC-h>-3x}X>JaaX2ozSX%+Dprnz#IWI)_rCK)z=AHk zfe*Xl1vQ+5)*DwD#J65u%~D#w=L z%g1Drr1j?D?dAj=6}iP&-O%T6elP084%(Xwc>2H$Tjm-Ebk>{zo~!s>1wO_hyrII3 z83esKq$zr1g98Ou$+pkIMHn-1uJ|{QpqSd3sCPLUREQiE?%O2N3nI8{l!Vj8XW|K= z9E>#R=7(s?Lvb!wHzg)TZR1}yj7=o-h zeyCrw6Cbw+szw)DmkBq5h;(BF+y zoxs`L*Z#@@+x$eIralZAEq$LQD-F+H>tc zRRUsFGCFKoWJTcz+t)^d{Gx+82gr8vRf!ilV6oE#??bYbr-`9XE!3V4P-PBbK3P=$ z?A3)MhZOH9sYymN6E>(b`*@^x{)3`?nBbzugb~is*?P$tB6w@>;TN!}|9}0qYJ1g-1bkQlmM`efo zr!D-9xz6zc?N>nq@~PBm!`i9wL>lR5Blg z+P;qjBCdRYQ#IWC6J@$A4kydt=J<3@iW?shOyoYgR`rwKHnN{O+Ny(=Cm*6#X_!Cg zk1rrRV`(0*d_x*TtK4M9zDVq3pCJu^X3YE6Nf3YH?(h_#)+BRmK(_nc&J=rZG(Dc- zz&8y)ey#W@(cjKPQx+cwb(AZ|3bDapBE*FS%jYc>n|{5N{PpU~ua&&7Ri@u=Cx5%d zgX$3XkWa<7%2+mrk6WunuAM@(cOHL-@u)4?s8_yo+87p119{BrG$u}4ba9-e&{I{h)Fa z8Is=7x1oE8LlQOE+j~*ckA=@!Rr!V&@zJGmMOP6jKAd`dOH$(8ww|$6%Zp{|>*sSt=WHYRYE-9QZs5 zihi9Jt|`k&M~m`BBAP1OQ=wfsx3b?!9!%Rr@+pi9%$g=_Y$`e`UG#~ZI|G%*7Y1TkixY3FtnwsHa`o;G-?qJ-6vNf68@cOw&;LcP{=Kn=fajk) zwSu~8VpiTl1adP;_TxZ^nDaPpO&nw?I$Cu`6Lw-(=+%?M9p*`LFK2`Mcy~VR@cyuT^M=l)^2!N2*J=y*9;c2Fv7?!8Ss#1u(Q z7rG|K0W9iI7y5m{2;K1fqAVvWns6>J0dbm~tOyhZGvE z`g%b5*fIHj-3vHIR@6{;h^O4Op3oAfn|2|klZrY1@Co~z+okJ~xhpgbJ^CZGJVZvf{DC6-fC+@0Z+O!|ZTYs(_JKMq`7=;Vh#j`z4-J z^c&RiYR1q+_-%Xrx=Ui0Pvx@kWyyReYX4bLIE42jsf?QkwEz2h>*7nk{YOeqJDha9 z>96G3@Juzl;Mx-&U*we_R8y}sL@gn-@r}mY$VYyU8&5X({^mwL9=rHuULg2W=eNf* z$>>wJ1Onuuo>msfnYVtszkCS{g0fCHO+R#uezAEuoT2x5_1<31X9i7U>v_eiIsf9z zr?vC>h?4DhP1`&Hv}@ZMM9@VWO9MealYrUB-N+2d#YZ>xw@g;GSmL>d83In^H|2Uly{|=0}dqh2+On%iIH=T-& zKR2v&$GCN`MKS6uAXnZ0)+WW()RUVNsBv`8=H$!mPd0}d%||?Z)MXZHdg_y?R^NOXxbW)*+V#Miu47;W z>`@-^wPLa6yBF@y4q=mhMy?o}ZV!HN+@0xGnoZiVO(G=ko~*>4+g6yIt^HkCUX^6D z`mYGT)f-Ls-~_(L#FPKi&x;q*N?m6n*vNf0bZ9-%6&J6KIYwc;8oq(t>gJ*U+0)W< zt5`7CR#kyi=QNQJQhIhc2=TC8Qu~CIezI0^Qu93G+D^zJqARcjZN-v;UXTJX1kdeW8EZaD?iYU$OuWkkIpzcU>- zo2vY@x4Ov$jbABqOk@ys8#CPN1?hR!9Y}+5q&AqGZ?#W{FoUG43#sIZ+0_uY>;O$= zoix{#5D8FYun{=u`6_cLKg?6U-RZo8!Oz+lZ9Q53NgsqRMM206KxtnVycLg|mw2jR zqcd(RpuR}{*rEM*^XVZl|hiIva^OCWd64zXg+r>+b(_bmqL@9x2DLA|msi3R+vB%9ze1#7;l zyQ#HR{36s0!@Sc36tfHH;VY+OhrYK z5QNs58c7%3SxX}zZ^FFeJ3xMy+Ho>f@YLG58=@%sKaFA_#z7v~iqC}9H(?X|xEDpX zIYQDndVrt;)IckZ+E440Yc-b~=61;n(Lbc}R?IKMo^~4i8A>I&TcH=^GGS|VKKE4- zckN|@JeK49M@%0Z{YktfxzX!-?_qk$K@nTvWmz5+Q$oyGx}_dT%6uRs4~j!7nx8iB zPAX&6>~LW+=>HBMR%0~mG-iRoY`*_j(if0q1sBka2lLiNk|76`OUcsQy!0%Xd;AcX z?UL#nr0cI`W&VwlefIL%SO4tPpYQI>j@D#eaxbgXuTwpIv-)Njp`YwkLV_V^UVM(@ zX&HZj&Ll%cP(@GF_aeO|K4?mkAXJ#+Q0v`6ly$8?;~it1CyCVkv3ERngk8D)NYAWlC|ajN)TFwq=`e#!jy>t#*P3=>(2;xddY^75 zE>%qA39({{gP6#~+BUOzh^vMa)!a41-(sCO1K{=k)wZHoyE6*O5ghEp2zMiK1@S;u zmZWC@&a9_QdEK`YV?oToEXQ`k>|bLQgo|?j(1mRtZ#?a9J#}(1;LG>VsCVEXkcwKn z7~=kup|{o_%YU5uG7y~b{=!jV)*)c#LFJ#J2QME~?>C8a3HSc+Lg4p}Tk1j&m^M}e zE&|cDN#9R~*H6w~$5_8HDIRLriS`qmX}b|Da%JiH?BAD2OXLhLLphPOOUdf|z~Rpi zZ^OR?wlyQDKmD^U1T_Mo^2X~3-3Z1Pvme{SkwF``-qFA6YW=RgYkJ~Gf{#d}i+n@$ z-_wCU-ru8Uzm6^Qj_}~VFF?t&7f{GRuz+&%`uWV=IY&0QdKUP3ery+`JPW>K`{G+c z;4XBD=crHrn;&Yn!vS4N`n4cbB+Bn3K zZmScV8D6V*60h9sn-_&Nh+Y!v4FbV9jI!S_xjDG;BJ$w~Ua<*-+VkZG!Dq%He$8Rl zE!rZ*C|@$pfCA0kr0!6V_gk?eT)^hB+idHx9U@rx4*VEVsF-#*<)-HL8swT+=0m(` z%aVR;8Tpx;&9iZ#D?tT<2!|h{em97)9k$=Je%3ba@D4HaAr2+RMh`QA2{#_n#}{{u z79P{%bD|Ns!38pLNAi7f)76?W$|5&5tXmXqdMP2tg6PRycQ>KD4PU)YGajyUc|x=gKT)V{-Y)2s<8UvjRXFpWg)&M3+}SflG5JM{Z8Hji?uS6Rq^(@Ty? z{mKOVM6aBF8XJF5`)rOph74+wD97LsQEuReD&?y3W(j_{eqIfKawBL#4lbm{_lZK; z3PKP56cAfOtp}kK9%7Yfs0}8CevBUuU}jjbQ`UmLIAAOYOR&RP=3wP0$ORhTwuQYq zaAm61)}O|QjsZsjm}59V=QF~FEbx&69o|<`*L&#xRRu7goB$idVPjBlFiV4CTo$X3 z#Rn&o+qO&8gP@&_2#Y3A3pvWG^s?!9341vj|q5Fz}0{ony%&UIe7~ zOu(w!hZC?IRyo9~N@M-lZaZI8FCPzcOhtFQTD$~M1d!4H)o=#I>VP}ZZ-78a1Fw&A z7~-9Pk7Cu_{leGqJ-@Z?27&Up2%P=?6VGZy=7AU@Hu>4@B>?(wSU=&}ojUHF9QvK0 zYxt2t#^;NB5+%y~nM(f0THy}Bp3S;=jb9O0>i{WlwJ&eUDQ}XvcccW!Vcq`8hF5;O zyLm3r-=PLCb4)t-CpuWc2%|N~L zJfO(Deet8%QB^|$CR9=DKId5jGPQ2HuC94d>@xEn^;g4^QA3W0LbXWEIt5Dna{AjM z!i=Ukyf;$HeEi8CGjv{~CIgE#6nRMYvv}I5*@V&d5)l%wI0l^lXa69s1E{7Orgi|E zZ*Er@JrozNIpXCgS_~p?VfwPJ-M|5hHnfcc`6WfPLOEp&<<(82^px`eKoRiwc4k+_jVnf?6&h#CnAm zh+Y#_{GCAoi6c~+{^^ZI`X?6d7#BIS<_Ig^WAx%2Rh<0C^UjCydu;~iZU&oWhuB?y zT!L0>KHorIyI*=zQ*+X55>|0>zVtg64)3|1GwBuA2(oa4+KvgG!T~lo3mYv+%J^kC z!z-sQn9cLXiP5Y`6sZ52w17UuF$gY4_u1TrB;8TT-hv#Xl^S(fukQhz8CWG;-Nk!P zCw5dYI9Oxd3slEbt=ENq)>t`~eeqfmcLM|GntcR{;bb8=?jekmuDA|6K@?&Kf%F$D zCs7eFw|uBz==5#-#gpi*AV|+yRPwzc(CE z$I~N=M_}tG6>dPPQ=T}Fo?*>Q-u1i!)m zHVj_BH#cx&0`>VK-Uwws!S)`!xM+tv76j#MLMjnu+77!JKSuV6R<__!O7vi|a5G>p zP_g#P;w!K-NPkF#jc7sGG(X9{t}FSyw?*5P;sWymB0h-(RI0Qj$AV*Rnk}i&bqRa) zlO8Au9Qs`Glo$XR5)jj}@~52o$OIPXFM)g?-$AOWzDwQ;{NV;hrVIT^>*nLPGQY0% zzQgp}3%8rmLeD7rmR+(=?G4L8GEMZJ$B8=#F!{a$A@wvD0b2i!PM3Nv@F~;lT@W13 z(i9tnyrWqLDDcCXeHXMKe4Oq=?v)qq=ye)OY|!!(6IdJ(Kpo+^=dn-wN%sq?57l)% z-Dbf)HAfJAad}L>Jy2Dg%I{7T8D_z@gXG=m!^%;0$w3fXDD|NKaRnLq?Ll~e*WTTM ze`LWnm;%A%le%p0mNm%51v4QZp+cg68wHBf&)Q<1-XR{l5-MMd8WN5g^{Hg6Un36W zj~@9xx*^o={{kQIchqf2c2C7$0=$EJc8w|Orl>k1~H7EIQE|M;SxaAW$z zBj-t$`Nx(5;b#R?y+C^ec)som5_l$o}2n|d83{H9@gGHKkSczl3=rUX1a zsy;Q^FY%#ZT8}fm+&^>X`}7?DY`6Bz(2<$XCSzY4B)>PzuJli>f1gbTO`Sh7yJ=#+ zRVles!2LKqo2HG4brWdC@hb`m%xTGuYhlk-VP7?(7s+!jLfl{zE_6U-DT@1#$yK^P ziI&AbCnI<)0YNV08dH3g3GZ?fuw-L*L6BCO`0+uI&mdBNb?%qR)H3+ET=J~qDM{sl zg}V)(QaIRs6agL`BgmXTFUT(tB%MBpG8&lYodtnkak1tCN`(8P%Q_Kug?N3|g5%6W zbn=Ajs(2#}#-sBe=K|R{fop^Ou|t?W#VcA1$fjUxadT&97RR}KwM_Up7yD=p9y`d5 zb>k<}7I_qGHf`=dIx=Y$TcWktK}JMy`C=LTwOqb}m-9S|K;;Y)#e_d6f96s66X@`3 zEG&_06OijMxh2E9oZZv`McIvT$QO`r%AG|oQ)z>O4f8SZji)3**B&@Lz-z`|Azg6`AN z2UrMRBN|VGGH?Qi?(+op4$e>ruCIX=p`VbNt_#Rt@lDV-ME4Vs;bhUL)!KQzOQ21k; z(EBLjt`yW+22#BcX}bpH0er{VSi!Z$>AhK_5e?!B#DX9<0f?ik_)pW%`pHmq(O0|{ z=HIDRTQ0CWh_TaLaWh}}77W5C{d6GlPdxkSKld|bcG`V?I=%`EVlV4O|C+e|i`V#z zH~8x_@7HMpKZpytlman#6+ezco*lx-bFl~L7!(WZqlI2%{$4l5JRbyY$m&n5Vnba& z3-YwS@@TMY6fBA*kU-~C#qk$3ZlC!f97oVV1zkE{ByxrQC#gu3{%$vt|JOMV7DUK1El*(?Q8Dhmuz_!k5DeG1_cf#SQwANNuq&$+;F%HC>vj>iS= zz5;K|AZrIfNB;fyQUF&lyrtXpc9tW5Z8t6^Os?X(!vUsDweL`HSBixGsfE^&-toX;Ju2Ne*du*zh?J>&FAASa@kZw7Q-+eGRo259ohAA zq>B%kn`rIMJ&S2P3JpNSd^Op!Dz!GUg$t#|EE4lw5XJnoCnsUn_?#PU2gj*5$tlN| zq}8slu9|t;I$<*17&i`2@$zqO?9-^$KcU#W?R~fZvi|W6dSUZep`z*WttIQgqd&jK ztsIcS-J6--Ik#qf<6zIxncednUq>JOyE69o!dVA6GwjI;YcB^rmR&nA`!D6**qeri z1Cqsg8Y!wdMQpq6AZ#Bv9tF$@wX)D{cQpKEY5s1gljtBnP#e`8pLLrLWZ0l^T z6Vxq9jPWZ7>N=GIo&57HCK{UUrZDV+Nb!5N2SLIz??!did6XyyKLT@T|6fHJ3Cl3Mcnve#2i$@&|JnMwXH}k_@xFJ69X#G4 zYnocbkGtgri_Fpo<0_JN=_yjRQu;zkLa;JWwhLx^zFNTFf-Z7r}WJ9TeKeYOj4uaC?5OFX!udgXYSSO!PAP)K5%x)3q6_kbZrsnFf8G?_A`!wFUAKHJ+ zqkJ+^Ow9IX20vw90#rL`%C0poKloGLW(#^LdCf(zFNhGGKd&^iQ5>c~tXvpp?{D5~ z1!-};P8CTbbvH9^fA5e2Wp`t&)&>ZMT;USE8;YX_Jx#m+EK5B%y9Dg(sr*%1 zFp*WJW%)H&`Be1@ucu#~i=9pq3VAg80n=c{!ZtPk=xz_zS36hC&az<`DPZzvT``K0 zj{h$)6X`nyKdrzPgG2_R$?n;UGCEZwNV-WvQ1)YoG-(n2AON_N;fPlk&-u;L6B7ih zM=)!?#IOm6|MTm3VF4~zj5;nOKKhUn41JK7tCAi;pu!)Q9Sp@Qdat#|_0R=ZC^iT( zjsKJ~0NpVE?p1SQG_o$uuctxI+w!JYqR1TL4a$6aFWXK`*;X1gn5l>1dX-BAU#BJB z)32uj_rG^w-M8$J`D@)0eRN?tkPXn5TO?7@&f3iDw3P#On}m+#TgSsg_J8&LdN2y^ zGTE(La~KKNbbnOS#VdpyW1{aeygTN45t=~`R9sfPYgd6{ZAf;==wZv|uR&HMIXF4x1yjBz zkY%$uco-io{fCNFDPnbEmz~8> z-}b#D*a1GJWd*M@=r##xc~v8_?x7aMFj)w`EmhO((#gp)@eOJ&_#AuZ{rma4iV)E$ zR<34ZOo4x6h~zV7uI9^j{@kVznI?LtYNVl7&?m`}*HNFCPYz-!+t1Do!0dIjwu{5Z zEl#j|tav(YO?nH)X~Ml7N=hyyyJ+9HVn4_RO75hdq=5hAKh;Dd+tyL5Nl^SkBSG`% zdQSULhuBrF_0t7s?D=_l*+nOtgkBDxi-Kp>jh;@OfKSJ54-o-W54l5zN6WSi_#}KM zzDqqhCOeGe;o$ItZbL?HZDEzzbF;PIRzC?K)W{WeiugB)%%D)n0p4szm z4h-K@I=Y@0o;csk+mby~`BX+r!axXj4@xN}pvZ6oIBw-YXOfPkp`AXMRTLOYCLmDI z5+DV~!5-a|JD&JGD&@k|6~xcyMRf}eb=6W^m;H(?}md`Ek2R{)3nG8^_ zXZvcqI{YMRLph#3@v`gNELk7Rc`njxpke&18YQ?e=RjO|;L-{tK~cJ&AgY{cRQ^b>`|DMN-wO0iX=#LD5{i zSTYw8htH&up~K2zDM6Mg*_S5QvW@{TpR!9LBL$F(_8%PBWYjRz)$Lwxvc6YStdc*5$2M zUKr+4NY}o(tkWzx9}x*RX=@(~>wvzlfB@^Go_XFC)D)u#X!=_Wv_H1PL zYk6BQz3wxZ*Rh_q9Wl0vecgA{x*d&k&+m5cJIHsTUN1?_F3s33-N`N^z%Db=E-TS4 zJKrv+!Y;SoF0ailzt65<%C2z5u4vbeiLo!1w!f%mUt(-u>STW@!2WWi{gp)fvV8li z753Na?aSNjEBfp!r|hq<*x%T-XJH(wq#bUmIovXKsCII=9pF$C>2N2}p*G*)ZiPc# zy~DjWhx$H;hAD^pD-I8K9U3u?P124J)f^ugJ2pExJ`QkfiFACD=-8U?__V_DS-s=) zHpjL;#}`wMFIOC2?K-kCP8?~c_Nh03vQwv1pFIZP!6;7MiG8ZEbP(O?O}*2vdw_*9 z>Ft!$KxiANHr+n^?trxOuvM!bH%lp^Z#ckt464ncAebkeCn}r|e?yDAIe+YPo=&WQ zA`Psv>C+gOxoUBA88U^7AmCjV16&T}(8Y>PxuGs!D+YcNpTjeS>B2C7d zzhhk2D{=(rqIkUPhSR$OLzBE7!QY9l>#=}xH8OzhveoALxgIEK%07_ovb*a#=LCqf zWhZEX0FyzkbaqRlF*Is$!uVwi88#G4;hT1vj795}4f0J>x_6DIY7satMKGi9Q(r+u z<2ylTH%=-2ODx)LkRnUZ%l~hW=64yL#`pfyqfEW`rFXLgxL#DzUIXW=5$qAF^H{zfU3oa&&&xX^%nnAE zn|%rnE%1(v>*3RKnRUy;@Or#yNp^^cp&9ecll(rh>UIiu<*W@q#3uQiH3sj$=pNtT zlh{X(RLydI?2}yi+O5Av>$?xb+6GM@p510LoP7gET%$f^Nl|>W)w@9W!NjDo>=(X> z4X^#}u)HqcBE?t1kL8+od@mMoKrB^jb-zndY@zBpyCZ&OqOYPFRDEb4%3e&|J45fT ztqlGFntoB@kQ|JN_3d}1@|FHIfs0#0=W3>K8q zd>K890sg`)N39}`e(Un6l3^xni6#eKUbDXMYju^j z)u}2u3+{wXP9L@52XbX_R*jfY_N%9BWeKdbASqlZ**rO$&J?_Q3Qr&1kx8aNL$)&( z=U+zD0)L`Lkaop(Pr=q}2jpFS^JPm8HBc*IxBC9;tmz=D{RAw%QA!mWAsNQ6av{*gh55iMgf{<)sAm?sTk zm2DYEPEX(>eBvP%zV~yHP!l}dgaY;J%p}J{+*%6)TSZdnFw_hzE&iZhHXyPBb~ZfZ zoZS%-@j~r)yXdjGeQ|Sk+H-;049B@*(TI7>zI-auA~XUnOooKgvOq|oCutyGt(W#( zgcTm}q#!iLvH)KVllVOzFI8y^Mq$(cnjkT#bU$B^h!q@Bn@+{^r<6g5X<1OFPtp?I z<#>mDYiegLKq!Oy2Kfdo0iIhK*3EUN$3sj_-OWx3`6|20yWMy55>oyK7U5L{s-Dis z$)@M{3O*Q3-xHqo)(}4I=kj*NqS@%kY#=To8@w+~Y%vSe$d>q=MKsN(;k|qs^KF*E z92{)MZSnci7lTcZuOY^B8zwY1AI^IpA*}zv{7$|BU;b%^S)YC?E|^+h|$n*N4eZp}!q+Nv6Yajro4@mo&!x z9%W{npdb*fr6fDSmwSPSNNA`QWAre{8OQc4#JYTxj}Y`>`uO-VCTR%# zQdsubis9l)%i!_H%S(dVVisDAi~G{_V*wL##(sRZ-WtPiFF#@gDvX0!;Zp&v4tW&9 zDBkm>-ABnBy3JtP)rM>--u3(o2XiE=0fPp>Wjcs1EJco1d0jX4C7R39AkX4r-u zyZ3q(Kf0P%#ynt^kx+~9^fgJsWjJs}9;ovWln7`*Yr*NIbmw08fU@*Jt@Y6zm~(Ab zAd#Fz&UlrVX^+eBG|hG$%6Az;_|Vr~(_!EWSXu+ZZ5$?C)Il&qp2KC>H?G#5IEKyg zz`dH8fc?_)d9ST>W>o)|F5$hN&#%F-Uj|=>4`iL`yY%begJGj5XI^*xG7cX$Av~nv zV=b^*=aI7(X0x=$k86)DJBYD!m55M0{KW4p>wl-;He|_1PYL`x!^a={**y!1k1LXj zix!}}5q=Aj`gWm{>9UvzS7`5`tb5@jd0ZpIpcI#(c5$+U% zPUQI4-3t*ToBnzk!%ACuRwHQwJeHh1hx)$&aSV?05K$4xrYaM*+$*3FI_>mhM^I2d zJDL*_SKwhZ4u>JWYjx-bmR_!MPy{j#VTx!7lIdQGc!Tbo1lO>L5!p|DU~I9bR!~Tc zNqBHcY2#UFkzv3QL`VZoC}3CUlxm=n!9Iv)&;vpcbuZ`ia_{38&W&^)22@A@V%`1S32QO5q0(K!#}WZ=PoixHt$!7zi%T?Fv8zO}K$1Ep~Dr`Tq>` zK@>W1qX14qF3b#?K$Yg3SWdE7<5s!G^yExZ34FT|Y{JJuOa?^g(O&QK)psD{{2NmSSeLD5()~{pFuH8D^GAPcQx}543GP}!u*;B2N1oWOn1)Wn3b-mp;{b02<%C>8IdwtC5f!ZP zT5n`jkOm@8U=WS|KTnvDhK6a()=&gK5Yz#P1YPk2DrDS1Q6MW!(nS}U(GiG0?qEPi zBS-M$T}8`n*Q1X=0vV)`LlRk}kw+q_RChX-<4GgC45W`MlSESvEPsWDlY`iB)*CEO z4m8v*2Ku89D(+N-%YO~wVqrnypb}@BVH%`KBd*Lt5G-->NgA8g5QGbv{Cqi!J_OYR ziYDbCgWN9$mQ%?r<*cb=QAZ`2sivE9+Nr0Xf*Pu)OIlj0si&fvs;aB9N)V5t!Wyfr zv(j3tt+xtEYOA~Q+N-a>Du*eq!xCGpvBx5tEU3By+pM$CLVKyQ(^6Zlwbx>sZB@)h z+pV|Xmiqpxw&RjpuDR!;`y;pDvfD1W;-(v~yz|mquf0#LJCr*4wOda)C1HaMzpd)y zr@N`bd#}O^Gu*Jlv*ufpUI+U#NnH)0;(!khuF4M~$j$N?#i%Cyu*oN*oU+Q%Mcj}( z0sMO~85lM6gk`%%lVc$KjeKg!D+3+0&_ffAZ(QCD(*ZJcRC1_4^=R@&BWPA6ikr=# z(wi%91mY&4ZxCW|GkUNv0p$J9Mkb!|^N1y@= z9iA8zh#npKqewY{TuJfIMMECBsRL8M29j0Y$q+0E%M)P(33e1EA7PBOthfO9!*~)6586DB`9+>X`7xFM+5~Pc=St z0c8R{RN{&QoVn6LL?#g5O$1~pg0{PlQ=Y#1>$88W-6sb-d>?glmWo zuJi`U5QHxNPyxpXq7K9mL>~!21~Mu@kQfo986;6e7aS?UArP;PZ=@qFYiY|{Lgjt9 zI8K>haHR@#s1Z;s$Q3N3kNfyT4?Nq2DX%~?T=;+=xER4e4uZd@kq*P^(FJ=)K*K;P(Sb>%VFW6?%?(;~ z1<6nb5vUk~jDFz&MFgS(uc=1|(lCi9AfzFxBuFw)(p#v5o z#0pTs8VTx#H|_v|MM0nloCHRe^0X&Ud+O84y$>1Thz6JnGK@P7>}i_NggS-+({R`c zZPl0rC@#3XO2DEVu`Eb8cvuciOd?BMBFa(EL=bm?;ur34MVNL0Q+0rXN(2c94|_Jt zpW-#IdbQUK;px}EN^7rz9V}tv)mOkG)~-7(EMpt%*kT=V1@nD5X>S=fT+vh?zy8j3+ss>pz%fzQ=^&nGj11tXB?}8V+@2dwQ2!n`! zk+&ZF*jgYA)D2WbgAUaQ%8V3&47ITh5jWYz+qzT<((t1ZZmI-KJF~U($^;hOFr1&< z(TF$fA{tlP#a@0vN;)9IHsMgj8&DA@bv$?y$vxj;S z0xm@10OWXL2$3mA>(p@rM7U#jy}JTq5McsX%%TJT@xgy)5dg~|0|ZX%%@wZj3r%zY zO^V3jEL^m_knZ9LH{i_^MB$GT1!5L3;7v6!Fo|Kjh#+GghJr@sTomIu&v>1oN@?_j zUFbult{8!B=#a%UM3Xk*fI-&$;ltiUpc&B^fS=OokN(B@gL;y=f|-jeIuc!}L<13z zZg>`s0Q_Q$(cnh}Fp1$zSHe{TI3!DEL^T@v>?-~#{Y47(tT4qzh?pjbg@R#2%YOyXsDq=QPq zXOSzx;xT9#P>Ve>2|aWH7O?o=Bn#33Q8>~a)wazMT=B^Z4kILw&Uj~9Hw+9o5>SUM z2OS1rKFaEP;6fjI3?uOCp_ryUig$bR;dibC&r_(xt3aLLd`NqSegkKgZ7LK43J@A63+yG*& zqe;A26EF4$Gb=HP?hJd3q$vzG0yL2G_yZfQ*2D-fX&fj&xg@iQKqK@}p%(LOF#f1u z8jjF`SohB#^z{d+&wPYR4B-lg(gV6HQK1A@3S7~sz~GB-eD!5UN7!iG@?|>-P522J zfSS?K1VvXpUGS@N^`uLe*ZqETI6nXTKeW?ySF8BYs8Le@5=ABcD1iSd-~yTqO&H*+sKXF+01+wA12)7BFkl91 zpuJeYR#_mb_{#_CRsw8b37X)!kdp|i;I8OF0-oRt!eF(a#0t`2s&oSh#$XQWps^@G zfz{v-%0)fEzzz~&5!wm}_C6ey@kANt`R0%9Nv z;vf=YAsXT#B4Q#UA}S~X8aRLj++ie2;&v#21xUapVqzw0;wExpCwk&1f?_C&;wX}0 zC`P~}qGBql;wrLYE4tz>f$c)VlVpQF9KsQ3ga*mV=)@z zF(P9!D&sOTV>3GAGeToDO5-$AV>MdiHDY5nYU4I?V>f!^H-ck0isLwvV>z1RIih1a ws^dDcV>`OzJHlf;%HurJV?EmAJ>p|N>f=80V?X-iKLTVx3gkf2N1x6L+}nETx4K9?A&_vS8_6tP^VRFrDXC8|%oHZya}L=vh=MfWA7 zQq3(Anv#~J6-iNvF1qR4_xT5$AD++iIOq9zoX7DG^rO2cYQnU^w|@Zu1OONSA^fp8Y4D|Jg#=0t|`gmPKilL!4#ZbfCkZ43PG%z-`q^MDi)s0Ne%}ljTOpR?!i6-Wj zwq|Nn3oTPiD+db=3#x?^mE=fW=4hoywXt)tQMa`-cd*m9v9ocu({Z)av~h5BchItT za`A8^J37%k9F5$ZjXa%n9GAQO=c2`QC416Mm%FcUb9eQo>w3GJ`+DfRdU|`UH1YQ| zaR1M5<$s>5SLu2(yjK5531J$n^j^*MW(0egukkiy`iJ`Z`>gXbj_@}P_ow;>2CWY; z^9fqVT1|-#HV#}9853$6vL-lojZMhf@ZfdP32QCZgs~r0HF!%5QdKxe9e+T!MLo2fRB}a2s?h}<{ z=O4+<6I2Ts2SrCth&+#rylM+q9W1FnUChiWJ6T*>UN813Efb$R?3Y_nd-3aqHVcKdW- z*Xf{R=UdJ;oaw0#t+{lg;o_CP^J`B^+b&!_-+wXu;pNc5%Mp*HVP{%88k?>@Ze081 z+PeDI?x)QW*Kf33XzLwqje34#!;72IS7iOlwurm!cV6F(y4EFs(-Ga$^LV-|_FZ?} zOi#kC{%0S0H+<@g=^MD;CZG8HAa;Hr?(XBMuMgSZhY~xVzFT~}>F03Lh~mk;=O2EL zY*~8B{;Npr8~@y|To|1As+@Q^HT~wpr`gX7b6*#~{P?~2=kM>ofBzc)K!8}_FJKG& zJO7Uf0J8-AQPB^OO4@TUD)XINcj`4K-HZ&Z3AlQyyO8X>ZLIfdT~7(cyFfp%@$~&N zYWVrs`;F$larYZ`!`O8lQpNhAN>uWmqxIV0I_3_os z=bv0)UEB7euld5$E9}k!gP@k#N0BG(?dBIO@Ho4wmRHyAU%MQ4>t}=NXzjhVSJS@3 zaE8IH(pQ}#4V(D>)~gdeV$+}#!8aP;Jg9WuKHl#>?-tANn3X3TdimmU1A5+Bdw9*& zy~j5_I1zHI<-_yVw3+d^TgNZCtzfj*Ro`3;`Cq4~_Z71G`oddzUC_zU+c&@N`w)EW zYU4oD=TGpjOYcnhn7OYD(~mDCJiPN~YTM4rumytQ^1Des`sdOf-o5+xFMvvpamx%y z4EYhc=9gdXJa2q|jrp!N z>YIw#%y(}#P9!@P75pN<&Rdyq_S{reOpCLhwUt&6(cq9Y}u}{)GWQKlAJ!YjE(;AJ40`;^F8~bV*BN?m!#5(ko3i@kGJMfDuH%x`FfvjFLo#n z-Bi)(z$JZXFrAYjUWOCf5oNk19-lQcIh~^Ja8-vVjG9l~WL#u#CHfienKme}ZR{nD zg%9+amT-tpAjCM&{^p|wpoWWw~nGny@ktD0qE^-Tj9O3=Tx(#98bPYdqP0G9tW~lDWU*+R8SHdXKq$ zd||-yJ$=Gozece`YL%%-Ea>i~tPJ|bf2r}%5?4fOo19LtL|#CA_#8Bqtud0lu>m3T zT?V#pucUyIQZUDgI#{mhEz7FhmoOlM-DZq0Vrq%*fh!$0I>iH zL5J*Mn+kz0CLiV+_1cMuP`v z<_a@=gm*sB_OMi3c-m#pgdpQbomPHbutgaQxi#x?^-aAZ zf-wnFn=7JSZ!+14b-dPIIlnbzyBxDkr*c=<75=>?e6YoQPvbzo!;bINSC$CpLjWRN zbH~MK&C<+(jPbf=gs1;_XJu_ZdtHalBrH{QEPKycAeYyPLeu$jzGU z==a(%vVLXsoN%}c-cw5 z^{e&5zuY&v+|lp4a`mGQ&TAoRU*aOR(@9_5&%m<{Z32_{w=>cuj?4Okk((Ye*2{@G z?{u9u=0AP<%s~Q@-metxmCFpL#G$$Gea`hM2KReoVLbn<^!IDZ{`ZA8NP!-}%8FsO zl2XCd9#zHa%Coo2i~pw@teK(xRMy{oHq&=$l6@cy%Icc<_eQaQCdm=)q;G}|X?1Km zPmtugp0?)5G&1X%VrrW(c}d~7&F0z@S^pK<2LJ@U+{XZXyQssH0qPGGXVT$G)?=o4 zth{ya{`DC&RVX;+y=V2*CBv`NRpY-&zzP?J3+y5sto^T(;;mVz^jSKZcn`Ol!@pJYr@K(hbpE_qXN84+kEIj1b#V7<_13H* z_jT5ldw+M-ey93bIJN7yCwUJd{^VxQe#V8%totgr1e=|BRYHSCf|eC|pY{K9GV05@ zo!hX>&qaMOj8E<`(xgOH2lu{@UNcDg!{%MuV|QcQm~~Yf!S&u9HR1ngOhxY<1^ps> zHfhC*_y;>(GhVN~6%_GdR594na(&>#&V9e0D+$+IdqO^PtACA6hhD$=bl_v=t>+46d20nQK<00IkFSS9S1$dY1N=mr45@2w^hFKMSKRvjhE{T;e{1MM)$`v|^oKVF z_Y5wa`1SiOgLqS(aj4kUlOcVm@+0lNajuzU({xzL&Efjcujga_yk|YUIkICMj}LZy z*WYqIZCH%VPW>~Ryyn*E)4^{ow^mNSo`x(Xb?M`6CdiqrTjSpczu)=w=M%K`hl}A{ z%8TJRx37x~2iU{Kdn=Yci%Wh#fY+j=LHpe9R`Mp@9{w2Ix3sX%9}T;Bw7N4ULQS&f z_WP)Zd!JY)UKA2)m}@*=n{cxTKoM zo>-KZ-1$;xRM6*;@U3n4(wFN?5C43uzw>i2acM`>r$6)6e}5l9|NVOKq~3hp-#>FD z|BXDktM~c&y+890?=F46oA&cp{OnEM!QXBWf(2Q>J$NSXf47Vw+dZo1=b$Fae!Hjm z9#Zy}t!W=6*iV$SF%E9MHlc}=rd`RMmteE~(_RBO=dGEO62479T9*XV1Q9A_m^E87 zdMG@nt(h|ttZ8N1mORxvz}`<1>__>*k*I@MGV~CgR>TGzNpM3FK<996j-odM*;|!7 zS2O`+5S;3<7GW7TXrSv`Rl1ZrLjuOa(%QvRN{gon$~cI9c?3s_$l0F&0)znafgr_!kVS4032voL zaFieN2Q7FJpp2iVpt^hP5aqVk-d;z3&4W)atphFyL=uOur?L{Celp%>($ z&g3*aCBM93&nO9~OwPcF^u9&u;ajYqq8klwnE${1~MCs^H;($I5`R>k}5}Z(TKG&4Aqk0 zFC}EN0ecB{0l=@3!r~>WRP93(4cuuCVp^#hBg4`m_>bO0*-}`PWC^p0PJApy+DMU) zAufx8V@hH99NwKdgq;-iibkB4BbtAbj(=+Z95k3}r7tG(y~YF(${$`OJuk@0qHz@LLaNnrvSv5$eY0Z_&Hgfs}okYN`{2#|yr zlBu#G*lM82Oo4d0NLU@VZy^lT2cS4Kw9OnM+nsn(<;b!ItQH&0mWwWO5LL&xbtHr% zfbkE&XE88#B)pXy8vNJUmuM=!5{x5&h;1cgk>Ia-xu2AW7*ZAL9+cgEOoqI?NCNku zTLmZ25^#JOW-wE*Hz<(>fPywk{hymYsfFTDz1i>I0u^j@=L#j(z5Nw`A zIH!X@&j!vOLsL2UTQqQsh@dLQC`ecpxzJbwHY#z(Vd!}p7A3*!1yrQA5_CAIAsJRh z`7gmR#ti(4n}xeDH7FTIA;xG>L}LIVO`_UG0wNgrdJ;f*96UITbXpPlDH#U=%df=&B31Jcu3~lz&C4e> zQ?IL(EF~AFlYvb-@Xr{W@3RUI8u4Z;_ag_pLq$E6MGp(O5z=E?l9t!f{3c4V z?bD(Kno8z_Lm)|YIQE?zn3*u%gVOk{Yf>hWimStw4KHnl#Dhb|&T)!2> zp~^j~VRh4NpeO8#{=R12G2jm6Up=aHj;d|hU3<;3g&Ni3tPeD61M2isuV{c$f~C@k zH%I`Ma}PrTKFQGW&$*vS0Ge|TE9uts1lV*UmJM+AfqIfGirl*N19!uo(Uf`~G%BdUH*m5}Ipp1L6>*v35(R*!%K#m*aN-uX2SC}& z0S(EW*%ic(`>IY}1mI%yWeBu6dY2ZIYj=#hc)qfo4UEYVGFH(7N%a;BeW9kOf!to4 z)x(ydw~K&%v(hWATtiQl;T1$Ur*%tzpQ?oW)w(C8X3r-jplW*u6a!mp08pvQq?B4e z?eyK(#2mZsp3gOZk85n@vTTTHYycm&gfcSdW>-VAPxseOb6GVwcvv|&H)J|`vx0PF zK_YvtJQAOMoj1cp(Q+6&GKV<8qXI6OhGi5JJ_2&9dc0DG*2WF3LErF)hOB;`a4Y5# z8?X;#z1qozqHWDmnvni`IQuO?bSFL_0rPCQD`xm3)DS5WeIx-7!cJ}xp`&CY3nZ95 z^+7uQkyTVhwOGhL-Uc#mwZDI`eZ_D)=l1pFyslK0Pc(2l13%AJIj!hFlmg_7kJ5{- zKG{DICPt@zz;Q&}$B^oeLasuBIdYS0C&A(=#5GbCG>1DoJGel?gisV;W?L6H59evX zjk)1@2F`f);owpw7p{uam>Vu>z>oeKrn+It%C>zX)xrNEt2dmSQNk-BZiQ?}Kefxs z4ZN(x;bmM_P(^e;@OY8CE>xxFR;3YN>Ka54Qar#$LQf2?5)G zJhAZ~q2}GTW8bp!5Z04G%j*OSN+%&qnFbZ?hv0hCswxb8R!Cny8G#%`Z3)1sNKVd^ z;AsI0>Q==7^elfs_?UJrLM&&=@!NEIW- z)hPkrXGiC!!IQUP{tdEe0GS1Gqc}~XpXsaFz2un3^C2&*vpSkq_St^OcUXDA@ddXi zOb)UE4u?lS@pxViq*;ko<`5y`e}(XsmH!)?dQ}S&JWc{E{5-7JfFVPKv#qc=Ik3tQ zLy#kNN#ZdYXam6`l&vf|P$9c)C`A$g3F^>|1lHNj#Y=npWWZ_&&Y+cTrGarIn6G@q zf`ni~;KMuuQwheCKtT7+{o|s?G|+{JxWYoK%8}GCQBIuVmCasb>7&i=#KRJRrG(kY z^2gY)ZWUxE>%zHIFpdTuJkQOSeeB#{RY4)HV#9Vsqf{xx85v+0))}?^AKyC`MQWa@ zo(>5_l9fmu2)ShsR)vGKSHiR1KwTxSQVhgN5E{}OR@zU0G!!oUT%cNxZGQm7$YG9i z=_v)s3n#{|6sj6S@HjE>gFa*X6!G8Q8LFFnAxs)ULTHe#9PS4~<`63KE)QTn1VBQ% zpf3ZdBCTlBf#Hlwh&Y7tlJZ!H4p>;CYRLYK28v#UKB^WG{(eMi(LN*ueFQKCj@pE0 z=kb3oaQl?K<3P89Rzb}p+~DBcrd1(qf)(NNk z%)CcQ)EQ~VmY#8|rG@h$)1G_UlZyS&8uQ)kv5u6}RQItcpZ)E_ zi1P$n!e}w*H{i>XiTJbl9Y)y5{U179Iumh?30H- z^iq9R=-@^C53zfdUM04anOZ>mM}_9Buli~y2psP{@zSX~uDVN;*!h(+skZ7z62d9K zIM1vxz_dg_(?k$30E~P}l%tV2{BCHa!G*4?-e%V)8-pC~BAokwShUG?Vx4xI<{`}( z9f#J`oI^jDyIj5$?rqoI<-BI)_sMGy9dFxw(u=nboDjf;B!RZxh11stv7dsa$I2>< zQ}4tT<;)rc{rs}}Zm9PBn;yi|wdOV}OU^a!(&kS*~`^Un>@+X8u!9#o3&WGy0kv1D2quN!J>+Of~jm>C_qM^ekkvK*( zse40v%ZAMtn>(_yK5r7>UMtN*aR-qtD-%JpOv6p3>m$uL7V^L~NXcztq4!8GsT#l% z_QV>48!8hs!EVRu0Ipb8vdy~7En(qX+zw5nNZEwr4uurVD}Vd$`^#*WyNS@lY=vJw znH;F)#851;rprw>_Ik(V((*yfhN`gCTVZ^Wu~@9m^EPI+WX+aW6{1pcniAF)!=Q_A zrbO9F3CM-yN|Z>xG8HlSeEOxn~~#l*{V}rJNZ7mqVPQn#72>7&{{?ug`hZZ zaB`yq4*6q$9^YBa>kj_ETwjBz^w$X^Hd2^@tKad8j=vP-~lB zu9JX2p_R)$7o7(b$oxvfu#H`LdsIWGXF=#~(^ibk17X=A|?79&A>K>}Cv@j(d#ERefAh@-7 zeFWR(!Z87Qzgn>cl<0^hBi+=M1)8B0ZM#%hggOJ08f*eiL*7pY)q(6_I9N+U+Yx95 zDZ`1d{r@_I>s6gynmpCfFd=w|oxeR|yJ6fM(>eJSMC$Lps)F84wNryUZB0q2tl%4RHNa>QriBU9GWH}Du`4M6&gu0Md-$&5vx#Li zI@5MEoB=OD^KiR)&C(x-!UdBCTdAGMKN+^#sb0n(X$)ubD|l{OCurUl0Ccz#HG+2; z+|vwXxNqwG-~;3;))iTkC2*@#vO0Jr$|71S4i%UdK(((u2^DudZ4t<7vgJ>oQ_}lT zy5SRbf1tuN-y`!CYk`3_)3&O~u7M#J8gdAlhkJdub!EjsCw_`kNyJ*8BE-bA=4-TvG=kdb%w_iy4G(U1#A>^jNIT*v#q&70D%*WL@*i_XtJFzc_Yse065%z z#w*P17#OU5qp=}Jo09g}Dmtm&klyXp7M8cWprE0T@nNkUv#4fpLMtP6+RH_b+kk*> zqRBv{h6nNT(vy+`5o+Ty^`b_vE!wD6_OPY*hfoTxDHtHztw91fi?V3kv+dX&?`XR| zx9g2H1GYQYMlNYKc$wv8!IDNwMW%8`;FZ+J)_0={#kLFB_~)XlW(Vr0^?Kvc-d)g5 z%8HSB;wIU7w22v1G(SAjvg-UARFb16o6{*K@^bd(tti3N@E!JNqYYc2jYSq2E-FxW z^-!X9Zj$UCe(G{S%M5O1jE@ewLEKQt=j!cdVaZV>k@5 zvRK;mowgV!Uly_9jrxt2&^EEmZLsWw!T)|hr})7-!z)TcDj_YDwAUk;fy`ZcfWyBO zfvu%D1k`zje7pw?NYCXNbpl%2xPCtAu%~!fFCs30^sx$ulx#9EX8Y)_Y0P~bat|11 zHLva}1vVl~FxWt!P)oT#W13=$=o$->%j8th^KLK*>|4rH>`#$zK^!lSe8Q<*Fm)cF(j2*pC zPpKXk)TPYG{p$DneIh-(70Q=)-f^D%bnt199#z)9OqY?YIxTx1BYIPHdkChTZVWbT z@kU75d=mRN_IeB+yHSorPQL)Fz4D0js9d9mImzNjnu6ikv7r;{D@)l3I2#_OaV2D}P-PBMQJmm&R%wL6 z;FTCw7(flm~FZuMyBOsHj*&WU7DL2n3IdePr`&Pw8HX5Y_?38 zp%9qB(RY-nY^rvy#I^^(h9XqUvI@7FwXEfUxw4$kH;Ts;#p95*96GNg6V?wGOtJ{O z8?ZxUY=Rhh{wGeBbws#C!yTH=PZ1M#iIG)Vs@&}-GDw*4XI)pa&{wCC=rD|*j9wmYi2+4w+5tzNu;I3>ybOBI$vQWpSRmzqxWfp25_(Sn z0=HQHw>2;uKpRY3WlLanKY9__Fggd#gCR&@&2->p2Qfcz?=mcL4uN6lEXE- z7heXZ(g)w-)s<~%W%l7(C?$}tB(SSw^Mhp%OzK3>%LrK#gH zowIaWj%}9b0(qM_$RHUUK?gB3fZPCEsYJv!2=6!9VFt9fPD3Z#SfXe|R8Q+~P z2*;pyD6eIca=aKJbJTTgrVu;bZNC2T@@4A2SQJYk@TttP$G|i>5Ws=vz#Pv?LHJy* zthFRY0{QAZc0yJJRr1azKK9)_ycWz$7I&?cBD@;lG&)S95&~(EiilT#5ngy2xif9; zpRj+(9B{l%8q4hD3#P!}OB9|VjeiiSfR-tE<_i9DMUJmRuwIe7S@92E zdASPF5k>wPMM1NIzYJ#Bz|+a%X;OFu8HD9P=8h160RVXfA{oL+I|%`xS{6@72^zO5 zs*no91^^-DN3}*dt$(twI4_kXOrVUOT0UCmJ9>Kk=$Xx5P=yKsQ~;xZG$RJcblV=7ExDbpY7ez)!{qVwSKI7^VsG~=!|Jp3JDd<$Xx>=n9>}V2AEkZui5Sy zvK1ir^30X6CAT@aPp@E2R&D}ExHAmBFL_Myp?=Ge7o*KDo_D{n&K}#@fJ$1-jiMn# zA;fFX!yWUi>3| zs^hN)V(l4xeTb*Z0$>ziYFV6_lJ6pd|Hl#BKAt;cfYx00@^5qSC{hVpus;^(?N+|n zC`Bp<5I%G86_gw*gKtC!Rag)}0aQfK-@bu4N#Q;a;(c>&0#&$;j7HljHSJ@;$X8mK ziT>_NL_9k@S&2TRRQab)4JuU+@d-;xl54J-{VRSC zT$He;9WTGfjpOJ%JqF*JlJo0${MzZ5B(ZQO9sPIxYiC2Yncu{6!*GktjnvQt>&%2V z$QQQbuk9c$olhB4Ctk#DtsLvSJ=XtXZ14#5 zQ1!)-UEE5BAV@Khv^0_I`Zn!AShC;N9?!f~4k|tixmJW=QpX2&yqsK$8=v~$`1JAd z_iqwD#Jz>Il1p`xdeVg(76pQTpxH7l%$&{>PKzp%bEgoiSpu~Eb88OYsFkOo0C2*W za0sx?95-)>`Sk?OWC?--UgT%KJ1TrvS@G`J*>_bf@2c;;s~LHBd@3dH9`dKp82@AG z&afPGCC@53=XB)zGh5!D&3s=keBThCbMC}@XX*P3E$^ME@Qe4hoj?1&0W~Alnz?E* z)95;L&2OeDa;AC9OiSj>b>YkztsE;EL}VZ!zxB2EO1-iGFZP3N$XS`NbPMTU{M-{y zwyU1|mlohV(rk}#R(q`w%Mt7gNyTO7SXPeoPR$Nxk~q`AQiSB`gR`WV0AA+T+2P0? zOClkf{K#wlTZapI>T}1R{PT)U5m#m9Y&PGqAj;b&MXn%$V-_D@UnZtApv|uL$M1+Y z(sI2h@I%IshKR36cb&NRan=>K+5C}Wgv7idaM=K0dO;@!BAm2tj?Et({P@j&Cxazu z`}Xl$11emU^S$Wd8j>)LP1KSFeMfNy?;+g9pEd|XVo3-y_P9f@0M$&I!p~t2u78Kn z!u&ynviL9t%twY?8dUEupCje1$L`U56Ok7TfhqwxEZK}6kE53N+06WNx+`Zc4E-Mq zaH66V8Rgm~pN+1|b&hHrP#5+NyOn<4O^I5X|D(yZwW1`6p#)YaDPi8aUT(2f^V0yY z^Thm58EQSSK#M9|xjT1pw1m^U2KbB$N1;~LR7`FN~sIiLdS zlRW`4L+ss^}7)b}E(l)m~b zU872PoY4;ohF?{KX0rt~5&SsdKJ35PxkaQ374fE`Z0l1fPI++YWECC|WfXZzs^4x3 za^67T4m@|^MLO$eO(8|DyA1W|GwRta*OCIl##^3TH0~fBDu%!6vvsMaCLby1)iBPodo?oX&I+#A`u~}IjQhf); zNNKqb4Qq*)C$lqxybascc80(ak&cAGJF!hQN8bid7S`#@u|gBzW`@p)i(W2dT!+6= zegk9XAZw1r?;V)Pls#(lQNt2g#`zTkWadgi7;-zLvc5^Zp{mF4zSCyk%l+Y7B##?y zHoxV8r}~fPg=im{Y*MiS9B0xKA@eTJSDl{YWLlp~9YP*VkI3Q`2hIHU$Gc}|iE)k| z=|eSOQE-_*YCfIW>wCwHMzpn{KE{(YUU##Fm1?;-rw0<{Ke|h;&0oKDddlr=*r*uT zl;1EPEKW`GpmEnav=*;>?JLl9B%;IvkBgS9dv-ix(6nFia)THbJs4r7DQ+d`g4omE zEnyN&P~F2*w1+yY-X{TeGnshY*;|8?${zGM4aWkb zX7itF4olKD7T9E}^Uu6;(G_$rw3Pvlmsy;C&)3pyHTSf*;i5aLz0Q`<+N%G3D^EFp zJM(CQFyF%7y=X4bGxf^tv(F9>Pfogkn(k{XcX6i}D9ze!8nxtQ`O}`)smj9}y=>IX zJ@ToJOcdxd1yEckGE2D&P-k+X_PM@oaQl>_55Q%8)+$4q8{Y4&OO8X#I>KGr0x!Py z8JWGt+YmPH%bKiZ^`t@V}Q*FIK_JBMO zmfC8xE=WRp%-OP6Ys`SRU|PSk?A5a!mK@Th>>+phJV}6J$q=X;+EZ%1fk;d?V9+kw_iYwz3&fbRr_Z*Cw`=+Q$SQWAt8PGk`{ zKn-Q;kQ1H_OO*>l%GIE&ab`dd*%u$%0c}5iDgSC<^@~%L77o0W9UY<$*cgPj+NrW@ z$7oEdk_|(;yw^l9(Ym-sQgveS{}$#tUaOzMzlckUQwDVXI58}s$YBO$`FLZeF!Ax; z6vKi)s?lyHej5f*-f;YDITI`HKYe-G>U&-UI*mHAzAka7T5hU}=I~0iUb8Y1( zTrS^T6GQ4iI8=Mv0cyKEK~}vz|tZFbO3K`LlMmdI{d;u=P3;PY#5?;QDSjWldWbhrqvSR59;7{P0Q&fv~6858!U3 zo+#xQcHapfEWHd|cU;4F7tgu-6;Dbg5kc zpL8rJjZezAT*+Cz>-?h%?p58wRuFNAQm~8TSigp=QA3C4ap(|rx)MroD~0U!jbZEB zg=oGUDHwp0Fj;(bL73TWi_8n#%2y|gX&2%JSoUHma!P`rAs(AYv7UqmbC3p=67eTC z6#H2Wth)HsM58Vj)*u%k%=!=8@2<0Wo(32xB`Vo}lBh@C092QD7^5xLQj$y1yC}n{ zRt9WrKZ6|zya(D$dtp9WZ-^Zisi{D4Er}9}Nsf#kDBqRTkqFa|ZAYIp^?|o3`OA7! zbjkFNW%`tmNkk!eUgCx7WAjaC1Fv5_R*BxPH#mp{k!ec+UmHJ1&@iW06f~*v zOluNhBZNF$>^~Y0+34%ewd>F*9h%DlY#7i|it!}EjTEOWmOJN)%R12uPEpBH^j_KG=tbf+>Ri#2T zTRm5#OQrz9(Ccp#a9FPDUfyn%l`%db}Z zfN{B?gWSgMxIxj`cHeCdX5PvK5e(orfJRWrgSGwxwFcwHhEugcE)v6U#v~yO_HWb? zD`<-iRC)>XjiA3rnil4hxR}J zP7R<<>97e?=-fGJ8lUenTzq7aZ8>tvZrsFv>XiNYm)LRdl@Z=H7_VgkGUR^HG6Igf z`PwG4RDVgbWZR%`c?$kn+-bq`a%R`6^K;Cn(d3&s*2Aytg?03Ai4I!=-75Kd5QGr( ztZF(#tR|ecsMwvNv}c%P9wT6-pm8dQY;1p6Ie<0G)jsc){QK}iv8k8EY3&Nrqv<(R zPCM+k%v`!rvwf3i{C&?86p!>oi$3o%7a;AT_fJ(N;`gR<=$QJ>s4}WqP)iclDXFRp zZvU_L{D!Pp`p;RDzL9}`TO<`BIs4*#D6<`&2$)?KPxT`26C%e%R;Z59>kaVL{^F%E z4H%P#EEXa4$qud4FR8Iid>AuuAkbu*p+@RB5x}?3V&Y}YvPDfoIW z_A-Hg?7xAZa8;xp;PZ2b7ip1U;F9kU1`_nAJV|^I;H`}FvD5@fX8aYcIe04`YNvpx z&pasWut0dlHs1G`>PVW)@se39+gQZOfVX8m94) z%_IOuzj=E1O|#(3AuAPL%WN6?VP;j+lcC=xJQxk1W6=s`z)y0yaPb+T_<@+K`t?!=`8Ee-NA(E^UVdFIia0a$~AO0s1=*T zJV4g}f@zPRpsARd78K7nyv3DKfvlL9lcY6-hhnx;FKo*CPV1zJ?8y=@+Tdp;Jv_TMVcroX~ z%IEfDb?eNF1X{f2E&_%(NeNi`^$!o(`H`yfLu4tSCx@AUKJ^t&7CF; znK|{fX=6(D;Opv9A06A0n)sqUm$8M)KCAuxzS8r&>;ca?-ahxp%cS!x7V%pz_M-t4 zVEZ!J%r*H@j{^kq9~e z;wZw7E?e)o+QfF)lfg7eUq+q9tTm?uF{A5S^q#RGdKa6L34#Upu*Ng`-c~AmR2Pe22dE z|6YR*Kh*E~jasxqgkU7>_R_yb;e|IVeKcZk?_{U_qg}Pvq$1$0@4B~79z|W@bOKphpElYkIxg%zd}-fRP_szY zP&wnPkZrD=)J=L|Mbchh6fzy30PD^71b7K4fZK_7oi86cHzJlTrrO2{Ova9oF2NIv zi``rx|71o|q}KWKeDGptZzKjzB2xATo6s0cb|>J|nP@=JTkL&n9eluUb&#@Mmu~R> zGLm%Po1~dPv&0`XZEv4%^+MQIe5jbScx|t}o@o(qDQKyb?BigfuYN%BlV+C75kB_08I$22+c*eGPEgxO)Nr>&d_OP;5B_5 zT!2FqFsl@hzyWp%X!2&gk~_Kp`{0*&%4gN_xGm2#thJk zwHh(=0-rrIjzw4$Db#|Y2v2E$R=dtLKu8azk{R0M)7z7(a81ysblL^ab!|=Pbi{ z)3FNc|C$UNxtex-0~y!$uGDBRQ>U%dqlOo&LeV0Jf3WEI>D3f?@{7jW`%d#PM8mu5 zp&xw1w`y{|)gp{FS=WBHx67m3et&gqO@{@2qB-+9D#+81>gXEmvi z8GsBjKG5Nio^$=)rZk5M0_Ayn{q?tM8^ufUA}Z!v0#)Mrp84Gj*uagfToOTvLt}n*>*BLut>#MU-Y7l zhnFhZk$;k2@L#^Cpwk7BV=M478Rltgg4p0zxP(ECClHeS`@(N$oc};BBzd|Eu82c3M$chB~Ek~s5NgZJjn|^z_ZADeCyrjjC!cv002qnVQ~Dr$87GMYP=U> zQ+%PZ_=-)*)y9%Eo6?(&rT^HJ6*rbu+1#&hEc*_in?#C50P-vk?!tglcpwS@U?Knq zKr9(D*jWHs#4G>8KsVT|FGUi0Y63{R*)RKqh}(~xH?Kh+oqF;p#J2vzllm*R4OgEu zq}e{c`Q-6GwvEM48mnxd)IWLh%(niW)21jVeWPgYHW2T@SDg_deMArpk8<)G(#2Oj z-I4f1tmD_Ru?}J?deR#Hgzo2jYWMFt!q)a|prKRNy#N4CRninznkG-3K%~lp<%!S~P&&carmUmyW@9zz ztNYG%i`%{*`0(L^!;h<1+*4yd{(-za1<^%0;JN(ajn76b{>WKhQR9O6aq#PvXak>T z7U}=JOMdpp!iJHuF0<^mkC9i=_h?AxIA29mU9+q+e77fSnw{(|ku7^~_Iu`gYZ}&_ zcE{2uea1SJ;|M@7R-zv&amfVx1lpy5xZODqg5SM9t!9(uzrS!thW>V1y5O(keL~k8 zWtLNqgZpBo0bdibIu60jE_ldsC=9v|gselMyVT7?*Q}@g7Di0{Mw(0SZ@Ce2?AaCY zxF3to<+NTEb`ZuYSZ3Z;?kAl5I+bqG9N2m34AI?KRrA91ns@U1^&1~09sK=RGc<6l zinEbKynX&dNfO~ttvY_l&)ml(FnAZEC0^Cyae~Qz-D&}+MmpLb*x$K$ZV`Rz*ckaq zeq-=ZlGN!d^18tKS;pj{SG9mU&e{KUTWMzTKEcGN`LSpAzh#&IXifZ!z#ly-EyH9o z8#yp!AB%GDRx`IXZTnnOyGhe<&HOW^txM^RGP_|@QOEgrei>B_hn)1XAv8t>F}vj7 zd%Imq6>kMCEAH0DkQpWJi6SY*tMyqxAu{? z5<&jP&b1%Ty=L7;FMBNp-4DF5onanF8RxD0^+|_lQm6ukE&^cW9}=jB|2PM+u@2Xo zvSpchV10UeW_WN1^_s`fE`y5Uq1|RLJPw$_yW6q_KJTz}P6C6HybZVO;K;$lXGTW6 zIM)u29zI<$GU^@r;^5ek$PXi9$M{N~_!=tPKE$!jvS+jwj;d~lD~n{%(uj2#Idq|WenV*<~Yo%hGI-nsDe!`Ry^ zpz+&oHWC)jhutrepL_}(cN~9*c&ZWaIlu%y?t>eCwAfCtKf+IT)9@;GTjIX3d7H5E+~M?qj&FFEzJq>&MA2{V(76aYS|7 zXk_on^mVRR$H3Jld7DUX_0{RBJKvbY{&q9*uYc+$LDIYY4hwzj-~4!&ag1=`4N0pr z6<+2KUo1%4H}z|=#w#*%=wHtg@(zua4cwx#{;9PugBv4$KXbXZQ9-vkv}|ql->SE= z@Uic^Jsir|drE(P)MS9l1FWBm$tAj&XT<=0W|5xO!i;_T{KT_pD>^p_U_cD{+n7E@P#s z>SJ;^%HF)sh zA^ROQzTo0sHl0HeQ=V(uFg1+?>EaEm&!N==qqr9b<;mY#z-0(jdkEeYVkWuzDj;4l zDaUqss|oco1?qu|Fm`PdvD_M>AC)JxyGCD6QQOVHDQTp@Ql6)*eP$5e{xCk6Bl682 zFWmHBj;N1Zs=b+#1ilQOJfOvmh+Gteb(<+d(fzrHK*%n*xLy@9aT(fC*t zRzs^K2I`akBGNCEy!}vzosATP|BzgL18aln2oM3ncPP~^Kzqt8ZI5n?yapgo#D*F( z=miKRTC@^h7z1md+^jp~D1-Q>@1eseu*c;Z){h1NG~Ji{kq1G~gYmrUg(#H)fa+$2 zMC%HWxLAnc4m0_%SPEc<=(Jg2^O1Ru(e*jbnp%vMfQMmZ%kA+-%7P_If509GRtXYa6uHAsr}#;;K5A zk-Swx1+~WE8*u4-pHzsv!T_K%&xgCaOBCu>qRF!=FpqesJhsTw+81cCi}fW(rpGGb z1Ta+JJ2h$ogAB7p2QkGEC4U1Ocjf_Z6BMJBuKGg6{^2QMMK^hw*Nmlq_NHbt}FI`RJ zZnh>0gNmFH!#?}RgRV8oESyO5GXs!jHz}W`NHl)edZHxN%0W4zxF>XmrEUg@)DSDa zm&hqYY?6?)R#MRVDVZ}A1I!>*^*ed6dH@z23srEVoB=+|1WD?TK6mXp`WYR=cz5Cu z8~(m-gYl}ZAIme4q-7mv>#72{#=cVnS32zMD2W%it#E#NC(UWadqj?{xR~P#tHs0Q z8>Thtt3`GmDm)inp|V_;vo*quA4xpibrRNL=RUB5of4h-D6bRWw+Y$g`J4b&8>vGs z#z8U8WG-*UT#lQ3ZiWh6UUejoQd2iDHfzeIv&meM(%A^U!WVWdwulIGIuuA^u-j}d zs_<-h8zfF&qp@u&%6cLxYex=)UY7yN|A;1R8n35UoLC=sY`}rlV#_QJ&%3u!anH^l zDhu>9Zwh0bRE65iJ>78(2jJeboq@|GGQLX#lxR~DW9PvEkyd=AzwSkA4YspOErT?$ zKb$sq?T`kU>8y`yMTb-Ab4nL*8p<@hdX~3ulDr5zmEPIR4s{LSFf=9;%z94@@***i z>l2?LgpyfhC~*V&WxhPIiIN7JaXe44n|&C~;c-P#s)6mT>o&9D(=Y~s?y%iF1~U*T zI6f1aZ*ep+F%@8%5wjfPURR9tG)#(!)Ff-hnJIqrNGZi_QiGu8T_DJ#+TmFcXrWy0A0zBAAV%@ zu-ZOtljRi>=v&M;`{v1;D&el1qgy9c&bzDsV z=Xl`Pl3B!@q_c;|S^!WDi!792&0G*YCzi8vB)X#Know(=r^mZE~v$ zJAreo0Yp7wlhYGfS&q>y;FN~@_3`4raRnqA=UjxNbAnTDS)7VH1D{3J^6a`<64#m+ zkXoXLHe@dCRD|0F$2%pmoJ8t8;X--e!YCiJt$W!ufn~{4ZxZ}8_fNeD%0t#0%EF41 zXhB4I*~0|Q+4(3+8aEwPkqXX;p>3rsyZ$Lg$PN9FI4oOpFK6hlk112tEF(}piUX9% zwrlwJr*eU!+PmMI(pW^GCz=N`DKNu@B^7Kf}(Atsz2 zuM|P(fV|BT!ZL(xDY<%HiqI0l+!@!xxa2HQL7xHj6)Aj@M||CZAn1^-!F3BgCVt0; zEN zi^NzI<+gGaJ`Y0(c3jR@j9p*|U6*lklz-;LB)cy8d!Zy(G0Bp0)6;a77V_Bjqng$S zmPeJrywo7W6#n&J)p@>xvXG@Qz}l&jIww{8&s0tKJ&OEX{XYC>*L9U>fkw!upZeD{ zFYTvoS$B4Dj?o3U=V*M0fl3Jlz0$`LQGtRm@>$A+2hRg!k2B;{#+iI2!cQ}(MQZZpzbIRzUmpdMb6&z8 zzXVr+n4!cO3G-P42XNw&7X(vbToRTd!}#{MxQ5-*b<$d5K-hpv5p~1Sp()=XRucf7 z6(So>CSk8{7Cd0^oJ45mWs#1ek zQ4&j44rGRJLU^CDbJ%5n)@CVVeK*+Jb$vaAM(!ZXlXBa)TkUUZPx)#l_mg^e@Ry}@ z^HR9x5fuv+589$6yJH~Eonm?WLw1uCuw#_`I0J+^K15L_+!@hEV#o|(=5mbYWkO^lo8?Lc&niOascLSg$pVT1@h@rXb9k<)iY5Ddo~lhh!{)b2MvIg& z&-nR8jYC=(Bf#I|QhgplSTEOFR-lDq*?n?n@PUl_j%IV{QJOPLcb~?h}V9(pV zS7l3C);7l(oI2GNqO8=Wf3X&YINy%&gL1p%4FJlDOYDF^qll#H^@0z`1 zLcA6r&lB{U2kkpivk(4_RT_t(^+4SY{-okg4Utb>q}1d zms1Ihz6L7Hi6O7^oux(vL=uluIC-9`b^Qfg_DIS;=xIS8TkW^mL!=Ky zcPRp#Gk47DbHSj4Og#BUMQ)~Tq0srQw7$)Ye2=5$qfX2f@=? zajx`bZ`hZv&oRk4tVZB?l^)S1g7j@x0Sl7!ahpGGxl}r_m6Y}Fb!0k%>bM7g`F!@ zRpXgH-M$W;W8Z zC68IDWxLP~|Doi{cD-*6y20`kG($Mf7V!ibx2UGL=$bFFj;DQ|LjOyPP}+WX<4O1a zY;TCv$Gl^~SG@IgPYhzVa_Vr0AlcV*B0j%&P(k zDvAdRfS73THIA+6dH-Q~avdO+ewH+S4%7PLhT(wnc02Ja3i8!dG>QSGJE}YJ(E4mh z&JWW?x+Wk*ig@6!_bs^+9s89YI`#2DHw-60D&R1vi83dUFi4ea;}pN5+}FS;LKacc z2!dc;?9Pt$r&jo~6H5fjAyiD(dNv3H`c2(Y$a`3$M{E)i)cNr>fcE!m`AbMl7gna~ zxlmoh<8mwB`)-nJ;7rmfkRJAvD8AD9#qrlRp;NiEJSloj2osc=-m`(;FvN`tQBiEn zE8ZVp06nw^NoQiueo)gl{Z@Xjxn%nxGyej_M$Agzf1@DWhC>SbfN9~k(^A0Gn*a^E zZ~t;pmnJkShztP`{zCj-4kTMl!ct*VQVlx>af+|>nWi$tTorMO$HWj1G3m2Fanh0K zOSv`1fecjOE!o&9$1=6UtI<*tMBF||Rl!g?p!_HcN#p(P@}q20ofsZL!^yGnR^d-h zmUjfB#-bNU3%pEsp1NO%IiCaQmY}!{LL0T;E=bu&%KI*xIP>doTC5Pe#z%IIm@4?> z2pHPi(FAsHPpVipMadI;-4$hKGTnWgd?tzTuc+pA98|1y;7f%(Sf zK-kJ8W%0)nJ;3m_{5{+pk)j#KU-zSuC|2E^kM~_daria%i%_60P)LT(-F>^!Grl8Wjo=ATA@i=TE;rs9HW7MCzk} z$|A+{5i^==(@YMg$pCqyt?0TM_ zXhn~@=)LX!EBf4-y!*4)2`Beo34iMB#m=d}Z+nxkG-<4I??X$e{l8<>t{BQf>D{_A zxW>%#M9u8N>HN>GeC*ppw}&)Rs|Mt-f@?FOG`;tTQ6|}mLrTeDoqh23VY4&G0vA=g ztTey8*$MMVtesEAu1!_mhs&zAlHj@tDoh61pIRD&jj@i;)c8~BC77y)!;KhyYHoRb zEP2B&GtN;cI6ZF1I6C*jTa!oF0_fR3~1a-o_w)e z4ajQ%q;t2Jo2zz_Vp6y}^W^)0^2p^R7mv8Th0}HicGw1o~VmsrxU95~x!>~xl&%`iHTS>*MsNtgzEBbx!5%VAH`84n^OA;bGmI2FhhZ%ISFccGtdi7dm8cL`$h zm`S^8ELSoF3yl<29<3y)G7h46O1Z>u>qmFM>7}_qB;}bpiH8^{RW&M^$ulq$>F+pQ z{KBp>;wGp(jez$CQgZ}KHaNO3Q+1Dj5g$qOugETo%0S zJ*F%SSG5}C#on{U?;3W8omBX$ocm?iK*i?dMQ7#ws22t*TaGnvO}k^a`M4JQ;*?sS z%sjp?=9+ohURB|p_^_CJc7sMxEc>ISs?hPWf}Vd))UFxjg6M9GJ=;&Y%@o@OK(zK+ z#8$pc$q(syU21hgOE>L~*k)HyO$Rx-+?N^Ly>#Mh)6(4@UQno~YeY;k+Aj z)n75VVLEkp@Z-7srVo zHfzJo?DySPZ&SkiY&PBc+?yjE+S&4P!6~s{7}pd&GR!_6suSYJF zRmnc8-io-~k2{dO-2ZNYcJu{wu)6Q>kIjVLZpabCRFu}>&~lo|-9Oh9G~WR@VANW=a0*+E>`(}PXq2R)Ans!UBoy!PUm;lc7A#tl6iN&Ye3|@aVjhAiYzX$ zY$u%6weR6G(n6C;KmS_1o93DSqmnK z8>?$1MD9yyQ7cQ2QAYss%aRn>R4clXCKy;zvA|DlAisSdkG_IvqbP(XxEK|vq$RZJ z8ippi2NkIPgJ`F@g(i8F7pPYyY}ZRIB-=DyrI&N92+he_$0fd+{RthGWue!Cf(i+5 zt*gRO%oGo3yN)EG({3R&Eo!Myd&ED@jFOV-G;viu;!~%KVOT~=P|=1r4GC@yY3Za5 zPAKifZufw&%)F%{+CVkhZCQ!zvT}6ezQi7nvalOhTI1Bpb$g!PYDEHmca1|5pZiQ> z@$Owaj84}pZ9MCIv(4z9Sz7mwqrIPQ)>+7_nk4r6yM^Ztuf8%WVlZSUbP4CW1-6{61gYc4t>^)34ZzHOc4VY>U(fU|`}<3nb7fWo1_veN$>ms6z-rlyvi zy=(Na*LnsMpO~6;{dWmmMI-b{_QKiXKTGkX_?49CK98(l18^0EjQ#nB=Sp9?#1nED z*XYXXcYg1TSL;|w%rifC-{;`$7NQVt6XaZWV6(r2q$Y`2B39|5ANP8zFy_$lPBRV% zRgDkrt6jLEy|S}|d|n{uz@657%MJ8FCm$MbFC;WH#F9D~F|IL8sJ7F{{S!YMuW>w_ z6xC>A|-VvvGEDvU=!Y;cjK+>|yKT ziNSA^z{6w0QR$p)a;Bu`|8m5A?K5?*+QEA_1w2Yn67m|>+bw0KFPqjhP@|$%B4X7 z32KXs`z({eZKr&FB9?Lv~D2+f0O0a;Fc+s}KuNKUrm^|@% zTrv5Mo*!nH<4O-4vP1D530~Uq(Ra0Ggnn+cMlVE_`4lvFy1jSpIzaTebv&%tyeZ~= zBdB%cC5AqP>4RM+69ir7|EwBkY(^cC&k>Vvn^|O+Y4*-U+0mt;!6$HhpJ#*(5ARjv z4RZuI_5AC`3I~I<$GlLZ_zrBjZ&}{w|dr zELN|2|0pmw{}U60yMI4$?f?C55urTv4iooJ zSeg*?8+U2$a)X7v*=&k1(@!fbwRcgs#t>ar$`xq9P8M^XCM=00bZ#atT|x2iP-6dW zSP@6p`sDh^&88wdZ&7;1>9Tfuv=(fQQzas?x{qS-sG(N)~d za~OBYg?B_fFXvW$U4N8u_m`G(#)PED(N~rqO%Q+jTwEG z)sv1q>HRD2UFKEVoQ0$7NCavQLyCuYO!%MWGPsnM)}fuI#m4PxMY9u1OHr6&%?BY& zAxsbtHaAn)Y{=~(SMd)AYwi1ijOm|l-A2#fZ6PD{HzVTcua3#5j*uGl6wMx5J7_fK zNm5vLe?mP@h=-JZ8uxGAs>ldlulXj!7o1^=$&|9+#!pZf3WC?lQY>LCNeX$-+hyr3 zs`R<<#mW_gFd-J6q(zc4&_sDSKk9MI9JFqpspF0&uz+uOc6Ju4Wp8Y5f(OR6j^p9&y8dsXUb?}GN7o&lo$Jus zV`F2wWx#jv6h>_tEt+}db1e3azJ$^@s3W;^D>jqiC8ecy;C>nyNIUr&jh$b)qY&KzV>z+;e+^g=5z_JwJ$No0o znDgumfxYRL85tQhRS-%&g%b3*fu+nH{&zn@xA8@;;U%(0?ExpSMK^q~dp=&xJ-&Gq zA0O{r-`v`|?K?X$G4cKT_ugIwwv^MflrPs@)noGC_OH+hI}Z#G3*6D-zISkXzPszn znc5-1vU5Um9XQKZ)W87SQ5rg4*4EZ`c6Q$0y2&4lbNn{ei*s|{z3W|Z$F(}l_vw^q zudc32Tw<3}Q&S7%6H({;{Zza!rZL&q@m>+){fnuulQL}jl>;$lk@p4NY;kVT#FFZ@Mr!cMfc(43J|GOhr z7Ddg1kxygxbaZq`Z}(()Y?pa(aB!7=T$eenH5Bi>j0xh1uFx$5Rt3Itr*l3pFC`@f zEGys0b-a0|P%;v5M}*^#NO$n1|Eit970J`3KNk|*3GH~n2^N1f(=*8}&>^HQHD z-J#a7Y|LILOG`_uCy|knme!p5=IRqXLTE)B|9``rx_e+?z$Q1auCdY1Ko?3d=?H#B zm>v5IU&EUh`oKtvxBGX#?=yXmn+X-6Va4WR7E*lK_XSdzyM?a5I>KzCE}m5!<~Cy| z4heBBSo4J|7LD2|CJU-=65sG=?VjCky~ZvbmH)|8w7j&`j2cUS6d~tB)bw+x%N$M) z_TTn*{{xRANte_7w&cj1P zFB;toCmoNEj#>|YDN|5TJkMf4cpHzK=<6eK+x2&4eNR`?)!&OGDHR_37X!B<#MF(C zw-sT*;7G{S$lHYNw(*I~E zWX7K`8P1xdfOS0&^0{I0cQf0r`SN@9XRuTJwk{H9JZ`l4VJBLXma|z@V)9+_U|WYF zvmVjVjz>;k1g?2v2e7S?QoIbO_ZX7+m?&kFmPF8XZci0P1^cV_kT6LbYMN^9*k_Ne z3Hz%TE*`|#*Q0@zthi4K4lea1t{t3ebEc}W`Q}8@Y`0smL#~^Q@5yYW^O{;yuMT7g zjE;^zKe>zN`m?>B94``z3aID4-D81V_sy}(Y`$JIyZhNE7K8K0XU|!?74n7K!A0-x zi*I_TAxv9S3>7jgWEzx@RiBCFjaTH9i8f$! z%-$)$LrA%HHooVvHM7RiwT;MMdlebY1ks@M%~3DZgey8bIX&d%RZjLi-ZJ?66CV%8 z0fK$IRAgmo=N&n2PMJq&xXspGOv;fH(DPb*8@A$(PST6!HrCOOQD7 zFJf4}K*MC*?Pt_8u`sA&GIu}tm%8LR`}F6h$#AflZ7Jn}#mlphwX~kV0|*q0@eZdZ zCf;RbIS6F|1C>vJ^{pKc#BtxigWdVbPt+~}IevSyQ7h*Klpta09e{I1`5bbjCgWZv zbG0`r0Rlp2-2g}u1Vbq(QMmL3*nO}afpwF`yLX6gA?!N7Y|u&KJBxjB!iADbyrhm; zYVcSaq8In0>_Lj)s7@XlrG=|&Pyc<1t}C)@szBF0>~}94>kw8Q{b<*O-u7-b3Hyn~ zHaMZBpfUv`(s{2eI&1}L6MKAf5<%G4=cbJZAuW=PC2W^}t7Us|{>D6-j+XYvihF;5 ze=xR_5w6(exlZn!+MY4ScSVTzl2J;M0T0InxjydYWzsWVjV#%0DlMHNX)zfU96pfI z7+5tsiq%>L#LN$2KiOfWfeKrm~tv9Zzg z>TDd$9J_iBjE;^%mTc`seok5}U#RCeb%$#dtJ>XeNC?FLV<;2k**7K#rR<0x@rm-1 zvDWZ`eQoBNFNmM1N+W_M9F#}^UL~^CvXl=E3#X>=HANsbBCXw*ruq< z{1GDT!GPlJGUG$%Tj_5qZZZ(V-VF{7@$m9;#jwOIf=CDA7+Z>O6z}U%nZ0?<_uTdd zX;uaz(Z2;%-y3r(l3!XfhjI5WiVRhA8^`KsQ0A{ff|t^SKhz4!j(ozibb zNQs%3n<`367sTC)3EEi6qvuokYWb(5)=Wdp9OqwlJigh#vcIuWTCrKEx&EtA833wj z@&^P`^NT!4+URBvlW{>+)lu-=vZjKn9wt<4d=8m^9EIGlk@9bfG#})w?KNoSthvb& zpO1vrk-O&Vr)9r?F9W&QPj8cf)S|a7`JYHi<|-Bb=X-AhM1ZB8e(<_q`B3f4JzZAd z6xekD?Cs}&aVwT^@%9g3f3aQU(F8-p%EhC5$oESPwt}27EHB()gz1Tde`eh?=j)ng zc2@e+gZE-hTlRl&xwPzc@9ypj2bH4J;1@Rm=(}(amo~$gx@r7WD-K;VbHRMl<^f(_3!l(osbd1l=cK+byfW7QgfyJ?9H(wb)~ zFt~*x3&0+-$0dta&1Eha$0OWGK$8l|nr7hT3rjlWlJ>Vu6O$wM`Xs z#~;^f8fofcGU=M!El-0#KT%!({NYZ;xYtZIcaIxL9pL1O#iRKgL5CyqgVr7|U(TPd z<+iylT<3A4th?QA=V8<;8`??!IZ=a~Ozk&W!dtn>zZ@qF^u{X?_3-LB+zmYJDw7@s z%zD9cut7;IqJDm}uJzfv@%ViJh0J>{+>s3=Jj2j&(}w6n!Qw0XE%Ic7O=4YRP&xjvAK(ghwfDW&H6j@Y zN!z;?#lnYOlf;lb*R-y{*+&0wfjBejwz=km-EC1(tN=Fq_!B-J$^p9cx|7K;^S{|C1%JxfwZUGG)K5nV^NixeyuMmb<5CbbgiM2|G!~0DyTup&d%;u^%z$&+=~UX zh`cx&-;2@>&~eIK{kE>iK}nRb1WxpYT{21Ge4bFU{aTKd!I9s^cKzH7V`Gp^q*-lm z4l#&`eB!zn%iFTsu|8T{Gs!I-Wi=VfxHKX-Sj~Ou?h3Q9vRdgRm2B}nV9WVr(RQ-4 z@RAzjZg*q5#!Z6*0|F4V@#F;G++aCByxIW!va1RbAqIA=J>Iy)x70mXFM?^_$k7MB zIm6a9VB0jDJ;^a3saHB4A|K)#2x_BqeLlZ)BY?P=UOihB%$8;er36m{ z`BD&OUXMVEnx6h4B@xI7zyngZk!$TLBd{cd(H#jtSi z-m~LCQ=PHX)6>oIN}uMLi`mLZZpd{+@#f+pKn5_ze>nsZT^k8fo(pfjZhoH%#?)F9 zxpYmVn!Dccp{xdQiZzpO0h9Dqh9&9Wd&esM?_BGiw8FPACt`Ssg|o03xq>PbiX?p< zcU|7E-g#yNgXyVN@8C}*38IT&9=s5^ z14xy{ok{%58w@$GbJiZy5_j?)`zNA2itOw&BgW0*MDY@NqxRY_zc?9byxrd3?oP0- z0c;xwAb!49R=Sv*Ul-1}9l{g?a-9Vc5-LlvUMhn5M|WTJY`Hv?e+Bh}6~C0ghCd^r zG;R`V@qJSeH5=$Jy-F_fd~yWumCGG-#BLNv4Dd2j+jVe7k(KHbVTMQ#Kq>)ZgZx%Y zoLoUegAm?)-yZe-9}(BuExryDep}K>y1IqA-a&HoOYhlWs-20TOVHv#*wubtZVu1Ak~(O*Tco$l@J*$QSV6#^EDEd@lD z=Ug}bcO`i|a3wrf+)^xJduI z8jQi!3V%mx{K&qx>Fd|84Gj~vg8FInFj&B9hRyzI083JP=;kg~lq32U11pGnK|!by z+xH@F=8leWYo`~ptp85(9~I%A44!g62 zJj2ApJ52hI$cIm;C^Qmwm;H)$OFq3OWnb`l^^zdLB41&B1GOo+ThM69oT9cI-MyIh z(P-AED)K~e{OCWh^r@0nvDznEiiZ@Bkmx&7{p)O%cVn-91KLgwqa#?;&=u2G7d)hswc$)r&C?HC)T#Mrj%ju-4FOag<&OK_@p1tD zx_%x9K8mP`SPmT^lHvcz3gPLHT%tK*$?t%G@-i9kYPQb=^fC&=6|)HZwFrUKPr(`c zT37ojxMIa7$aF5JkK-jR;}ld;N2~pg)sJw)SKHZHJbv&>A`)oGYS(K4ih-s-Q^ud3 zB<>eZet+tA7T@N#gtZlYQ`vgaRT;cLdVhF!7_#_Z$<4<%vvi8hw2anBy}Z?){WR`G#>2!17_pa^mzkMaV4!%C!X0Abz$@Gw zFC`K3b2bx%FKGsKfFO03q`h+ge8UKuO|yAObs_(Y!_UygEx}*x&k0&lh%9{lXtsa zX%c$?Gg3Ut><`j8bRC#sA6CWWBD)B)T@U^{&qf7#K6F%b%WB-|WCA2s9tS7ndS=m{ zT*4Am8vFT$krA%)>ZmQVhz2;As)tv@t`)WtnWe+N+^9Gy=W+b z>T}lkY^&GBhH>MfIFgE@fmC~^H@apmft^C&Ku`GA4RPDJwTx{g-=x-%snV+9NRCt` zVp3A0w8G6MyUcBGv>R;rz|x@G$p-M5x@8NMe*jG6Obub;Q%$h~=zY^SXG!EvCp<;* zyt%X55y8+C?;xl;DmZw6xYTGD|Cge%=r_>bn~lQIIDa#}#H!=YFxTdvhEijqmvAV% z%&e>|5XYvbr@zmQ0OJKN1|Y$dzK@zE!29tgeZ&7Y^ZZ}wzye)Y(>YV+BR<_x{dq~G zv~-6Ez3XB|eKn7aurff`?H#x7dPkT6+w>B5d_;T|7H%g5>q&w~hZfF8jJYa~dcw*3 zR@}{+mMZQKA2iTy*A2fi@_pFf5#PKZ!FQ*VPX+sFR~=B+f=-#%muPwE^&@N z;jH6s2op!l#zpbMcB`E%Bu@dJJiJz1RK#P_^j3w9al7w2gB~FB4~E170|Vs~86Ku8 zkz#F=Ke9xta2C08A4TC9Cm`%a=5LL%8lTh$cr}`3LdYLumiJfs2dxjVd;gg22D86X zd@avJ-(0ZVs7-s1u6dS%xh}Qt$Yrpn#u11Q+;5Y zRfGJy9kBNUEAG$f1j2&*{GRdOS%XF>hWam6%_i`lFNIyvdIxN8uXb!AhW&GjH~n0$ z^r_p!oH80RQkF!f3+^UFK?>4c!_BBc`pYqaX1;e5Va81<6n^Yov`zfx_+|=r{7{W_ zy%qfpQ5n;<=up|}y}#TC_-Kh;E7&)_02X19cdEOO(mr1A5&F12I4Gy5MIQz=Uo13d z&Q+F`O_0mUt1YeF_8V*`Et;_9k#u8Ai+S`Bla>6d!o^WgM|hV^s!D@dm``5;E*n7t z8-G4EHfV2@q7q_FanX|isZh&%6~#sYTQREsz2Vu!mdeNtXC?dP_0`$m!%4ZCSeVH+ zCw>Ko<1cyFE&!(ysbhZpBUR2QdE5WRjMnFON{7UUg*TFzuNw(a_EE-Y+o;+*yYyXS z!CIOI^Q8ZXfhnIQ@I0q*HH6#hj_U z`YU|#so^{|d1KLoS~2w4!)P^PRaJ&8>gXD>0ztk{x>KvGMaui@=BCW)3G%Fz>qZg6 znl;D&rv=b z5=vQ6FwSJVT>tp5)SR={$*6UXiweH%7`cy4Cy^}2-~j2LrW6Jp+9qA7e-*6hA4$1L zKoMZ`-Y;h9X$$$iJCPOAyVwwF%$v@+S7}xmMFyY_v$nS9+6>U#`uaNHvTgV?*v&MX zzd(ANmda-F?(jOH>$v;>d8`5YG%Mz?fBYRt1c3*f*%f8D69Fa4x^+V;3cy=N?(@mN z7tG&;J0%y=dR=KM5Vr_zO+SvVGhShPAbBo79aO(mA+Jgf=7Q}?DTiYP>GX>XvjcHd zxx?kWg0S304+?ctB;dh zzis(aVWp5O_OYe^kRbhl$EB5?$%IS}|OtH+U`-^cHyV|jn;Nziz)xjpWt7q*X zbXZOD#qBOd)3LeI5lRE68I!*o4iE-bAS!FE(<=;$!s0f{x9>ddN{>!h`jG7nJ%^r0 zcTyF!lJ=lCkIn#S9vFyQ^99bGl%JP_iZ=lkco|;xmRdbmRUX0YR^DnY1 zJ%SiRUSZ~1ryACYb1r6M*KSrf>W38s3~Nqt1!FHTyrw2!rz?kEd;O_tJyg(m`QT%1 zI?o&yJCi#kXd;?KA8dctc)*(gXF;gyHyOS#Y(1alwF#+OKTsF<@MGx|*h}XvI`~T0 zGIRLuvUteEZ{ra8fS3Pc<%875MqbqU;{IS)LT6kHa&PkR5Kp}FW5V)-z~h>kA10amBDfX&k_`^WZjb7N7Av0Xc2-33r` z!s6VF_b|Gl6q$4N7gUJUW3i6EZ5JmgXaPT#tSAi~-}Q@lqErd*h2_J&QH#lsz16)n zXa~9j)0T^}lXNRhg!}RILGj#&+0(fz=OIbIg>{e7^oGc&x(PtK&qCl+n0`QZc zHXfwpG3J7_U7LGI1VdtMeiZJmf0kCKoDM<3wQt{UKAL4-6HzPFJY9_CmAE=TKq4fB zgaC-Ij88~dbg5u3T^g!$($TpqtD&PaDyXBgr-~TBt9%J`DTf^j@Q#B3OTys;z@Mcm zS=CJPA#NMtcFF6dcDC19P&w?4Tw-pR!P&d6czfaB77m76r^jwDg%$`0fGQQaF%ze1I^|MAj7vXzmuv~^|QKyLF`l#9c{9wah(${E# zJrTwz>306>v;-h z9Gjm5PJ4pSRwTWvhtJnZhu$|}r;=*pd4q7VbG6xd9z8=j$fdzp;U8^!s+k#&lMQIiRj)yxqw5q?ji#6bsXaj#MEc{=ZpA~HtN(`gTz zYV$}|Xg)RbqrK2JztbrB$2@HZ$G?hrD2EaLtJqUa;k)CjBeltAkP&m1$H{-M&VAa> zUMeQ%%O|uQZYc9gnC`TUJ68O`RI(2rv;eh&&s^Zi+0iBnQ;&8U6_nK&u&x1EHA#U$ zxM%s`)Vn!e^5dBOUFNrg);FX;x#B6La1_*{HjhMuhGzA7QkCwf^c@{}&7CamH84R$ zeznt6Rdch3@n_so9R;i+QcPMw<1IJ~wA#sN^s89vgC_dcAcy0nt8|si9!bX1%Y{`N z#+Dkz^@6p~W!L1noq@KKVGLT=N=NCvgpk+zaM3hx&_N1mX-s#zyVfuYxw@E9-ZWy| zxUk^yVVOJV_*6XzCs`_UeEJ^C@-_B&>@M_na{OTnQH+m}wC$&e}G=eRqa zRhd?Qd3x3?sn>P+9e=|u@dDUF6_M9%8uI*wiOH~o(yV_WsVDd60 z#N_leKN1>qx2xfi{^{;gnXW?tGl@!^%5ByjoO8?7CA(y$5X(~f<#sN;e>q>(6Mv7@ zt5eC#W@EpjIb#w2p#2a*vHI2p7M#S@gQlSEsoJaa+$#@Ew*q|8_XS`~Q`Oq17bAA$w!8#8JRN>C)OH3YH~#yutokl$2no&-jjgf)4z;bg=3dYAV8rUqk+ z`^WBDIC}cUL@%=w+Efm`z&QqLjf+mrbGewjhvje3wOtKf>5Y^uM^o4&CNj3}T3a1s zcsH9RvQ)U!IEgLit}Y_m9;A;vyToP^?o`{!<*kG2g&1V_SXpHHDP`CE(9dxrWM~e{ z0P-a>inE>S=C-%dxR+uw&^b9}6|HM?h6kSkCR!p_y?7MJNitMs)lb;)a1gbhoww9o z>l+#xs;l$u3|W$pm#1sD!>{KwATm@KiVpGLPbap0a0^>)s(>qI79AaTEc}_AbweX> znDT@f#5R;C?7Z&rUP@JflP3_Mj}Wa+{_|g0snw#`Q#7he1pAE~&`#AOuGgPvl#F?? z&|<^{#Noa1jhnea{Pn-x`ZDDSdLjur3rk)-<@nh&Hnzzai1aG4c&-|n*EJnor71TL zs}6pNRS20m-|a8+@F=4X{S>1rrgMJzv?|#1WA&F9D9igla!yWW)>dWq-f8yxFLU43 z*V|a@{^^fdA%=u&Eb224RU=j!6Mh@CRUfSn{4xwwzV)dnE@F6DX+#D=_N*6$E__k? zQ<%><|MQBEWGjE0aXq4ni!kFnQH`0BiF2q6_@06MF`qPRYm~8LACJ~3%XObKq}}3l z(#f*wb>-Su*qvsB3?w9QJ=d` z`zGMFeRF_BK@xUyQfF8mjExL_V?|R>Al_?7flSNu5sO&L$mI5Ec6!o%GfF1Y_=OP` z8(a36_ltG{A4~aQxa90P5Wf{VO~e^*v$3%ayJz>tu-j4ir$XFS;8FhJi7pY{M?m-i$B$ScSo4(BV;!k;Mcx^<+ z2Ny>%i_qjLZqwE#O(*>g^T3wp+-##X*L8kgbR%Is#KgoGgLCJq7`Xt~2QlQbWaGy# z4TQ*}Kb6MxymEt4F^FUqxvBF4-3tfeZ2SO`W`#N2{W3+dvHqp-pSY!yk3b5$?Gg+m zQL0eDdXwrS2kI&NetM2Ba+Hj0QHw4xUq4NlZ9MH;-1-w=y+Hxj__-XvDcnpaT*3Xh zj3lM%Cy&OSumT^XiKosr~6L zURIIL`Wic3B?W;NqpZ30#9>kGy0qI4j6*}-_f>@l2rKq|Uy_LzpxR!~hL{~ExN?gR zP2UnW&n!yqUkMMt5x^o_F!DVCl)F^emi9!34@i$puI~;?#raIk`)&i)ztK1iC`;o& z_y^<3lMDqoLyr^H>CVxKn)HO~-R-=KJ#Ak4!kO|Uo+U6q& zRF6L+Z|)4$s;Fvei|WB7gWfCsw$e&-c{o-l=5#;Gnn?a;{vY|akK!>!z3-;lh zA#bA?CuO?ZdbOpF8#&Yj*NC9|fJ<4|M;LG}hn8m;l_{6i7DYmn@2xqqNI7c$wvbgLr^uVi{+8nmzp!(fnCf8NEmf!AqG~eB ze-*fC7H;mbKbrBe)I21Uj#B(+(Wn0&@rym+s}#$ekX2({i*Xt5M_|N^`pxMtvAnl- zJQ$4;Zzs^9y4hi9i0TK(Olc4LnCka4Yxg-MX0b(0M*fa9KJ4i8VF2?-ndNE<uAHB(h9E@1e=HHt{h%hJ-_{o2e%p^Xl zS!-SIxrJ>+Idb183VEk+_u$Fzt=R*=(CEGE{YgdI>4+A_ij}_jgvDqcmM00TqmN>u z6LXc1vPGLb9;hdO9G&F9^-Z2q8nrgjlrNeSS^UXIeE3-u6WQszHK;3081zwyiuxUI zOdwE;NM&B~?d=41za-WuW=e$@aH zEDCcf^^_@7?(%rBHdQ4LvtCnqKKX7o3Gh4dW2tn)qIXK(nfi}FhPxNJ^TwKr^0waF zIhU1i)+xqLQmT%IVJ3^5l!W$CqUiH>A8s8V7!{+|vR_VtQAOjybi)ph>?lNhRYxx( zGP3QY6_YI)925|6&O896L!z8M#cYaPljhhJH*)@}Nm0NWs#WNzIe%)4FyUacyK95P z_! z&#}~?ydB6u_VIdleSr&h=ctkDz5C3zkDbuiR(pdi6qo0q~5yC)X11d`Cvg zw7$3knbmCYRiG49Emz{=kC6)yt}bYIUd-0w7I7$`@EN!I1d4LaGXWBbZ7fBX0w=K`*_Pfw4G z#J`2wWLcM?e>Mn8b3FY^;<8_LFShG))#Wk*-WQqvc4g@=ggFeFmD8~MTePPW+Bo02P(~4kIklWp7a_U51Z8rS$Hslat&!J2hz98}wD%DYBMM+gv)fdAo zD}!ooAesl|EU-3-l9vr5wsCQBKoAljAt@>Mw=x-v+Q{7jPJ(^8Sp4lA|YYEVq}^rU3h>^6Ti zeOT-8i>@Us`uR8Ec^nF^$QXDy0t5wady8F?7o(D(P}zc!AC)eu6cp6{swecrBR4gD z)h1>Sbz3q(Jo|?gjx$wB??CGTGYb*q0fd=yUF=}%`>S`F_pV-j5_{q3TWyxv^z5X| zwnS&9bW_5dgH6Kya{7y@hA@|279on?slYS7d7N0-~ajJ7~ z(CPppo>tVHVn3My=Mizjit$QK?qz>*yuGqOi#}A+H%2;Xw$nS(tQaz^a6ooGdjWOR|{%%=rA zqnmQY5fK6v?yV2Dmqmh?EF$DYt9htwRWnd+SMU@(ctk15vzW1iNT`v~jNE?c@;x_&g# z*yC&&}-8u9wFf1=~ zgbRxxJrV4#1mQbR@`T9fU?Q2h(9DYSQ>EfkATGA`h079LRunk(o0Mpl<+0+YP{=>- zDJ@}3r4bdEcq=F6u&FEd#e?)TTT<%!+yVY~nJ~vk>7^X26+EQcCJt3fV8}*Di1cc&Rh-UUrr1); zmFuQh`33~Q{Bn10QJpS}0FGqg;lGZPh+;NpLE1rU3cY(A>HUBliH(hIaJ@aW-7;JP zxz?cW$}euc%fw=krl+UpGToq2qFq#6%=@BcVs5T2k=_S656j7B<5n&#E#>Y9y(Y;Y zo$F)u1XcSj`6nIgo^yaknfINq$~43^D4x8!Sj0& zdQT1E)4lp#rhp!<*|SepRyAqw_`4askvf(_)h%B<#F}X|Hi;6@x-kD(Q}<=o?Lb1> z$G%o4GxaDnb>UChXmQa)Hp6oNlJD5V67!$a+V>5bI}4nL$FvK}YBh?2%>&*KcJ(>h zEpAnDQ`uzP>~dYEPrg9;1#1R6SU5Q>9|{ah21cklWyyUF4meXtun{AW&T)KDZ@tEe zFW)0S#3xkK!d-Q$Ws{H!)iNlr4@8GkV@R&^x~j@nefmBB6Z_q*?XmLC*&i)Io%M~w z`JWllZp_Y6RhN4O>PN*ie?Hho6z*K!waemw#!g1Rrt(sr&{hfh8Z5#}o4VqpIMVi~ zX};gfH*oLA>T=1RRx#`K#_8nAh4s_3HA zO))vQ5yKmQ=;XMwfvnmWG2vbiULvs6c`E1xbqr(Kq3OrC-ZwehNI@>RN8_<)-Ns;6ec$xvac8tF)+^ zKqb!U=+tVK07>5O&7;A=K@egL%kM?Y@Moy}*K7i#r|-(R1^mT#_m^$@X-7bL6SUvQ zURt_Hvtf|d<>kk)Y!~3=u-+}!b{fCi8M_8zaJ|SMy|JnN)VcG^gUK=3KIvbTS1Wp# zvAm`MmxZ^7FQ0@q8I=K2dX_M^rJn4=;mjhVlZCgG)};$3(nSLIBWw6Rfu(KySh!E{ zULra~EYxO#Fm8XPn7dd8`Ikmr2WG{~p?g-%%BY_s3C z^HG2973uKVY%G=9)!&{<8R~j1BkXPpsRV8*yFf`Jd!z_z8DB8^Bs@gHV$b5wAfUGlUK^l+UXtbrsbH0u)}nP*HdHuONN)QO)&%wial zEd|O#7QyspZ8BoYS+O+l$u;SyMXf$d7KV5k>g$bZd7gz8(~t2fAHGe7Z+{xxu3%sa zgVL$?B$ufCoUpfT+D;KFu-P#t_0HLuzA zQ6U;tt&`#;`BX(Es)umj)2D{bp@J&9t2zTdT&?{IF(+K)6@C8DNVTk+-T&`)p1g?0JRO0fYDN#X9rEu}lqkCqyQjEkFD`y@wpl58Fd%@OrR=XJ`8|D$IkSir zG!w$x{EjwwgHQW2GBW%nVwh-nl7``399Bhq^3>3fvh3Y$Aoz$*N-{kjz-ivxE1}CGG{~{y-hVmU3?~Zf0gW?V?#{i;Q65cZpUo zu0FW`08#NNF4B_mDK`DK`nQuwo7{`z`Zl0oZdxm_m7r0#s&qT=!CYvZ7nwFfuiaK`}O@}Vsz5yAb zWL=GjjWgD;DzqTSro4-jmrW>AT%K%V0}Jwb3i2pgMTnChwAFcSH6Kl%h`KNLmQ|w8 zE-=B2%wcOcKaFpK#>=->joO^q;{L}*7tg+pFH8pRA@3pf#*UBcmPC*{K+IcW(UU+w zuun8UpMHxx^8d5|p+PO7LxQU3M^lbMw?e3aP{fiS^r7q_&&lGNZ-=y3e^x7|U^Dtr z?P#F;C1r&d(((5%M}tY*ZHCi~B~WV-u7Re4cj?+wgnLyjT%jz?NH2{ zx(NGRFm6|Tok>MCEwC1#A2-cR&FXop*6L{a=LqlOD?5)bqjQ*1hGl`}%6}fE%Bk9& zZx)#JPoQdN{i$lkO20b$tV*~U7odfjwsX|RD}%KNdUdBB7q+hP1s>V)8%6x;xS#e$ zTloHA<(1E}UxK#L?2~!%-0x`DrgHleBL=cGQ2+b9=37%!GiHDEr~DsLL})p2#r(>s zeGeI=4F0O~`Lh{aD!u&S$(GFx zdor1RIAN^n9g3_H%qgySdCN6edcAWS4;k_XZorueT30~$uP|wjuz485co9i5+$Ah1 z7zPE^9N;y9+7?(W=&Eh7ROU%nF4T;cS(IYOT~lX^+9UZ&DtW%Ulqk9Cdnqq@HuC%T z?*hf49q(p9rvWiH7yxNf%8FkcjsgTC^xjt7#tYh!<7MCGKkLOAa5Ys$2g?{&!7eH zcw3ufhKj^@y}iJ>x^2)qZYwyoecat0fx*EQ`R@SnEwH&g$A?HIAb#pPIDZ!4g~xDB zN9SMCZ`w9gz18Tk27)r^b{Y_)+*j2pD~YYAsjkh+6KuoHT*E^!B=;?YE}yY7Jw07r zAmWF?rZM7vEc26~iRmi0^@PZM8HEX?`+M^zB>ueso0Bu%nymvaC%}wfotAkhefV$ThbhK6-6xHiua z{692Zc{r8Z+s+Wu4oL{HlOzdALSiFA<{TjjA!CNjWFA7sLI@$1Bne3}B`ISPGAAT+ zrXu0HcfafN$2r&4Ibpx=TF-i(ds^~bFYZ&l-xU~~VYM$4CdqaZ@$2F$HKqKSGY#;0 zc)&{^lOyohKqx5t&^@!g)@t0*%4054@1Gn?YhjI25@J=<+B^C+L7jiyZ}Z(dECx<) z?%Am+yAmZPI_gjKbkvlkM%PE*?=0+|T3o%Uy#LYRKI;mGt-i9Cc;hA0HN)$4L>ic* zm4TtjW|kQU!S9l#O)BHQ&+yrEN7#s@wp8!aPS*sC{^m{`YmTw7qobq$pNWSq<*$K^<>V+9=*z8t zuSsV}0`P4tJj8iypH?Vbne?HiUgLBXJzu=Oe3fKiOnXRs-=C_oWYN)HVe$+yw&9iv zU$|MnP`t_{?P79zfab$v>6(QA#2g*dTCDDr4GB!nEW<1rGg50Rn%1)McU%r@VPIfj z@7}%95=@^|j5cjMLjoQjB!z9Iq=?LZRZ)S~H?!}0!*lyQy+*5Is83SVaRAs$a599C zxs<~<(l>*Tn5Xx~*I4CjLerQ+*2h18ys_rI7A&x|i!;H<)zE>^^CqtQZ{;4r}ZmN3m;z6ga7Qpm{CXv{i zH}9zPN1TR5OD1#Q5p~&2a@P)LRK0n*=lr*84?_dm3GdIH(b40Le`)*_uSGCXAkwxd z-uN0X3w@`p+xhd|q1)NeaRl(hnz2V_r>c!OI6A_t{GE{l?mUV*+{iA^k(6@p(@^RV%TS z)4V$WqAi-HEwPqZ=#g(=AVlO&9FZhi@+@*5PK@lHs`Oj;#;d`Q`n$vQ{Vs~*ef#5Y z49)#sTL-=B>G@^G-A+7JIgO_0;63&)jMk}easH2>6xRr5E^E7;)9h@VtE&p(vV~Z3 z6Uc9SiKy&HwWii~cGslS+s-R6QA*uI0t>!yl0EF`>FZnjcH)RAiMDeT&p=ObW^%H3 z$Ju>t1iE%=h7kUpof(h|`g?tQ8EEC1z%8~e zBRB#jdB#0Uo9?>z5yqvF8L3jEBgsu$DFZYAjvmC1fV27fgPmJ$=s(sIEHbc1l8T*O zRNFXb^t+7>Kc~sr^f4xtVhZI=*tg&auQ#7Z%*53)AGW>S_ZSLD#4m=Ptb=sF1JjKd zjF&jLF}BJ?1C)KSKD`@PY(QEXsz6$Af723GW=_%4>2k9q2KZ^tqXoq*i?FhnsF+>d&-$B{6N=2SaKF47H+vz~*Ema_ zMK_3 z;8V#np$o#v!L?s2eSXVuw}DbVbLI@lxty7x>3!NGGe?jFG=$#R+1JU5X(`UDvFTE- z?zZqc3=6|f>`FQy3q{$Nyw_VFe`9)|m8~t%+}b+$+UuH=)3b*U8?41;?WCtVsNVf3 z5D)VS(9LsQUBG}f?J6Cud^x8@K5lQP24~vH?GF~&?bbx5pWc7Xa7Fyx(0W(G-J}WIfz(QZ~>J<$w zEvEyEMPb0Ir;n0E8qD`Q!t2CRV9{`Mcb6RtLtYXKeQ4dVI=^B9JT>C%1f1;rw;TfVIO4r1>_mTHWaq+qQPT5O~x^$yQ1By{I{}bGur}wyfDpU7aVAg6^mws^z zKYR2$W8q}AT-2vKdu&RS;u`iPsx`br)W%DXxxvv<^26tdhWt}P%KqrRcYW7Y5?=eQ z|7mP&?5_G%`stqC!t6*=?#g;dHtuf+obQympHXt?D%L2 z+64Ulef~;)q!~ zb?Q36SZE-+)*R&xE@o-NH}_9XjY4iOaW>(;p5OtxH>h3%SA&SR)pFsdSK&iAh0Dq4 z7kfW7#_@SAPyUApGN^bZI8_t0dfWntbX*P4L8>NT)#g12*iBy_vFo5L>^9coXizd- z+&MpyL<#2vSRmc^Uq0_YHt&g%oty#S?akr9X3-tM;n*#}8a3?XX=SBMWWqBAMsd)@ z|62K7oRZ#^_2xV4p1pYSqP<;*>1L6fgd(v8n+!aLGM>idWkLW6`DrWMlSZQ3~V`1d3!V9Gv|YQ@s#AS*Sw$k0A=F*VxMF zxX{Ct8fB_}r66sXNOI9!-1Ga*8#Xf-s|Qj1X9uPxCMYVYIURP6=1ICu-fkPeU}BPy zk?~y;cI#TzPS!29uLsQF_O!GNMcMsbF?9V~+M!6Jix<~_Z1e1||KE?~4T^?w$!9Iew{Pr!|KuFeq<8{YGNbq^O`wUIb`BcN|hOw^mJH7v| zIHzlNTjwxrH!t$Ew*CPGF!nU>gzKLs?+bxqiG;dmWP7uL=gJ||aTllr*=cUS>TxInq$ZW(zEA4;U{%X%pO? zz*h@1G*AxRyxUEd+7!@&+!J`*Zf!4d0ic327o7x@kKGqj)M@%%kz)FiMg?n74+Ywp z%fHr^6-6^wH;@_gU4fL=9zbAF&_RQXo!4%CFL=GithlG;Y>DSjkL-oP7_ z35aq7LNK)qx*~R)60oz(>%R>7nD-$4Vs_TAip!4fekoj-;PVU&3|6A5SGFgrb>7WM zqN2YOM|nVCD%Ny3aLiYBZrOXTzkF9z{Ueb_;rc=JNeJ4ari}XqymGQ>OS$pWj)|JH zNG@q`eimTHt`bLel~y(rpWf5gG^>4+mHPR4yh@-FOJp8;UYC_U3`c%k0a^`@`qu+W z!pWGp)ipJhd3VO0>a&g_wh`o+Dl03IOzGz*o7@EEyNX=g_dJ@#83TRW3F!?Z+d>uc^q^r5u0_D$`TWk4 zL)&h%$2Qb)hhpeiUD<+jL~~S;;aHEo`}OMsoI`-Bc5pSWvH}API1C~4xp2gLOZR` zLhRIE?wFD6b^+_d&CjP1km=!ZLj7bIiTj>z-rEspz+me9XqKS?9I%ecAkZ0GRNu>p z{w2!z`t8WPK~ez_4PUtiXMxBBzHK4>byAL|6!J{*Dtf}nha$Z#Y`F}+&U=zbx-829 z%zb$cKtRd!EtXV$ef_a3t&&^}Na$18=SlVRGomv(Ij9%ZMF}VzumA$97GiCR%9Ljh zqlkvI$-Vwf<(9f<*ep1_jvP6%{Oi}7h>T#m$ZYqD^pTesnqnJrbn}E*&n}kfgnka> zn6sf6xsM})L?ki21vbtj`%x-}DtA8`rDJk({%}Xn&pR6=&{29J+5<&rdU|?&?RWKj zwBypRU$b?|vSKZSRoz@4!|H(stXI`YjME%*5mLb z?$ZW13KtVYLZ{{MPLB}kgoK5k78V{(Y`k?)OZJo5#r#g*`1c?l6cg3RKLqt$QYDDQ z{Q)BYQgzTXcR;q+AilTfB72yZ#mokd=EiU$9eyeB_DrU+pIyj(lFmoJXd<0Qk=efBfGbY`fwf(PZ-;B~U%B4yTx-2;iJauB6Y9ow{_t-MVTa zvG7S@;aR?fgA#v3NJK3QH@D+VbOZ*5S^Wn`e~xHqXdEwoM};=WaKPQ{12b@%LNn`|O39ZhQq`epZb@8`t-_Cl>X zD1!el`3Xau`pFY-MG>(JFi7is{&^;^m7R5>Kld?K)00y76YywEUOEjYSO2x-W1g6v z4q-bArL&o#M7pMd z?coGG2D4;tvPmjtmGtyPwOsE?Zv79oe)rz_h~c19$igaD&HdEcs+r&U=ci9l?Y-`) z9ia-CauM&-)fPhHR+Y`fq>lUtmZ*As3q=0X1qD#I*rUG=`^I5lHB>z0?&MPr}|Sco9yG6WphSPgdqmlghoz#z^P6QnJ6T2 z!Sr>ah~r6AtG5uFF?VJG?v<#f#H&-Fk5isLG~1?71#E$-=rbWs0*(Av#hfESG6xm1 zo>f$EvWzWw%HW9sAiUSYPiy=7V9j%TA=V3qhV$N){=csH|8k1oo%$fE{#$dix+Iqb zJHfGf-Cc1ygp?ZT?Z6y&pPm(zDtdqPs-lFc*;#O`z)LNAyt_-yi|ANM#Yjaqo_mG9 zzDBH06i}eCaEJJj4N62h1nCK0H{D@Cll#|fBIn`#iVB~9h}l!LrYV)wOe!63L<#Ji zz*YC3iJAU0jxIT_Q=RGbF&{lw>4Eu?hPk0?d`@(gKh)LL-&;IKOt5unFWdAIT@NkZ z4<(=K;7jNIDe8XXCx_yj#u%&jrE6{?$qN~Y$c+rXHpui|69Jmo-mFny=Qq~Z0G-@+ zBG3f$sV1rADrD7+%p=@OH}Ad;hxIWoq-_3qG*R;ZS^!MKnBj%w?)5WK=h3Rl-i`kC zK2iIT%qd`EmoL}N{YHvUv@%ucQR;;!7R5d2hmaKPQjXd3sehGn4iMNPgC`$u<=~@W zINO-W+{mk}+)I6x#31foQ3+?n=Ej=;!a;w^YcJBcaNN~s!30MwubCkOFqOv-4gd1H zXif}M!%lZvtWwlp%mMF+rda7h5+^>9zx?%-YymUf5PW@F@NW@f3bg|C%BuAnv3BK7T0Sgw7@=_Q===CH+;6#K!BPBN{fj;&U6b~LqJq&ja=J22C;wEytJ@gV zmj<4WzduC?A}*UJz;Mb=P~%GgY9Cdf-Dx|;E%lR5Emr&wo1!1%KaK?1b>ZRR^7&!P z7pMcd*ul#n*+EYbd`+y-r(fSN4OS1qjGbycGQaA})c^>PnT{Ha7kLGt1Jlpf%8>B_ zKnO+)Z*Hnk{0K@m@}}^A`7P&Py7=0&ea3z6vm;kSAon(?@yfLYe8G07%5ZQ~u8NV& zn69yTlM zTd(2cBB#?X@oWt940?`4#=ONKOyVJ}_YismdGZPxQznS`MBff|$Jm&Qn>*}x5bIZ%5U_z?lQkb56RvNr z_l95v(cx#jdq<<1fW$GsnltDB7wQdXxufq0C&Fp&1?y93gpx97KB^w72qt3dour#v7nn(dfYet(6pvh+XVt zSgp8Y4>E5fPcbO858yxmNKc?~lOCw4smah!qTS0f>f$BC4fegIzmd6L2&Y{DpC?g* z-i3sL5&#QV!}XuFv_l)e%D^9UV2qc)_ipVJY0qzv9*}F7^;KS*bE=VAHlyeaHOc{8u zjQquBb#3qI5QQwG0&q!4JA$cOdqkcX3xL~G#t%sEtq-5Ox?ZrAit~_Ak2@z-_yF^! z8jesjTV3O0?)mZshFIdB3i2$=QfV^O*LU*7iL#=iz>$}br~~*LqOyHG6rBC&AD>S{ zL-VeoVQNaA!9<)RJu?$eoE*=~Y0XDX`N(5iA(eL{1~`y?0xSZNsJ0WXh}cGNsh^Jl zrq)zDzw@8aqsij=MUf~i9X)Z5i^j%Cdi;KAbNSK*Ay&!VE>5+g(6`#VxVYdATU*mf zU)~odvj5fx5G=yN!sHR$-e>i+eyj+*UjA+4IPj$ZTL7 zhcB%*LTCfzD^KrU@y`3I0UUF`kq-~WqE>6B+$M>QE%m{E4s>>N)KQ5Bym3b(q1W;_83m9P2HP zet-}*0CaK>)-y^2!UC9=`w7o%+54olG>Sq_bPy>u9`ZlHy5t{u-Qr$r&d7N$ww$1)q4~;0i;Eay8+OrAV`i~_81{w88ug#xfAHN^ zmdO|BD>6~@wPIB^0F7uq?CTJJoz6rJNbc%T)pc!gZdj8Z-Xcf#+KQ#%>>!^H z0uVaXJtL3V-PIe*C>_A|Y8#dNu<0JnPu|x(l-b4>+t8LNhlEm(n20M^uAJi5x`e9| z9Ot-?zY63c);wY>`AIYQOj)TAb%fvb_BLwDAmXp_ikBi=I2c{8f0exIU$y?zRGedE zeg%EBDEnJcf@^&M3G@XHAqf0j%BP(qd;4HsQrNLF4>$$P-@>QVEg-D51)u`RY5xIO z0c$51$|>n|p!mI|shD0|Mbr;^A%KaP*Ey^Y z-d82*ut+wF5`tSQIJYx>A-M#nX0nGJ-z1IK06NzoJGzXFi~uVFc&4;r1*w6izp*iL z;40J$L*pBnk}l*KOG&<=(t|Hwo7xX#5O0<5HLVzlZE$0ze8W0KBbuTk({my;UgGD zV4wnvM2%1tKFV@dP?1~=m<{Y59Cp)hO?|-W&}&9rCmKXV;|%Q$3g@I*3DLE((g4Y1rt?9?Ck6;T9=X% z*U8U^Sd=((tGH8nM9CQyUL+=1>9l+J?OYXEj zkJ}%V5_#jTJv|LDLRYwo_wv$NR3onf%9!ojw}Xgf2+t`j)XLM7_;?Ap;XmGi_JIB_ zQ;9Til;oqG63e9hJIVbPp5%TyF(?Gu#)mEJE=zsph|PY4X+JbH6xqE4=0!w0KwfpC zATGgtWNBkMlrS4mP*L3C9ANrfB2mptCL=gu#E<<(z4<>aW06qP_@aDehcaiU?ax); z6m>9R1=<2uSFQ}VaJoGDDhcT?2m$PHNIm2>7vr-6?;Bl-k5Gx|;hOrXBdtbgx#d^s`DBNfStqY902>C7Mj#SmTJv0Xb6X+E% zB-(Tt zaM^PBhuR|h5eE;62&6hJER1Bq*5C{b73uy?l3eI8p0(0j96Y(*=DE;?{7#0h`!-E= z&xKSI+=h3od-{YJ3!h*o(1)7)`Ed_c?+d4h8F@4Ovw_E-E8;ZtT2RUWc}$Qv0@)nm zy7`z>A24>U-WYj_^SQ^q-I_&z%HimecO~RB$0f4D9Est2Bk_FO?t1=9&kpW+iETLV zi9}X^|7u+FQW72a;PUw1z4Wj7Lo5xST{68ARY|3!6IBnQ%LUh}KzU|;jTm<-#Ina& zxa{?7Ur=UfKlJm%!@{r$I2^iz1FXK$=9`{Ef+XEH;QXk*moMj#*U~Po2BZl>gY@Rj z8indkLImYTP?)EhSP=<4anJIX!##Js9H>)3+R^tdKM^iv&WvBlM_wQ_V7AB zRf%3MItwi*Y*N&rJ0U-3^q05?M&|mT64bAfi?JlcR?@kA{cenv0XXVd%FVX%;D`%H z!rHAN@(t>q8tCtT0?t-qJkEvvIJxObOXJ+L2N&HeCkVnqi<)C@{>HqhMspkBy9M^Q z=JO~^&vC!ayeEglcIxK`se@~I)_ekBQyhbksqBTQDP_U6kleQf$oX@Fa`s0?|0s)3v69DS6cO^Q&>gr2G zCUHgHnJF>iE*^(Ix!vS3Dy<~Q3nxkkce2Q$hp-P@T@fPTnsDO!lG0^GLJn9oi?ud zNN$2<5npNkruW*dPxH1@MBhLICzc|_9D!!Qpr9-fj5^ZqEyO?_0_#o>9GHPxheYtuumN})k6TU&8n&CEDi!-KyEiQ zB_9)Mr63(@a5jd7vSEa{Cd@>K3RH!Ns;gydq^0+`HHcasXdCubzlK_t_7Ae64Ol4# zA#yJ!1}42>9uh8`T9TYE+f1V+Og9ns!4aLLb|6~0qr00nVHWxgbe)6Hg@o6&TT|`R zI0G3&W@h!ZaZQ*&arqAihi$LHUOJ1-iP>2Onqa8C)gN{MXR;DgWDpS7xK!!gIlhQC z=ft2Vl(mRJ4t6WOV)(*XI9y?0PP-@3bwcys@KoWw{J6#HoM0mQiRWoQmc4^(MNgjG z-kVsvUXh8%b*5u!d8!*L4U6j~B@HD-^-!!ClARz4lr>;;eV_6C_3PKzgaq>K57mj!MMdPP z6MU-g%!_~}#>YcPi^D;q1BD;E3QC5z+r)d7-_KHgYaj`<)@^5$LpuWb02c!?1kH=y zKNreu!wH9Rk~xAUN(oZ=Z0pPZEYzQ541|(&^Oj(r>z!~7x_^%h5Xhtezah}9`ysg! za$0E2D$w=iC>C~~=q(us7=nj@-vZ~ba^FI8fZq>>@XJ0v7joK5%F0gk^1i={p$UEB z`1tt0Tb@G29ET)@I7BkrAaq1-Et$0XuRtFOz9xm;rlL^ep6GoQO#e|ys3~Z$Lu=a? zrcuJ@Ox|jd8e9svxXRVgnNv2^BYU#L4>htiR!PTooS!{x-t)C>X`?gOo!eWRzB-6& zVha)yT(urW^ z<(la0a#Nad*zD!$n*R=^T1n}tSRcI){?ma37pepIo`XbulWJ}#uT(`MP42KJB~6S*9k zu4O4^SZcJjRs7yIk4aVHP9@%*KW@41ZI;;qgGzPv>yy*!T}i3-vcFL$01UuPTK zBX;b~+UC$^Ra#R#teS54a1JcNpWUSo_pwHS zt$_qwIY*tp$*LHy1x*=?n?s441_je))1X^?AJQ9l$aM9r;^|}wJl4(glz}j2cy0@r zgg-P&?dgZ{4Pr*9&7TVvaBfh=TGj4#QVIBh!cpL~!VjCE*mT=zx&y1a)BN|bR zaG2nf$nTWKeG|C%#k*2Z&|yb%yL`8&Y23%YzOy=?zkTB+JhMHjO=bpA5FpkT5%F+y zt1U^s{#Dyr22&|RI5aYVI>XE$j)4=TvJ#YEAOrmo0-YL|>-nG^o?im|3GYG3FOY5? z&^||ww}v`jTOT-So*py`k=a78DMH);9pQ}8e0VlD0X>>g0rYgRwW+b*d-1P?LAQL>;KKsZabb)Sv+)lw<-JtE-+_9J0 z9~%qv-P)6&FeX-7HNdy)n{Rrj?T)b@rzx`3^h)(FONKOzZ?h0A)fL_~!k*dCeq1cG z?far-7{8EvjzTW+{_VkGcm1-2-Co+%7$ki?VG^~_>Lj)pAoX_}I6){B}3E2M_H_RIfS&;HW`e@rcN#!J*<$6>>i8{6JH_s6;)&QDull_s?q1Re zPo6bdT~05bmXP>E>+f<^``~%vMFt;_K9SAtSSwGjfsZSp#aDdp8tn;dulIFzbC|5l zyf_~ok@Yl(ZR2l#x;eGf;?sJYvbMi2G;7~8_XH=iI-0C?N(Vir9;oj7JvJCmj3vW)Q#Hep$}GvdCSWSf3KV^ z+&d#`9cplV_p)6DKe1qr9kWFzHow|u8Xizo6`YE4=wDsAQpWZsw11aU#z$)& z+3Vl>-_A1}Fo|#!2|K2zA^q57wcEdPIKsY|KE>v1?g%}<^_eb51OmX`ne)FqE{<7f%nHgsWt0&(i&?l(f1a@wMdDH(u(t`0&9CGL0D=q8(idJI?H>M_JCA#P5EarL)z2989s@Cavs&`62)9;r* zv!U{X5+k3rwse{JX3eMH6~;t1>wT$rmQ^n`z71$s6~4G$>tbXoUjC}L!i`2~W^5nb z2wC5QnI*U6=u6npAs5I_R+nuEv?%4gL|U5 zn=ecBzFJ4k{;~WASZIqCr$f`?h?6ALg-E546&I&IZZZXG5uQoJmzYVUWxeaOGcp{} zVM%PU0+3o$6EJY~3cHo1<<3psSNrAKKcHwMDTV^melePlq>0=UCX>I&VkYP zG;f}r%uhO2hS=cQ_yF}caGz8UWwwn&69ycj=Z??c78!Luoz%V35gx~fFI`$vX7{>T zzjiyqB}*?ytglMtg(>scex0FLaxH@Cz7Ou)u+VpG^Gx6i5>Ruv|1zhd!Kl9U zD{evU%JS1rK8M-cn4gP`#*hT~gcx$}8uvv$_4&@Ml=bS(m6pHi<)=Tbx)SedlpXzK z+h6uAN>{qc@x;jf8|riR#hlL0w(}=EuJ|5$#jo{HZGBQFlqAqO@tG!=pcPJOmw#ca zI7$s3=b5VBJT5)?=ZNv2 z$?0#6T~=WuhwW8$`s&>u4y1_UECuwK;v&Rlbmzj)w}+W^EyN#7FV6@kemTRt+t%?n z`)K{g30FucAhBZ%Rlr7+kPn)sf}DhlA^5=q@|Dqj@M(2Vp>pB^Wq-LKVHR^-PgH| zUP))wR~D_Ah{zSOJr6s)Ao*F3TDW2uCUo9Q^6BRZ4Jm1@G0NiY8@{D+hxT)|eBwHD zO{nF$cwJWFeYqOCPoH*tqOF0g+4zu%X@_OzRNuk<1d+a5k%wS93TKuwC!aFnY_^rZCmg`F9VrdV8b9C+emT-aT-6)#d1G=fWRt^~~iB@6MV_DrAU1{(miiR>#c8d8SN9 zH>=t-)17?D!)d4KTXwS5I^7^$(N9~_-?^u8zi+&9{u!pMX9-7K#B$W~%Nm0&&;@-K zi7M!z(#?@lcGFF`kPU=h zR95adKA7>TkpnI}lS*$lKvh=7pwr zhb`jtr@O^Aajf^?DVE6qhy`RWD7yi{l|OKi*r@jwYhd{P_m1NpKe$cI&A;Wu%0h$s z&u~inyy-^$H%RJ?%UzWCn9(O6@4c)4!19bH6afg%5=?~MFZm;#_2Pf6Jm zNcuT2=g0Q>j#n3B1dzSO#ZKE!sHsa!PfgX<#rG_{d&u*5Y7+4B#51t|eMOtY96t=x zs;-YMxcv0kE$v0eE6(Gy_@zA~$I4_MvqosrcQ!-4s~o;wqY=@K6E4zTzx_7_Mqkdl zzNp~R^oy|Px*-#ak1Io>fd-eh{%p{@C1??&b#G_n$DJ=QN`)2BH(xmG$wk$JkHEk}P)%ae3|bD^3dm}}V^ zu@xN?VD-^x@y5$EoM|UJ%RyGG`fdQpM)1e7ke^-^>B&dfPF(p$+TI1FO>q>wbGJ7) z$S>>Z)3a+IlKMeSXY1_#LQ1c6;oWD)*#qK@@xD-T(ckUl#*Y>)-^ll zyP@F1ie=Ufp3IAl4r|+TyLzwAoOFNFZq>fxJE;D*iI?9n?8Aeol5@n`-Sn~vraP(S zEyauvCFjsJDn3?95IS#1cP_fXQHg#V{jeEx)vNrr1A2N&<)0m?JcR8h zqKePkK?ELZ7*_ZgEvkvPK4`NX0QqTDP&W)RGxpFoMlZEb6H5@Xe*cb(gfN=UxThg( zYfT_-pP>*du7?A;snG$Ol2;PJuZooYX_|K zH|dLtSI1~6(>0S@tZ>U!-^|sLBW;Y4*?56qY4C+xBEeW{e<)+WT6Qw6<>`|rTqoVZ z9SAJ`3hMgo395^1gLa?(a+F#guLT!?ku?JAgf3iLe*>4#1Fvfvr;_K#*a?lq(h{_P zkO&5!?C8=9@K4Krgz*Cf8JMM`-(s2wbMkhM2H3w`rCWU4f3NMCJ1P{OedA4U&%?O0 zZ)Ge_X|r(tDX_IENNobZ1-{+aK9$&AiF|_<9$b7TI)+0@MfAejHd6wvp zEcMwhPg_pTI`2MDzv5V!Efi!?x8c-`drxJr?bAzV(7pe(!lPuMmU^zf*ej}T;)k3= zZt>?+j*;O;T&FaTrpAs(=6<`JEw_jHgHYjCO#|9IqG!6(%TA%!MqThkZrB8+- z>+;4*Qp<%IP8px4f*JDHEi^ja7XHTNxY*f*HrG5(DG1UQu(z{=8npZAMIW5iK(M$n z<*NwVf9{yEhnf8&(NID0#T|=YO_D1HC>k74(p(IAdcD?{8Mk;>%BHnI3$4t#pm0y1 zx4qpN^wf;}R6H=_SYK-|X9I!2UTWMlaIZ*EU& z#;wa2O-wK@Qp!;j#j;;JTp}Z>aMo$n47R`T44%UmQd+z5t<|h4$ ze^Ae~wCVnehvLk0fA3k=rlV(K?t1@r*qPaI+a-SaFpsYUkJ^=U#*y`|BFjAfJ}U0l$a^j zKVj0ha$(@07u~t6sN!RpL*>;!+IZ<7Q5l5+adVYk59ax63aABl14q-YiXr6}TCV>7 zrBz?(aUZ~$>`-K|0l|a8!w%5AP8A`8Umu<>?DnY~G#2i*R&)=HiD5{6fcb5HGQUtE zy4xF^3BK{fgiWH_)Tg&3pJ%%bN2DYGGp;e9BQv2UG{s<1${n6qkqepHzvmW$XtWOkt zD0oTuTw;FzsC06kv4ykl)6u9~lC39?&3jH4o%saBBKp37PQPj#5m(T1M4MDaUEU{t zNC)Bi)SiB9k2<227b)mmGdH~?f&WE(;W^SVc(O`E0vjB+?X*FuIXQu*-f5MHIBg>`SKC*8xPo&v^) zhvGgc$(ZDI9Y7eI1dps~$Hei1)YCduy6O$QX+@`1A0<)+miLM@U7$(jJ*xU7`Ecmz z8n&~yCw=r4Ynjw@c_VuY!aa`JEz)o0zuk1FuHWWF58n&HdEfLSr+K56)9l~h&$5vU zLo&s_Jzog?&yRB-Hk+#cyY>8)k@nApuR|4V-E8?QIKC;Qxa{ShC}sLb|GYAOnwYp7 zcc|_a+hHR|8ba|vS{c+nFxN%6BYDfJ7#DPj-UKC_qAspc*SVey9ePCe9TmP*hxZg; z-7BEXK`@ZZ#HRy4>K){!-7C7M*2zZu4FBsDmhzSPvmG)vR@XPQ1^6PrAvL3KX7INyG|PnW zI*`w0Wggbn=7Tk)<o>9|QeI9Ckk7}bwH-_`p zhA$P%@fbAH#y#}+i_3}bw7m|x2lgL;a?pgS^V_{pisRqn!b&PUA9veCFj0^!FJceF z?K`RoKwrShlJ7&^^Q*~Q2^SvHLD|SkzZGt+PrN+T(%-lpg9Lom^SR7WOB0w4U= z(55rU8*pEtmIq}9sRX`_g;*u-Ay~T>M;`>&9K2B(8H4@(@ZXXz_JBpS<~CF@m&#qp zV!ls1sS^)bNAiBS(!7T+f@xAP-@{z{!doF0Y0g8pG`m$jGPfRH)#v^11>ux)15~yr zq^1ABaCe3`-dLEnab3QbTQz}XwYP0?**ksQE6GwmcM4JhhHwO-)QSF+kKaA%(P}Cx zz!Ev0$+lpAPoPm0_RO27c|q#tl6yzxoOxv5V004KP>k;Od!+Xms}2D?9TTQ!JE%oW-Qh#eS#u7)seS_cwEqueDpyu-boO!{1+;r{$WDgm!qzK5F^b$TZ8+wzjhR z4zRODg4Tr{A+N^5bjGiV4USua*Tj3jchtY-DEWZeueMB~tZca&p1D5)W(5WblHK(Zbp~ zfkYZd`Y#p9IH|65mDQ%fe~&`6Ivc5#9I_l z?jD>ECfQd*qI7Dys@m6(}eYd~r}AG1swx)^PnW?W~q?2R!1 zQEb1@)&tpg=Cg@xj_p z`pE;xz9P_Q-IbK@Sc0=xlB)_NP_5NBIGGHD;MuaW!o}ZM!6|p|h73qC(q@nuJcxpT z0oR(YjL2<_Bnt;YHXP){g=Mlo{yh{VP+@_J#`roV%1()U>%~MxYn=N*1|Z^0ojbN2U%SurB03Mzw8f5vHt^`BqEP_Iwq(JDEvOe&@gT9Lz zA7{3#xurU+IG-WgJ|087#LdB2CyMw7-8{(MCAlEN4>)?x0oZs0;u(;E?@=2R8T5bo^3r)E%%l*r5^bIb(eCg6(RAMNRQLb? zKR8JUNpi_b(g`71S)quEkTN49dnYTqA!H{ZvdT)5>{ZE1iXdwciHECx&(eVdq`?l--;ODh&GZ+MB;KRd7A z!%dRQ!>hh>{-PR-%6GX@nqV`w`)z8mpO&nZlHeKxt_3L;D7-NpwyVyhZgR!oFGbV3 zxCcu)SU!4$NYZzBZet@a5DyjrEEd$9Ew3yr2)kvX*x7E`iYGz0%XDUSWg?85ffV*b zdZ4eb3QJxIi7oTyy^I`WCoXTyeQfmZ-){$vx->__=HY3`D&XU1Q9-;i#3{GT0CZs- zeusr4%KtQJeNRtM(C>O26rztDH^Gkde>63e78(Z^Vgf^W)bO|4Kz0IvB4ORfAz`~) z#RF7$^N}n(PwHmR?ocVJSWqmbvU(83B@aX~L&)*$PKmyZq1!w(Fc^>x*W^+ZLYxL( zwVWYo%`eo*viv9gyGoMKU2|cPj&mz13|q-@cXpx6l6?=T(yFRt!Ef~XJqXm~4MDnT zvgH4f4sL;YpBk+pPL}EUeLcOsKfG%p0|M5NcL(eg{r&3#2O!EZDTG-Dh(GuY+r`&G z`%gNz-6(4!qZiV;j^DAy&Z0^`0BDkVAF&)nXk=k8TZwMU*`Pj{s{pOdtzP zPot@^4|Xc6gY&G%;j>fOalPrFb_I43_6T#f&pkcfs|(Xu1MAI%LN5ng?JGwAOGWxH zP8`Dm$Y_95p~Z3zR|2$uI22c(-g)i%^+UkMJWL6Nz9WLrsp2OQFt$Tw$FL+?3+x!b zRe2T~3)kO&nMu&-ypSLNcwF^~Rq>(VsS~-n{^O@jFzp!tT7d0BASV_Z>PSF&)zo;AOtk2nH{K82GgjvT@~f1>B9a3gX^(*P-m?A+%D-C zd&VB+zXbzoFLqJ<{d_c176^p;?_ZiKHSt9gDY^ZZ((yXN9R`WmVn6!Q zHboT?tkPYi{r_QP3aTPjn!``0h8{%g5$|?kosBOD-`n6Zx@y)o$?eafb_I+H15O-L zxV&MC+TG=MuCQAv>vFo*=34&gEa+Jie`VA%sA`^ZGK6$bKC(5;)zx7^Fe7}6#=;1Q zzq2hk(9xoo9#|F^X}tN}ns7%PUFn101eVn=j5TeF+Paw?51|5y z07E1y;qD+;gk4s}HK(LSntMS|Ks%2w8q>L_He3qW;&U)u;qZh<8xMxx@E|t17%ih) z2&q2|kr$|EVc4%}4@*b#sdF?zYV!N{Gv#zPc6Nb;R#CBM2QRUy#%8HzQatKI<~(}2 zY>7VcX3dvBnt}O&&)fQ;->64bdgC?LODfy4-UTHaQa$U*Nhn``OErf$Yxf8MPYi>e6o3nU^8LEZJyA)IIHHjPf8 z5P(AYhwHv?^mLzb@AsXk7@%+81cjmu%I~6WT$P4~4?lMZ_k~(zQr=@u!Bt)oJx1yF zd(A%p=A5Z1Iq$h)1y zsyn6@hXs3@BE!<_7bh*@=w?w#QSd_=0G?Iy&9BuR&2t+|020fkk$AmqJjSih@u$X9 zl|fqZRcNR33&=jj9~Uq$6>tTs1!ze#i;L$kP2Z^I!DG28T)&RHM@B{AHAXrOXCJaraB@9UbWygc}y%h_q!N4LQC*T`vlG=e#dY1;z+C+5s(# zi~G0W{0~(LUXN~at@`217k!APR@b$LYGfQUW`U9;I~7sL0nCAjyldPEM^eYgvt^u3 zo&(<5g@uf_D5dDyx55}qhDBs&TXS2}gw)T}ET(E^@8RUcA84!7-rHYTh)Vo%-=!I@ zZAk7ItfJa~HfRsg=Xa!nN7XtC5VA2udJ}2d%kRUay8?wW3ML?YUM;x7o+YP5Hs!dH z(R!4J@8NKOzvNO}1}U2VKwJw=unj$XvZx=!oUx*}s1g&V%Yyg*J0=tOIRLV}%RSin z{QBjzWMp$hMphPWUvYIcV(|tXj0{unb;E^pFu4s1T&B!NnO!O) z5tUHE$Z_HE{5`o}(lV74rZreXukMnCc-h4ZPgbE4*Oy z7$pQYF81iQ_|${H9BGhzi7C10?k#g+5P_5!!Ym|~=umoSE4A9>^!T`efk9$&@+2xA z_QE!ZhiQTV5mHVEq+;;j;(43pDm65-H~j%lO`*B7wZ#hAZ$!`(C1s(+17`O$AHOl@L#PTM zJ_8;1$Ip$VPsbw}p}(6h`&Jw9Zv&3126GC#vG$D>k0uc|aY@e^TYC0HH`sXhH#DXd zwai0~2sj&l!^4FAXFaBF*dLGX-hRu>qe`BGVa%-pSI0}JS>d;Xc^N0b4{3(oCwjM$ zU6x!;XJzFwUEOz>x;nED?0v7T#ugUOf6cfNEyh;|f zWCT?V=F{wl{u7I!@vL$(G;OfjD|rn^HuWdVHfE6EDrGv>!zTViz%vSQy-G|_R!rQb zuMa$lO0N^|Aa(Mke-!?wn40qmbFjD{ZGAq7u#;9=ID4}@Hl5#p0e|r^!;5r~;z;1A>#HVgn+lnwa63nt$8fc0?+ zS=Rs?1&hkayf=oWqHHFjADM~0e#n%CNg71}CgYBC8%8mBf#JP?FX#$@>X)zlzIV^7 zpsVBmv;g;Dq)~Wy?ApSUrXla1gyRgffY*q#qn81OcX)C2Fg-BVPNmw>`!w*w=8XYv zhlct(f84gFSyjUDf>*PABbtI2`UILlB3zVkSpSvLvIm&Rl^(kfYo3HwrHea72~0$a zNdYB8hTnpO|1vv7AIHGAb>%4URf{F^Zg)UgfkaetE*6W5gk2(GhU25Et36XQ*H8CK zcbV;mTgy5R#hS5^)x#&yOjwFN(=(A(ip_#WNgv?nH#XwR5oOMXMngaqU=$rY43Q%| zr6yWKvvLp5@RL!LzN>xTYJHdICMB8YgcJ)aU~Ih4*OISS2;|L=V&T*=sM*K_&Rb@h z52Rh;JL*Q9u4w2)A z@D}zvd7|826OsFH{q{+%$+{hTdcHV38zMvwL87cNz#hh+#KiRZi%Z({K$fi`j1iKa zII2<8Kg5a@gcR)E`n3~eB|YW3rlNLI9{os&fE~Ka|0bBve*r7__iJW@p~;n8X13dv z;4DFP1r%OS=?l?9@ z#5T=>IdFzwga2IdAv<-$^F!N$qgyOtOG3?VRV<>D57o*g(Vz3niV|o~x2JfuW#|e( z@rI=(7H-gfV3EOF_=6lB1}rMd)#4txqeojr&&ckNDcgw~3jTgw0TtdD%zJ=46lF7% z-$OicAna^r$BlIroQf1AIj-84NqGnS+P8ER7$i=9$C({KP&4U81oLix zX=O3CV7+JS3`u8hLQk8c311^DVTz}rCfbs-Y4@ndc9L|ok8|M3R_vcUozrbnIQ08J%JIs0R>A%n~!UC)ybi;50w zvta)CzkDoUQk2?67o0*%o8D(Dl&rGhIx}+c^px=5E$eH4w!hf#*ex@;4>&_qjj)n0 z^-kUD^wfHnzwhUA?VsFJw!|||jHz;Vdn4IyX|r4fpA$&K!B0JT(Y?R!@ap`bp^LFr$AeGs?+`~;3gyqfBU`a>|8+%hADVJQKX z)-}@#Obb7LL@5DR-_MzuW8$)VtB{U^()zE@deyh}U*RDJ_-gP;;rsWiIu5Y z2^R_|548;z_!M)&_fBQ? z#A<%ZjE#k-QQvMe64lLbDl27o7Ce1wMb0m~k>(8X;BtzDe`mYL#5_-&oC)rRWR z_a75U9n0^sd!z#itd01@-<6u(es~Uj6)=~^3`itLkf-pvuR>jQH3vQQNmW%4FieK` zC!VqL_CCr)g9QWXagdxVBjkd`W1o9u`%5&+&b{*BE|xW;&vHgU@bjr+6Ph2pJmtdW z_7U7x_t88C<{)ASHPP$W!DslXW|i4))p*(LpX2*Wx%P3tI>vFA46?Of4jDvMc~Xk> z41`cjmt}%8Iq|!W&_pcj+n$t*`ZSQAwyl(g(st|JQ;)jrE*cm>C*M{&QUVCVA=Xy( z(jE&_n2*rt1@%#(${|M?Ku{|vD2Q{*t~%inKKQ-MAiNqD;8g%A6&p0h116HmTeOpA zs^=M4yfkhMl>;F9vm+CGVQh;_4A;LV;5P$Q=6_6m%mK)3+hLJR zFp$KkY{YH4sN8?LSK{8~8k0hk!jQPv{LJAE!LI;LCToC{iV*8iS6(g+KeL$F+}Fz7 z!fo0to@4IQ!s_4H!ZU7X0PniRhn^_->uKfeR{_pT#o9~{0SYq%#KFZ{{xqHA2N>*K zC=)d!EEEkG@c+G?(|B6(`3$GG%G75w9#S*B4H}(TtZY^;+z- z#nP(dwKM#kWe~@qfWg0mDl~|LCc+mD%qJ{8keM@zsUI9TRz` z36S(LRVGV!_ZQHMcl@N(mH2unq?9fj-NuPekyL?B;Boeu4iIi|O3vlBkCm_hY=J)S z#4$+|-h|eJVZAY*ONMl-q{?Qty3yUG>XB`7Slt-oqT1k{%VKXjXIf=(V9w4EKDBg` z59%6R_pyB6<+z@6M#pD&Pl8JhX_iAiO;EKAj~mRC*V%GP>1{sRi0>9QURtgDcMWSp z1qFt&YmV2^YLd-tSntI0nbnS*?#N?zzH+7Wy9`S z<EauTUZom2$c!P*EXwgWPSAiAh})Qqow>=67KdV`L|{ zxjDIzzh(N<;Di~D>GI9pJf7OkA9X^;Uvh#5Zey+}P?tfIww8E@tyS94vS;1u#V@*x zk8FkmL+b`&yjR)0nct9pQL1RG$CjQvf)!_!!U_$|+*U>|@znllDJ;z}*Gp*K7L0@A zFg=J&U;P#Lx^~beQdK>+cIihrxF#i!`Y0%m zp22QRngc&gw2wWd)v9pBj4!T^jgIp!G4H6q1z}RIbIi3#h@L?BW4ac39 z*>V5F7^toja{&NUHJFpaQi0*PFY5sSCT&6bt1pf&9GEEK0l-#pD?TK~zoLBgqAw42 z+q8f6La~K@7|1`DNIa)$pWzVD7Uzlra}AA9A&_NY34Ir&`r!0I9zRrQe}O0^gOnW5 zLQSjb+Vfpk>ZL{$M_dc`)=mS}V45J`ryb+blQ(g~gL?UDD>oeb*sdlgDf1LklGQ!y zXon!LAb(PuB#f(a(^hWdbG0cG@}|>3i29~eu{vXb}#8jjM#u*S=dR&$*5>!$V($? z2SYccvG_?s*%-_B1v5uRJ_;)+zL{tsZ-C8r+7;F)GEWqBcCIc^=b~R$^w9^mj_|6x zf%Ar+3^wr?;=n1bCps)`A(@O}jr;n_)yxiDOCTwu+fy{$MPH91n8bq9M^`}N)cG>* zv`-tL3wDx4c(!Npzu_RD&7S;=FcoN+J*tu&HCx;9Nx7mh+X74)>xc-|;-Q{XkK7>X z4a^;Ym-END@zQq8||{g^bDo4 zz%GqW#X1T5ieEtOV{W(vOi}5g8I+=Dvpcba#1S8uFfS6tip$Oh4UKy)x0iWyMo>%=vBK zod)w`|CT?%)CStg!q1DTts}Mn)@SgzfL{TBg}(fZ^l|OGO+(A`0M{VdPn3-wOfO`+ zKJQUgO1gtH$$k7InF9$Kb+jHbMnD3UlEPxWn4PYSLM8?NnJZu=T$--x8C7H;1oIdR z?~WY0sT_3KAeOIB?90+i+eZc^q_7}GMJD2A*?sra2*Y`%2vuMNpgn3Zw>8h*)lQX0 z{veNVOy->%o%hBp@n`P#KWs`&o1`|X64XiTC9e;L@s?4%O%xYM;xIt@fsLhDqVHru z8M#==`|6bnsV@*0k)7il92`W2mU^jOZth5hO4ow86b6W;^$jq9K$l16p!`Say^hcb zt7aBuX5w*2%RYtP24n2Xd3WP`r_O|ck&(LnLJg)4$K6@m0tec#CJ5%i z&!`EY(FoP0%YljuA+Ii_k?j2ZE;8M)>YHPy=#c@hRf`1b$^GGP*poudrIaa$4d{(~ z6$ZgRd{Dk7o`LEa^2J{+)}Ts(yHVJUtnj5IdK-7@-6}gAaL{g=-<6COT%;eU@dZ8u zwD^)J{uySmqHO5-kS#W%Xd2>u68TXj)zuHq@FQDr=9fR~r%=co$T&Pa7mKxv@=$(q z{)*-VqdKu|6hluulP+#<%vtZt?DtAHUqRHv+p+ooMbTuCXiHnK;{##ALlR(*2xd@s z^i_eS3}rL)rl=gr?UrQnp~N#QzP0$ur26iCPP;6QO@vS@bj4bvPdz>3I7Dr#@f)4s zon4VRcsdplG(fXqeTRSGWgMG@-CTYbJ^^krnG{IMasOQsCG@e^5ZR}Ry|wjyxUtW6 z{weN_!t0Ap8*g}u%vC!F2l~$vx8&$ROCNprU)rAy2wN<$>cRl`{$i!vdkloXEk%4= z0vQL?pQRCJW5650QY6pPq`JPGqVQvn9B$`Eq^HLo#67W~}8xZaRuoDuNgz~jWfx0;I zkWw+oylu|MHt7P1#jYeNBgbO$L@gTFdQmWFa(|toum9>Kb;}H&Hl*SOHODigBL8Bd zIhw>od?kw2HQL-IWnJCB@AVV54y{kUZy3{0C`H~24c!C+M7N#sUOCaj=8Fn&E7C6vC$6- zAPEJsq|8arE2j;(b_idre9=_Qb9o_pa!CEG%^xo8;$pMvUr;g{VAqNRV7*s2uv8l&4t(nsWO;KT3UxxfHHH_2ugve)-PBEQ0 zdzP{Fd71M!YNfn3N!qzQ4ARNXZYvrImmKlFj7-f|oBuH=@P#)G_57k_Rw>dV0hz{X_R7t0qKGx>&;2|$aa-bUpq{x4L1&jDT=emBZ6dkH~LfWv5 zJ1imbcL@1HXaD^<3o7O2%R-OxqDUVgx&RJwblgyA@U^%|Kk1(A`{L~Fi-#NoCXCU^ zlDyJKTWq#RG(C5~3NN8mI?^5=OtsSsYXHnVvHn7Xx*L$)d0%WrLh5ni#h(Ioo-zo{ z6G#K&?vVKfEj~FCm@yDhSB|l1MFlEXObBk%``#?0JF2Eg9o+9UgD+uxTq#xh53+J> zs|qN?GEkk;-vaygk!BH61}HvAM_jduMAWd$!%B- z!~LG)4%uAmbLcmb_6hxF-_37axK|w{=>&37K;nMYW>NcrR4NhwZ7*Fph6hm^VJr1- zV;$#~jX16NfWo%}!xDiRq;@aNVucfM$Dk^<ksgf?;rdKWZ%?v*$&A$NcF z3>Ueqtn6PO`9C?_kTu~!wKVW>b=~om4zFJ^aHEFQC|NG#Zwn@EhVV>>@4}!Pp9nEW zA~9+&2{V#uvsjvRGmF^ejJLAROS*CkQ6Af)fQ@y`~&jK+n7)1BH4lYHdt?6&@a-*$i>ZxkKwV zpXA6n{0Lkr_!vP39-Hq6_!S&(MA6}Hmtv1_sSMyi5rhE+>;||(5CB)P?#6z2LDYVw zyhH!>b$jnVipf;;t8pzaY8o?bp|&w%f!QbJ!`S8wKDZi_ENDgX=xkQ(JCzd8y{Gju6Pv=d=|)Z$9ksl(ZfX*0S6R8Q)$tC4ed?v|K{;ZJ~DCtxgygB_wn zC={G)m-%g~88)u}9{84l0r9Mt5Nj)>lOq1J;n*~$%3Pg*6vU@^I+%l+zJ9Ic;aUrs zX=^Q(SR=vZ(o2=rDC=}PgA|s*L-W^%Q*~4dn*xllpvp?ooXHGRYE@!-GdyewAg;cC zV9i`F0jxvlMe!ZXdIbao6t^Ayh)+XxQy8eHzG?b;9vUPog3R4ujuL{LfSP-+%?g7{ zu4Df6vA-0{K`ig}T-t@*-!tHc-Rz~v=?P+qSgNxz5f4jBmTp4FXeCVcz|#ZR zCrZ(sp(lzRk50S*!xNGTWhE>%Shsy`#k2bLD@RxcKwL9?m1w%@sUazWDzd5{eGkIC z6zQoRaA_7R3W$TU9FA9 zt&otz^eFG{CnqBfE$!cSo2ba4a*SbB+|!@RraI{T-JZf|*e}`lf*;G9&T;bHl--HJ zs;Hv&C)}grN#;dA7s*@r@b0ne97>qk8y1kkN#s^G)~`51CIcS?r56%43%g;Vz8)D8 z%!4oh%s>je0jgVlvfGWk{Dim#jcboXt=BBCo8n}7#CbD)<>HaRjHid7)1$s_=H@mx z+Lnw57Oa1e#al0@XrAm8f7fY$8d%-4XCWU%k55#>H2nlG=KR=;sc54Kxm=D$OE|&o z#egf7`zut3^z|6|4|eQQi5XkA@TY@z*SrWTqD`=>=i*JfBQL8k=f;!@c|p|IDeS86 zL93JWSc%_6ED^8Pv(klP8w&EK4>l08-){&Wb8PZjEb$sb^!Aw!k?NqU0yl>z=F&T1 z;z#T+d^XmWanj(Ag%b`FCv?fKL=~N5=v0)Y1)$ENg zZMtBVfU^a{L}bR3vte^C39IddtZLld$KIZ9;cV}9)^;!4Fs$J?Lkhd;#7+2^ahf6) zr+>&)R$hMnXUD$q1~X{4DsdjFcAj&t&E7? z`w<@mNg)yaHS1Y7_Cjs@VbRI+P?0bb5mbjMIrKuLFl-SsGcAxCDfHg)7#m+R z22o_I2U&Q6kjc!4T+)OSldra1q{%w;%Jsox+oZ=3U^JLR^a_1#hmAM~L#KE@;E+8% z>Yd_KDZN~2q*K}~HXZ`%IyEL+7jsboBCpum8s1s^62s!Q8yu1uq~}6(Vjgh*)PE;1 zK&P+RZdJV9K`brCoy5Y<#%5D`C?x0%Kf;?JfyNjEx;MM(3uu!NmWtbU$!OsE?v#;0 zL5s}UMKk{A2qQ3LQ9*N3`2gOokoxrQNl2xB8L;0j-L29w`PWW7X_}Vl#-J3D>%%;j z4)f){G+7a#@S7Btq5IYsLh*Xccd31B{&KNFbQ*>d|J}mBZQ84u8$mG(w@}JsTVVLh z`rwASWyaA2Rwb_OEdz&Pjf4tFU&uW5G#2wU3< z1KsS>Ui5Mi5-}0F z6n}^&s|G4RpPCKmO+Z(eUtPymZMkl(wGLVc43$tcq8U>PF*%LIMl`g@{J~47oc?-as5lPh;}D2U^-mM3Npk-*l9 z{*EX$-;mji$V3TyLgDvkoNohiG+EP1+PY-zBQ3B{Vu?`oniN8l7|eqP9j5UhIe9P| zJI7gQRf?x?Rx?RQO6iaRf_@)f@mJ>^Cp>HIaKfvB>!HPR*6RUZi-nj9zxw}2H$Z)e zZBct}-$%^QkW9}IVsOu~^w7z>WA<{-UhY$8)?fBQ&Y2J^d?_4FoROhhX>OTeJMDAG zq%h&JEe9qB6+ASeQjC;G74SrW$tf)jQ6m)Go9?dRkkX8+^n`b0BNa0Z`D=o# ztZrkn4(o~wA6)c}jUS|>tY;ou$s8Ckxn+jbrWVU*5|V_t7$ScpkqgDaa4mzhh-6xr<=jXT|6kRx9lpC;q^Qjjysqe}&4P)N;Dhove7@8m$444ko`~d9XW6i5Q9_ce~`AP9_fx zd=oofukyaq%OGJ)VpxFC4SH%SdL;1l?rL|U_$oT_*Qdf5VIP}Bg#*l?o7FFL^5X1x zHpDg1UA5~XRy3MVJ(h2(34r@ZY5b8hJ2o9XN>|&gjNH{Ap1~Xrfo5NL4`P^ zZ_@-biye*Jdz+7!Ehv)|d^?y#dzI_eWnyGHTd-Q}%PUt+?((r5cl}R=C*uY$4eeS& ztk&3;pxvn%hT3;tZhP=@*7QFiTIH0&aAq%t`fdLOSs))#d4$q*Y|HG;HzF(fo_8{H z_(C&Cq0FZ)DW~l8(mugNZ1}ghjz^SM4zmoty)?nCBgC-1w|UZ~Bhzzkpf>;gw~}Dt zxOZzLwyrog3s|$B1ggy-ofzC=;BhJ{T3jEXPOj>Q%mCSun;~%+WwAI8&qzF9y2Q&( zq&&(?kh+aqZ=DK&v*JTCa{sfx4qj)(IXUeiOFwF-trm-zOf2HTLyP6}3hAdXcJSY( ze=j95QT>q)gkS5eb!(?F0Es=ob5(xlzBua-4}Xg0GNm&`6(}TCtT$+wYKv<=knvpk zm{Yj`==qYFq_Nf>;{(F$55N7f@^_snPLvgNxcKeb#*bmO!pzPbzHPPlq6)s%9hIn( z-l?)<^iy|Tr+s{@pi+nAsALY)-m>Qg9!Yk;fQE1NfiLv4=ce ztIJ-tJinjmOqojPzL7T*yN`6vFOCjXy_OiROg%?6lr0ibaYlf6@W9U6n>|Jk`~U0` zxT^hh`q`h9)lsACnkmYmUG~drUbDpy{Ytsi^ioY-&s#nBIjMP3#@ zCBLK5zxjcwsa`9Mn@4`l>%EU+aKHLa!lW2^H+g8!|5 zNlV=8Ej&&4?yTQhYlZ&#OX=5k&B;)dcta!$D=SQ14fAp|quBJus9E~?$%9cr)~I9f z-DS5W?*ro0&+tdD_f2`?9pR}9=4;tx6W(vJjEryWv=N83C^ic&uog>j+c#fY983NE zDQbKG9)I$xLX_P>OoKN=XE3F~WMI?(2H7IEHbUSWAd2GjHHpKC&xgLg$qkD0D600c zKBU+5f}tioV2xH=aNVtl87gzLr;}@s=+&Oa2f zkO^6Q({j!tf0_NEP^(LC+Kia3n8LT->yyPQk>gV{oD1OLg>IDYQGBk zyR2b6S%2S*7Zs&%JGcMOrCL(%U72LZubtlqPoJuw*E=#g5NBE=llS3tXw#8a35M)x zd5ijN*GFg88iw)|^SUInPwO!Y+A|hv6rBpGY5l?BKh&o6yU|cs*QTa4BAS)*1$~2S z^^R^NdE^XE&3ch{6q`9R2XF*qS&1^*umB@>Y!UQ@SX3ZN0Gy{&{AZ7bHp`zmC7$Tx zs=^7_2jB|EI+lDXa5P~X@aD}4g@;k9nHW!#*ls}qa{Uz#jWQHch6NaZ+E9==PPh5g zvD}GK15`TNQ!iIH@C8mwwp*bY&=r{OHQd$Y(kmlA;W7ApYOO$oYgy;&JGu5_hkdMm z59bafei=IBU~$>RnR9hCcOyME$X!R6v*fC$>p`Y7^UpQo2hxU_8TEGSaXYh0S9BOk z_z&G}nR=0Exxo^~!xl>SpMvba-y6RAXU^w}$bL<^zA$+9mt3mJq1%x=UP-t;sy8!? zXnw0`X;zYTOxkm1LFeB2rW5sLjfdp-T{r49+H>~x*~3Kb`>UGeoTtv)j*L#*n&t_Q z`&?6P8jw38IpKYusjIwY)HSzZaz31KC@9QiZ0e-0@Q!**Vx^wECd)~+YkCi}n}p-m zOwafg-H-iqYojxhKYQ!QHWsCL)q>*1uLr9{*IitlT!oEC)QY#3J)E3aV94S=B+|Hp z7}Ij1RBN{F%(v~M>Ut0V+*{Z_lh!A?=O9!oM=eor;iq6%5+NVVqnqCa9Z;B`1nV7~ zvPJs%2@6RtL4XwQDD$ODHA*9|6dC`QrPMTnzSU%`i zPeyTJNJG}4#^RFhn@;-`3}Hr(CkD>Ktl>l@xZ4uWG{z0x$gTSJzWGAj-hXbDk!dus z^nA*tpCF3_?w0it)X{hL2!d6>8)7!$;o)!`pTIOjV-wzY%Z$&&>=ZN|C zrbp&-ci*Ny`>7swZ!amBN2i8~acOKc_-HNvo4Foix$`envUk_#s?|QR)Y;Q9*TAsr z-~n}_5+7IY*6!WDr%#8vaVm+mhEHZs-MRXDTJnd{*$Jw*JKlWivA4DidY9z9*We@* zvE@b_#krru?KTfDChrg=h5e@FWnv547VqV@&$IaX-bckfbEyxB{3qQ981iGEI<*BX zEcarZq69rV<*o7k-ZKiEVeUV=PEiv zPJlCEZNU0xAEs05#P+W@&DeMrV6w?tnD+Xb@^@=Z@bs2jgQKk%ZhW|;yJZA^3D6YVV;n2 z-|Y*j#lQJ8<9$|}ZLj=UsJEH8UlErCs}Y9g5W|@i(gnLbseG-)(uIl5_YiJm9Q!Ib zi?SsFefkh9P0Zo7NaBYNcQ_bDvT6s233`hZ$_IU$ z@|D)&BUZVE?|yu6gJ(p?!~U;QM^FD`>I)Om(Pf#5?G&)h=nlu6a>Mrbm+tg zjhRI5t_w2;DXTZe#6;QRV`v{SH+jn+6b|7HT5ezJF5GDOcV%y4w^ z@oVatsV@(+a87goLA!^`gj#aN)p1tkH?<0LjQroH<=~VHxZSFD)c4Ugr?gkWwq(ps&ZwsKgK&lOBf!wp&6B3=9}`pvc?Y zQ?fQIP_T<|Fi7=9@7wyxtM1e@03V<{64y9FKmX|&iK7XzgYsNaK&g5kY)Xbvh{gW%|lLy z4lLRg2mK&Mp332y`xtj$Q=7$GDVk{;=9c@SE3p$yG6;Vh-eqb4)32Up2$exl=c(I# zG_hLWYTYnSP>hs&`F-J&l}`rAjibByhy5Mz)RRnEx&p2o2d09@meIhR;r|z~Ffgee zIr)B3Zv05=wZ8LR1L^YBTh&ofhyF0O_25^%BK51DWG-cH!L`8srOB`2@L4HyN%yf| zDPMY0Du4!J9w9LkZ3w~7A{GV`79|D!e%0@Yz3K6jnt~iM7c%h#!7OLbU%i|%vwU>v zZU!vUXdgdC{5EVSsL9>pQ+G^8J{BLsmt;wnosyA55!Cgn1VZ8MlHYJBLy3B*u(6-4+tu=p=pAoo;(a1O`AQ}3eu z51VKa2!Y~XE;`lK>pc0Lku%7exlc^&C;#(F?;SLe3rDCjyDDPSye=MUdjDWXqOIT1 zI8>N#ewSwM(K8#*`W~yxrR6DVzZ$Sx*h@;=u9_q|$a8>#pq1J3lIixl3wF=LUZ2Ym zi=MoyG#Zxs=SQXp*XS;cA=$#~ITsS?b}_UQuP0|k^cV@+Yew}?&u&rXJP^q}d9j&w zj_yCFCYv4S&wrsk;KLGIs?WriPq~YSMaA$PKm99;Xs?*Ut`qU6-^;TZsqqmBOe`fg zuA6-1xghu?FNg3}Uq#PDrjX8X%R-7w^YbSvG*V%TkwY(_0fX`E&i;FR>PA0;J}bk5 z#;uvtTHA1ayoL3J~aR!?|D$G+A6sHT$R4riYB@#C>OGxyx|F_6&y{IaN)$3S1h;mzmMfzOD_ z8YWTo4v)8SsL2^MzsW#t*_wH~s;cj7B|T5Qm}W>vprFnny|;Xl`c-{H?y~eOujfa8 zzBLy+7ri6=fY=wuCsv}tZ?;=eMV@jH-qWX+^}J{0GeswV!iSx9c5ZBJ^f|sII%);N zPlqSMo+WeM;iZ3H`d#>n_x_#X1*0kig5sUX$67p7Vh2>Se`F{g;B21{8~I$jE}}?JUQg3OT2QWykuRsZ0qGGO^EmWee%lb+3g*}wxPrthL9k>pf`F~ zupPPgHl9e|9u(=6-LE!#`O~PRSxJPKcrDAJac$pk#JX>FMMdC%W4p!RBP6m1EM^yJ z1XjQf_I>+s+R3b9=Swa`0v5H{FJ_(_pUwTrJ~Q%CP)9OlsCU{buItX}S>{5*$3gd- zvLQzD#d|t*OU_WsJ6_*i8NGJWQ}2w1KA-!_sej65FW$;TXr66v6h8CKTfFwLQ6o)w z)6UX%dJQv@*R3vEB9&@c_Yh6xoy6)Vv7Zr@m1QZJ_*VVxP+|<>?wL|8y)~=ie%0n8 z=Iopsopy{Kcj$erhK|O>Ow}Iod-pa(YV<W#XHytvUYL?I&-1M zC2jUsZx|V0DAkSI23D@hng{cKt(OUczE5@duX_mEzTEPZ)KcCt@zZAd@x`w?-iK2H z8lx0XjxkZizpEYP&LAlt{Ic|AN%!96)UkA)8&T1Xjt2MO5!#fZMr=I#y+ck?6KQXY zt18+Uj3wXAD(xo?i_%|_Nr4k+B~6EAi^@SIChF@!W8UY_gWtp+A=LW%$q~5^m}vqy z%0*33Y@m6>^W8g-MEW$0+{%)8nJ-b;? zHTJFMr@nSvchk<+Q!o9dK9&Wv3rG3=xm*$*O}}AbeU|Z-k)OvAmDu|NbQOPR3svj# zz8WU9wo?RrzRd=wR(E?n}Fjmofsj|U5Zoo%D7wA$ck~bDyg=1W2k~5-=+TC94m5tYq{(gSFq%E;e|_vLd%-HXZ>bUc3O1&c+N{37MR$- z_o3{2E4AW+D@zfA7Z3TDKA`--?0S8W;QUMBFmImSW$^jlR8Y{pvY2*bz4okD*OESc!Q@!( z(}et~r+;TzcCd`<+Ix7 z&wrQv8u*f`tY1}|B}|>PHb^aZ^vpjTh1x9a)VoxIwyC8PyLj2s_iLT+g5lP#1jETa z+wWhaq6oB;xw`zvCF|tH+P}`GPjw?27rqbF0_1R3?Qh+NtDT=!mraf5)Oz@CYCYP! zw7eG+R@WXCDkSPZi0ru6JXjXs)$_2nWTC61ijKpX{(=9ho#$fFky9%hE5Ss9=<>UJ zZu4^|>sA6-JAchnS!=EjzFs`uGM>!sw={q3lv`&g_xi}PMa}81j~{P@Q7W#!9(Yr; zr|ekGHL1w5fW;=~t0~o&_8!Ua)=TAh7BKvEyz?TJ*PqYMwZ;O>mgR-^KfkO7M0^fd zIcat{zOUtO_5~GTnX>liwvp9u8lZ2NS?RKlzp(PM7*j}+F>jMKmw!!=hH$^$>5<0cib?LLt|LEH#p=4=y+A;_a1W{V(?a;aCWTyGo~@7yX$zoq1(p%Rw>q=ym<#xy{5nl@!1Z& z{2udrMml4T4-fdaOSo6ph{@K;Y&38#x~!HxeL-XGrG3xR%v<5K^!|@O-7o$0?~KkB zW765uW9v}0X2N)DDC+@d@&k@*qI#nvjV&>T4=TKyNN#=w)4Tou)E~(UOQTINt)3n1 ztk9`$jum`tWNIK%R^xp*>p}eaG#amka9K~*(F?6rCMMK&uIn8sCj*Z}0XJFfVZiLQ zZELPg1Fe_3_8VUXg^k${ZLeKKU8W`&D|c;CQo|i4DYM~Hlr}-JEF*JGdEUy`H9_kk zQCzJ_r3<4 z*2Lw$j?fVM@X7rBDzDdO z$5?!0aK5NT?0^eLU0+7V zd-T$6EGn~d*fe3Qteww`EibyyU>>BkPkT(#eix;b7(niYN#Ufug6X_~U);gMx`O=d zL{_ImBjw#1Lloy(=UQ8LD(2DJ-&^}XEx>L!rK+2+S!#9E3kyZwiR|LLL%Q7kxJmG9 zqnF(IbHu}XU+%9>>^yxl^uY6RUw(;|qp!+(Q&fYsq@Nm|D!ezFvvbFlWdV_5!7Gam z#D`}Rf-)!x6E{o7ZTT*~y?6QvJt114;`O`Trk3WDMa+zMvIM9O?=cN^=9{>Y^18v! z!_nVcqSTO?C6IOWSHz<&mCXlu-%J2G#O8aJWuW;VgV z^VTdRF-yxJZ@1uhL(5IeiGwCbXcS$vK8$u-bG`MBYP-=|l4L_rjjBuh?ybV?{glhp zZ)rC59kRw4c#Aa z4%}{HrQOrKHY9$D6ls|Jm7%J;K{u&#>rV!C3PN#Gie}ORwLEKbBGJGWb_ko1d_bIYDV&3z#Y2DH)?sht%o_a$m zDG$l(Tk=!UzL(8r zT5cd)c!27S;9*CvUo`QmG=zPJ+4Jif~9i{_XxOZ`r9i&%0ZlyM7R8%Md-_OJhp`x8f%s`38) zz`$sOT8V?x;nkKO9;+TyTkiLF4||AqeX8$}J*q?`c8PzK{1Fh>)~%l|Oqu3#%KPfd z!o(lRkSlL{+eEtAjXr%`dG`kYkxaSj?jA`5fbCeo28N$>FVv=n)L4!mlDw7S=v3wS zX4HS`Kp+oI(ua9ofm}AGR%L%X-@ir|6}D#1b&Rx(RBN$PC~m2EKN{|3ea-oc{gtHc z;*QT(*PM9ob-i;6BdN;?Qf~QN6tn+4^HI%vS;yoPD73U$(r5?*gi|%TtUXPW?K%-- z`;{c5r}%Y~pQn+mO2t?#u3VcsE*Ua+b>g60@-E^DN@;S-!4rPUMgD+L<>84b#Ek=s2~-qBdN$$;>w(>LP&`4sxkt(gb4_5vF7D-! zxfEnTc0~((nE!t?op(6a>mSFT5Q-#wWhDt&+1ZlJlD)~^GkXgmWQXkRy|Y(H_TGf- zmA(0Woa_2Mf1Goj>x|3se8+u%?)UrkLiL?b5kHXpM{mNH_~_PMFAlzo(Qr)HTEG)ndbzK+^dvq_>{Y!=LSA37hMm%(B)B*Dr91O)7KU;@@HhRV10}g>PEjy z%d=>j&=Dw25B`0aCnvj2mx*Zd?vY)$rQ&4ewcA=wr~g7C+k;<*@8GEX_|C805U0Ya zjm@o%vL~87Ob;X;uf)fjB)<5strt(hx$g#KV zdC|M3^F%YKmsw1CIWr>n>EMJb??pG4tKw}}w>KY-fGGn21CPU+gGZD+zcvw|3;{IqXfDoBL^LubuGPV}Ia%+V=n@ zAPLm*>8tiG<%t9&{3Obck{*SJvLnw$&y&6Yv-GiLrPGh=B@T7YC1Ux#(lWOO25omm zcKq2RWheQ(3r9K4VUg9>o~gvC;=QtzLLn@%5a*%#0AU^6rC0t^?yUj>L7O%4io}{T zmbsH{KT9i!dI^IA3z^-JS~8Bkql>=jA%XJW>5<;a)hEFWha&~3rBAf&Jow{GO1$+n zpP+71nOHoFR>@C6u*?@4QUJE2?rL998h-=n32PzNo2E~C(V9P>E3b^(Dzcus(Xz=R z#UP^~u(En|Xo{)d|9tIeRU6qEB0vP?M*Z*==cLV5EF4jqFMlvhf3@Zh=ep&*L-cTR zS+G&1WFvVYwVRX>6Mthc+6y9ciK$XrF##ZPa$i+(amt81j}Im$CMZ%%N=l$0`tU%- z{^(vS3ut74(w5v8AaWLhBTOi}cr^YDnx zS&Ma5tBh@iy&U3u=gi1+>91b~HgKcgmwxF|Le74tq4~+k6d#+-xrP5>hB~`2B_bQ$ zCn843>??h^>fP42k&P7<_deVySvvf??&GC?iRF3xC6JELk})Pa{=iLp!puiaMv>6c zgASwQ(0om7x^qO0hg36Bu`9vsmncm*Lwi?-u_chCZJ$;RNiPJ^4cne7*xRtiuHd;F zD2a=&EK%*78t}vu|Km7KaCPOyu6F%!5sktm3NpyBF+)AGu zXlNJCW@nzAoQZRMH%9@Mc9c++jr!avQvZeF7v`eXUS;`*aXI<`?}rxO-*Y5L6)vq? zeJ0y@8bnF35@N4Y{6fb;VF2(hbe1V5YA86$49ik%YyZl*0uqpArSVz4ygDSDjLW(f z?Fm#5<-X8xKMjM0)dX@oQkfZQYjs|@p zMcf{7aC|&h^T7-d{WtI1>|J=oMs_X1Jgw+%pZX%PW@YA4nZ?h)z5&Ns@6DPPNq?Lu z6%FaLs+!2R4RhF@siX+tCc8Pg(rUI%7i1MBneXs=l(KNRx~>i6_n7RZ?ftIMcEiUl z^$wlQ3QeN=ZqDX%92vGOsq&{gu!ZDnWVVXWOJ)EYk>>28-c z)LYKEG^H$iknFD83Z%Y)35;CCNyU<%VseIF@kY1vzz;Pl2~R1yP4<|q{o8V!?0%EH zeGZYQZzy_u3JTMn-8OPvnZVs5J#8sfkuh4(Xd0NFNdGDmF@m#cVn@X}> zev1zef!95Wx4!x!XZ+ja%u}a4v_OMcg3O4!Sx*@ikuKWL22IC@xCU*OF|9P7QGI$r zW`0NIcUcCta*m*Ts&v6)+v@k9IkZh8Mrog~=?lY)_x;mIrn7o-<&|G7r1;BB)v10@$Odw!j>F zUy_}r>CLxut>e>V{F}yZM3N`AkLLG;0=2vvo5ZPfTxoa#^32h~!a%F~=_` zKC?{*dPZn(AswQa)KQ>bvxv${v*us@BB61L!utVOm%0BtAK)%d&x_%>F+hg$PDkFTS@fg+H=JdVo?$tW|!lQiJyjJvu^8~$Y z#On+dl9HEdjdr^-xY_yqHRlt`+Or8kT_KGl^aykFgHa3B2qx_x{|Xv;^XpCW1K&B~Wbe?6tY;@@T#D@2%`3Jj3jptR@VOQH#Mc*3sW`Yf0 z6&j>R9t+euZ)^{j3azs`F=H8{LY4$vr^cpyn5~eK7f5b&KR*J#RoHTZwG#kcc8*&I zb6h6zf7y*XNwR9Hsn=`QP3~`dnhVDEevd41VyrAJeV2FVRnhZRL+Qfsoy#9f7mFFM zeuD}fRkv-CCVQ}$veP*op+smGpGkk}T}8()jB^bTOk=*Xxap8m;&x-wVmPAd z>0PmYLNzyGhOzVYsDQzVM`tS;>FH&}ihmfY?H|X^mWneO4K7KG*3w|K4V%ijYJFA= zRu4VHjn>Z{bi%Jx(l^sSRx8A+oSyU7oZy&Tmpm)P%InDihURpNmIX1dA8DUt5 z?&k&Ju-8VOpoKB#Bn9{V-dNWsl;O#^8nKd{2m|sAJ@;wsjlG^t?Zhmk<=w~O^7tM;tI$QRO524eYy`xX4(XNP&xP<(|E zLTqt-r6heiEKsYzSmtVksLqn@gkjmkgHQHH-ZPe2bU_9HyLitQ7wY8Dvy#92U6Qt{ z!O8JZKV@;+@7L~wJGZ|FeiHnapq> z`uoBt=H-u-+htbC1lN?^OE`J*T;j;}1zB%S$F*W&`^`CbIwp#Osk0f2-Z81qk^gJg9USFZcdvi7Fv$bJc#Y8v31G-a!IBMG!z0~ z$|ei+uweR7mNH63Xo<+dg@G>|^U;(_>oPOzLD!N-wVQowj(x*Z$hk�-_hTsJ`S~ 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 UrmB6ujT`Rw_X+ZD_KeB>7l*(7UH||9 literal 0 HcmV?d00001 From 2b7c5a57e6c2eae801c5da9ea1c0405c06089e5c Mon Sep 17 00:00:00 2001 From: Kevin Haas <30759715+krazyhaas@users.noreply.github.com> Date: Fri, 2 Aug 2019 11:40:23 -0700 Subject: [PATCH 007/365] Update 20190718-tfx-orchestration.md --- rfcs/20190718-tfx-orchestration.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rfcs/20190718-tfx-orchestration.md b/rfcs/20190718-tfx-orchestration.md index 98ecaffcc..c786664f5 100644 --- a/rfcs/20190718-tfx-orchestration.md +++ b/rfcs/20190718-tfx-orchestration.md @@ -2,8 +2,7 @@ | Status | Implemented | | :------------ | :-------------------------------------------------- | -| **Author(s)** | Kevin Haas (khaas@google.com), Zhitao Li | -: : (zhitaoli@google.com), Ruoyu Liu (ruoyu@google.com) : +| **Author(s)** | Kevin Haas (khaas@google.com), Zhitao Li (zhitaoli@google.com), Ruoyu Liu (ruoyu@google.com) | | **Sponsor** | Konstantinos Katsiapis (katsiapis@google.com) | | **Created** | 2018-12-18 | From 99d423e432a65757749a8a8acd114b2126a1e19c Mon Sep 17 00:00:00 2001 From: Kevin Haas <30759715+krazyhaas@users.noreply.github.com> Date: Fri, 2 Aug 2019 11:53:45 -0700 Subject: [PATCH 008/365] TFX design docs covering configuration, Kubeflow integration, and orchestration (#128) Publishing previous TFX design docs as informational historical record. --- rfcs/20190630-tfx-on-kfp.md | 239 ++++++++ .../tfx-kfp-argo-workflow.png | Bin 0 -> 34345 bytes .../tfx-kfp-containers.png | Bin 0 -> 174056 bytes rfcs/20190630-tfx-on-kfp/tfx-kfp-ui.png | Bin 0 -> 252982 bytes rfcs/20190630-tfx-on-kfp/tfx-on-kubeflow.png | Bin 0 -> 43329 bytes .../tfx-oss-xcom-passing.png | Bin 0 -> 55791 bytes rfcs/20190718-tfx-orchestration.md | 558 ++++++++++++++++++ .../tfx-oss-architecture.gif | Bin 0 -> 36121 bytes .../tfx-oss-component.gif | Bin 0 -> 24139 bytes .../tfx-oss-dag.png | Bin 0 -> 98238 bytes 10 files changed, 797 insertions(+) create mode 100644 rfcs/20190630-tfx-on-kfp.md create mode 100644 rfcs/20190630-tfx-on-kfp/tfx-kfp-argo-workflow.png create mode 100644 rfcs/20190630-tfx-on-kfp/tfx-kfp-containers.png create mode 100644 rfcs/20190630-tfx-on-kfp/tfx-kfp-ui.png create mode 100644 rfcs/20190630-tfx-on-kfp/tfx-on-kubeflow.png create mode 100644 rfcs/20190630-tfx-on-kfp/tfx-oss-xcom-passing.png create mode 100644 rfcs/20190718-tfx-orchestration.md create mode 100644 rfcs/20190718-tfx-orchestration/tfx-oss-architecture.gif create mode 100644 rfcs/20190718-tfx-orchestration/tfx-oss-component.gif create mode 100644 rfcs/20190718-tfx-orchestration/tfx-oss-dag.png diff --git a/rfcs/20190630-tfx-on-kfp.md b/rfcs/20190630-tfx-on-kfp.md new file mode 100644 index 000000000..6dc4bb75a --- /dev/null +++ b/rfcs/20190630-tfx-on-kfp.md @@ -0,0 +1,239 @@ +# Kubeflow Pipelines & TFX + +Status | Implemented +:------------ | :-------------------------------------------- +**Author(s)** | Ajay Gopinathan (ajaygopinathan@google.com) +**Sponsor** | Konstantinos Katsiapis (katsiapis@google.com) +**Created** | 2019-06-30 + +## Objective + +This RFC documents the design and engineering effort proposed by the +[Kubeflow Pipelines](https://github.com/kubeflow/pipelines) team to support +[TFX](https://www.tensorflow.org/tfx) with Kubeflow Pipelines (KFP). + +TFX is an open-source effort by the TensorFlow team aimed at providing users +with tools for building production grade machine-learning (ML) workflows. TFX +provides an ML pipeline authoring framework in Python which encodes +Google’s best practices for ML pipelines, including: + +* scalable and battle-tested components +* ML-focused pipeline design patterns +* strongly typed artifacts +* artifact provenance tracking through [ML Metadata](https://github.com/google/ml-metadata) + +An important value-proposition of the TFX framework is that it is agnostic to +the orchestration framework. At launch, TFX supported two orchestration engines +natively: + +* [Apache Airflow](https://airflow.apache.org/) for running locally +* [Kubeflow Pipelines](https://www.kubeflow.org/docs/pipelines/) + for running in the cloud + +This document describes how TFX pipelines are run using +Kubeflow Pipelines as its orchestration engine. It can be viewed as an extension +of the main +[TFX orchestration and configuration](https://github.com/tensorflow/community/tree/master/rfcs/20190718-tfx-orchestration.md) +design document. + +## Motivation + +### TFX on Kubeflow Requirements + +The main focus areas for running TFX on Kubeflow were: + +* **Portability:** The user-facing code in a TFX pipeline should be portable. + An early stated goal of our work was that we wanted the same pipeline to be + runnable on both Airflow and KFP with a _single-line change_ in the + pipeline construction code. +* **Scalability:** TFX on KFP should solve the use-case of large-scale + workloads, thereby showcasing the advantages of running on Google Cloud + Platform (GCP). This meant enabling the use of strongly differentiating GCP + services such as BigQuery, DataFlow and Cloud ML Engine for training and + serving in the pipeline code. + +At launch, both of these requirements were achieved. Using KFP required a +single-line change in the pipeline code, and the sample pipeline for KFP +showcased the use of GCP services for running workloads at scale. + +### Overview of TFX pipelines + +A TFX pipeline is a **logical pipeline** consisting of a series of components. +Each component is defined in terms of inputs, outputs, and execution properties. +Inputs and outputs are represented as channels of ML Metadata Artifacts. +Logically, each component consists of three parts: + +* `Driver`: Responsible for resolving input artifacts from the ML Metadata + store. Determines if the execution has been previously cached and if so, + whether the call to the `Executor` can be skipped. +* `Executor`: Executes the main logic of the component, and provides a uniform + interface around TFX libraries, as well as custom logic. +* `Publisher`: Records output artifacts produced by the `Executor`, and passes + these output artifact metadata to downstream steps. + +When running a pipeline under Airflow, the logical pipeline is converted to a +series of _Airflow operators_. Each component comprises 3 operators representing +the `Driver`, `Executor` and `Publisher`: + +![TFX message passing with Apache Airflow's XCom](20190630-tfx-on-kfp/tfx-oss-xcom-passing.png) + +At runtime, each `Driver` is responsible for resolving the metadata of input +artifacts for a given component from MLMD, and for determining if any previously +cached result of the component run can be used instead. If no cached result was +found, the `Driver` invokes the `Executor` which performs the main application +logic of the component. Upon completion, the `Publisher` writes the output +metadata to MLMD. In the case of Airflow, the `Publisher` operator also +publishes the same metadata for consumption by downstream components using +Apache Airflow’s +(XCom)[https://airflow.apache.org/concepts.html?highlight=xcom#xcoms] mechanism. + +## Design proposal + +### Kubeflow Pipelines Orchestration + +KFP uses [Argo](https://argoproj.github.io/argo/) as its orchestration engine. +Argo is a Kubernetes-specific engine for orchestrating the execution of +workflows where each individual workflow step is the execution of a +containerized application. Argo employs a YAML-based specification to construct +the workflow graph, which also specifies how each container’s application should +be invoked. + +Passing data from upstream components to downstream ones is accomplished via +[Argo output parameters](https://argoproj.github.io/docs/argo/examples/readme.html#output-parameters). +The output results of a component are written to named, container-local files +after every iteration. The contents of this file can then be passed as input +parameters to subsequent steps. In particular, the contents are passed as raw +strings which can be used as command-line arguments when invoking the downstream +step using a templating mechanism in the Argo specification. + +In order to run a TFX pipeline on KFP, the user specifies `KubeflowRunner` +instead of `AirflowDAGRunner` in the pipeline definition file. The logical +pipeline definition itself remains unchanged, thus ensuring portability of +pipelines across orchestration engines. + +In contrast to Apache Airflow, using `KubeflowRunner` and running the pipeline +file does not actually launch the pipeline. Instead, the logical pipeline is +**compiled**, resulting in a pipeline definition file in YAML, which contains +the Argo specification for a workflow that can be run on Kubernetes. The user +must then manually upload this pipeline definition file to a cluster running +Kubeflow Pipelines before it can be run. + +![TFX on Kubeflow](20190630-tfx-on-kfp/tfx-on-kubeflow.png) + +In the Kubeflow cluster, users use an interactive UI to select and launch their +pipeline. The KFP APIServer will then submit the uploaded pipeline definition to +the **Argo controller** to orchestrate the actual workflow. The Argo +specification specifies which container to execute and which command line +invocation to use during each step. + +KFP provides a [Python SDK](https://www.kubeflow.org/docs/pipelines/sdk/) for +constructing ML workflows on top of Argo. The main abstraction used is the +[ContainerOp](https://www.kubeflow.org/docs/pipelines/sdk/build-component/) +class, which can be viewed as a Python representation of a containerized +workflow step in Argo. During compilation, each TFX component in the pipeline is +transformed into a `ContainerOp`. There are three key elements of `ContainerOp` +which are used when constructing the individual steps in TFX pipelines: + +* **Image:** All TFX components are executed using the same pre-built + [Docker image](https://hub.docker.com/r/tensorflow/tfx) which contains the + TFX library and its dependencies. +* **Command-line arguments:** The command-line arguments specify how the image + should be invoked. In particular, they specify the exact TFX component and + executor that needs to run for a given step. Metadata representing input + artifacts are passed as arguments to a container step using Argo’s built-in + templating mechanism. +* **File outputs:** Argo can use the contents of container-local files + produced within each step as input data to be passed to downstream steps. + When the TFX container successfully completes the execution of an + `Executor`, it writes the ML Metadata representation (that is, Artifact and + ArtifactType protos) of output artifacts into named local files, which will + be passed along to downstream components by Argo. This can be viewed as the + **_publish_** step equivalent of using Airflow’s XCom mechanism. + +Consider the snippet of a TFX pipeline consisting of components `Transform`, +`SchemaGen` and `Trainer`. `Transform` produces transformed examples as well as +the transform graph itself, which are consumed by the `Trainer` component. +`Trainer` also consumes the schema produced by `SchemaGen` component. + +![TFX with Kubeflow containers](20190630-tfx-on-kfp/tfx-kfp-containers.png) + +In KFP, each component is now represented as the execution of the TFX container +image. Individual components have customized command-line invocations, which are +based on their input arguments and which TFX executor to execute. +The execution of each step is controlled by instances of the +[`ExecutorRunner`](https://github.com/tensorflow/tfx/blob/master/tfx/orchestration/kubeflow/executor_wrappers.py) +base class. This class is responsible for constructing the arguments required by +all TFX executors, namely: + +* `input_dict`: A dictionary of input artifacts. These are constructed at + runtime using the values of the Argo output-parameters that were passed in + as inputs. +* `output_dict`: A dictionary of output artifacts. These are pre-determined + for each derived class of `ExecutorRunner` and specialized per-component. +* `exec_properties`: A dictionary of runtime parameters, whose values may + either be primitive Python types, or serialized JSON representation of + protocol buffers. + +The arguments are constructed and used to call into the specified TFX `Executor` +(for example, `tfx.components.trainer.executor.Executor`). If execution is +successful, `ExecutorRunner` writes each output artifact (as specified in +`output_dict`) and their schema types in JSON-serialized format into a container +local file. The contents of this file are then passed as ML Metadata artifacts +for consumption by downstream steps. The KFP UI visualizes both input and output +parameters for each step. + +![TFX artifacts with the Kubeflow UI](20190630-tfx-on-kfp/tfx-kfp-ui.png) + +### ML Metadata Tracking + +In contrast to Airflow, TFX on KFP does not have drivers and publishers. +Instead, metadata is recorded passively in KFP’s APIServer, by parsing the +status of the Argo workflow custom resource definition (CRD) periodically. Each +Argo workflow CRD status contains recorded values of Argo output parameters +(that is, the contents of the named local files) upon successful completion of +the workflow step. KFP employs a custom Kubernetes controller called +PersistenceAgent, which periodically polls for the latest status of all Argo +workflow resources, and updates the state in the APIServer. + +![TFX with Kubeflow Pipelines and Argo](20190630-tfx-on-kfp/tfx-kfp-argo-workflow.png) + +The APIServer parses Argo workflows and looks for Argo output parameters that +look like serialized MLMD artifacts in specially named files (by convention, the +files are named `/output/ml_metadata/{output_name}`). These artifacts and their +types are then recorded into an MLMD instance powered by the same MySQL server +that backs KFP’s persistent data. + +## Future Work + +While TFX on KFP works, it still does not have feature parity with the Apache +Airflow version. We are exploring the following directions concurrently to close +the gap between the two orchestrators: + +* **Metadata-driven orchestration**: The current version of TFX on KFP records + artifacts in MLMD, but does so passively. This is due to the lack of drivers + and publishers in the initial implementation. Hence, lineage tracking and + caching is not currently possible. +* **Enabling arbitrary user containers with MLMD artifacts as the interface + between pipeline steps:** Currently, incorporating a custom step in a TFX + OSS pipeline requires users to implement a custom executor. Users in Cloud + frequently have an existing application, written in a non-Python language + (such as R, Java, etc), which they would like to plug into their TFX-based + pipeline. +* **Unified pipeline authoring experience:** TFX and KFP both present users + with a Python-based DSL for constructing their pipelines. The DSL constructs + look very similar from the user’s point of view, but are fundamentally very + different underneath. This has led to customer confusion. Unifying the DSL, + and presenting a single user-facing experience for constructing ML pipelines + is a goal that we’re actively exploring. +* **Pipeline-level runtime parameters:** KFP provides the possibility of + specifying pipeline-level parameters so users can run the same pipeline with + different combinations of control parameters. Since the pipeline definition + is a YAML-based file equipped with a templating mechanism, all pipeline + runtime parameters are restricted to string types. This presents a challenge + for specifying pipeline parameters at runtime that are not simple strings + (for example, the number of training steps in `Trainer` is specified in a + protocol buffer which must be serialized at runtime to be consumed by the + component). Contrast this to the Airflow scenario, where arbitrary code can + execute to yield runtime parameters since the pipeline definition and + runtime environment exist in the same execution scope. + diff --git a/rfcs/20190630-tfx-on-kfp/tfx-kfp-argo-workflow.png b/rfcs/20190630-tfx-on-kfp/tfx-kfp-argo-workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..7e258c68ff719a072d25c3d6bd9b1d794864d08c GIT binary patch literal 34345 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 Zj7wYZq=oN0Leuf^l<%m?7s;9h{tv2|!>|AV literal 0 HcmV?d00001 diff --git a/rfcs/20190630-tfx-on-kfp/tfx-kfp-ui.png b/rfcs/20190630-tfx-on-kfp/tfx-kfp-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..5cf13fd197d7a21fbf71a5e580ed8834d7c08132 GIT binary patch literal 252982 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%0ABz?~dGgfa@Z#hx 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�n|Gc;Vt@gv)Pf}(-e#>q!+ zK^nzy8qGJcxQDad2GWmuLPByeLd}bm&7|!o2ZHSMqZ^{^L}-K$!1FromN~fvVF@}a zII{dAD(UFar_4NWMd@g3Q)6_#CF`QGw&_iWW+%>kVGDJpJfsUsPQG99O!7$f1oKx$ zrOX`}lQD%enZ5-VCOVm_u(m6pDJx>{O4r8Ox1#&zidURpIl3#nA5vMlH?e-~xp`d1 zUA|AN^WJ{oMZ6ITx%s9&u|+Q{>rpIU%h<}VeD4*QD*N^k^2%g^J&lKaU2hnK2N7Vr;A;cB=OHOld`OC?GKqcx)`r zy)rrqS^?gg^ZJmuuzSZ2^g}5Vs0KK`_+Fg9L_US95XmCxHGxE1taC84b19-vbkc7R zOfd?417)6cTh*YF_33pqO^Oc{-J6tW5n*Y-8Nv@n=uhoehr0~SyhB5+RHA1QJxZ}a za-~9U@^qqZva`ivvD8D&j#0dH?wySDx3c$%e<7;F`qn=ASW+k>IWvgW5y`JYZNfBc zf8tJTHG?h?pprW&eEeOz0i3rc1CS%(Eb)8%5Tjv!w>V3SkN?JJj!-qo@7SFINY#}i ztF9E&dnk@riSDvTok^&TErbU$V*p|kN+Km=4U+ry?d!Fv@UC~`C0xoDITH13kjzm< z$zxw8BM})HHJn%%O$X5K;@0T3auioW&ge2rjfKpS2FUA7VCCO2<>{r+8Nz>poe z+`ra_h9CG_Foy24?Zbzy>DDa;XWT`bxAoNY6*h<&-!6*L@k4`Y(gS!hQ$OmP@uG_k03qph8Bm;)QCmRtsLtt-; z)KIbnAa{tgGN-rt&9mlOkdx_cZoVRT09-x}N8T$2<(t#%T!tHwtzm&>9ThwLT^a-c zys%&OhkhpdxI@Acw4kqFpY|$@poxZVMBzsx1bPqb3peKl<^c2>$5K*LXV5aC3GMH+ zLrP^3XS39l!%ToU&^VJ|{cuXu){?UEi{lJMwe>v288qSm=rmJ;nHDzFU;jMQJ@i;^!Bawing7&zkk`ym``74EYRzuW&l}5-bQWpKlQR;iDlh zp+E+)!%rh3pyBP?sV**okjU63GPQn)6+%Ds`lc#nd4bw1O@T@oh!{N9c)Ji-r?s6X zltxKgOi__tRE;jHjTl#i;_3ka*y*N)#GurcVvsodCci`FspH=#Hx6?j?ggE~tfc7nHECVh8)1?&K$MGMIJ7zYAkEbXRjeB1b9s z67Jmz6$!`#kv@JPDm)#SLVWL~7TQGlwX3bQ2T0RXu3U);KBH~!A@}nEIy*#AFX2hR zx&=6A7Qutt?~;9qSAlYw!+dC}6(ZE3sn07b{pZgY@J3dv_d-YgB=DDTgW=dyA?i%4n3ZO<#@1lW{y70 z5pf=c?61D*0jx=a%>nBJ_wweJ@jUl!08FI84O2fsIOyV2On%_hJymD2HDJycEUjp);mU1IFiK2crd1iTpR( zT7~AE#mLZ*$DQl(^4>iVywl!A3Kjm)44|~0kxH4ceCbjK*Sr{5U0gl#@A-~9Gc)@g zTo|!@tw~o(Lt#)Nu}DWJlH<;X<_^ZvSzh4_f5KgHuZg!zgow|802rc^ zbeBQl2V^s|;Yu#+)wm7Cu1fM%@>~7SkG>=f`$5cOi&6G?hJKOP+E?(;-Dl4*`8`Eb z%a6(nOa?gT8F=8-tSMBRHt?T^=LT^os#{ky5>$(ngb{e11tUp8Q~pv_ciF(PX}v@ ztP>nWI=Km4*D`lMmQl5hKEv0SwhfSe0C%!`U%1Ko2Dvjhvu&ND=%ns$%h zF#7KkK@&k`{O8!hAqKo?oKi6O_v^V?!D<7kij*RMvQ9pBAHenbA0No{DkHbVFpa+I zB$2~bz_bJyod*j|H-77m+kX6wki?Wy@ZG94^WYG&ZRIWuz9#ioy3GcmhN@L_tZ3tZ z7KUwq&z*zLtm~V(*w^=4ad*$Sy|Lpm@Cr;T^wR3tlNU-ZhS5R#B_@0%w=%~j+dnc@6%=4`CsM#B3}tBSBun> zg^9y$?Kf{82|tiV7J!}eU)L^e*gIRaQ~qF4m8RWR z9DY@zVhkwR&g4p*q}$Ga6qd*od)G5C9JwzBd@755-t|X_P8M)KrIS;Ca*PQWX|El?%h#ZSLJ3xO7iroev-e@-Lu!7sl8pq$Fs8VYDM#Kz~6x~2hK65NrPlf zn;bHesurm&z{}f^qvGFk*Vp{q8jFI98`>6xWrXmtMWU6Uoq-|n#Vtj z45R{PQ6%Byd!zQNq<@IofQH%FGtf_bemZ}K(W8nxBwX%F8kf&cm~`=zBd-nw)O^?M zIdlGcR}Cn2{69`5)iD> z-{Sb>b)fE3B%CHa>wOPJ9NWxpP;pT42<%s0*3T2~Oh8cO<>dILs_yTi#~N?<#Jz`l zDIdrRJ8p$~=2ZKs?ti=d1WL*!+7stqXJ-!G`1p9;0XO^{9YHMfP`+yE{VIWm*;`*< z<`1flpFe*tS+JnznjaJm9A%*WK+Z|`uz2}|_z5Zv&jv6G4YyZ7ncr!K*XDKZjfWg* z&*%o(@<^%-7e?V}`|6hG*7Dfu>YeO*{NcXkGY(}f1taT0he^MmS6&A~CQ41RW{Q8jf`Qn6N zdW-#%K_xPcb|w&@d8KMI-c6Dn6REf67q~KnFCB)zAlw$a;U$GN{tB&>u{C1oWUuyy zvy$Spckdd0HUxl%jq9fX7*Lm^q-Ssodtq zN18|-cQKh&`e?cljWVc*kz=Elbm1L$Bh7aMAcUYf>mD0zeca;n`XH&#JG(cnD-fTC z^x9R#g~b&Eteu-X16;4Yn{H&4!V)7NO=oz3Hj|3DIE_tXAmv(UpQJ0dvU+~!&L@gv zZ574!qqM1V%l793ksV&?L_L-A;dy4&B2Btu&5JbRu ze%gt$&z|k4rZj55$)G`tiQQp9ML&jGk(-UhMsYwmBp+nDSc7tb0OuoaxbbjR)X{%> z7^5RsJyr;lQqYZnoVN#nLEdsS-j2o1t5-gZni36$3~?Qp!g1y>b}XhZP*$0o93nOa zbN?|>DEgWF@x7qF>L-<6zYez;$`o7jOG~I`ELAK|hH`*BHhd#7_m7JslrdoK+AHjE z3YOU7)%+ls_UI`u z`43d9fOKm@LX;Pe%beU{njKVyO=EoMl3}1pB!Z`7e#<-R&|dtg@DOQr_`{G9%y+G2 zp$qnS78&g*{nwUI+_{c&-jJy3~a5>U`QmNbmd$H2_WjrZF*baa=6;^91Eufry%zaNwz}*~$Mi zFi^1ap~+<7<+#Tc)xg?=6u5cwZLoeIJ4J<`unD0#QGW4x2vOrg9+$!7epB%)xFqP< zPzp05VDzg1?ju?3?+^aU@!hd==gj-{+~;tqz}kASjVk;l!5og8V`E3VYB&yW2!YVx zvuM#D>Tbk4pna@XI8*6$AU2~%jpAgdapU%<;K%rW^Je*sLOxYNwctp}UjVjYp->-Z zPA;nngh>mzVT5)(b+6zjh6xnh1^y~n4J8pyd&ey41pisO6*fJ%tHApC4e$^6!8fDs=kszQVdW-{;jYbu%a0JgJJj*&TGJ#gTS(o$N60V7AwGSYngB}7{VdGh9d&W?`c9Pwb-Y4AM3bb^;H z6YOc0zu)R2_BbCvf>JrOrwu12QbQuNmAoxSg^FcM7P|TaDW3sMCyTeDP~kx37~-Em zF^EywJOC_ID_4?IH8g} z1?1hb?tcM8IO7nK8w$I49}W zQYNrTL1G!)G(Z~t{8@F;BH@|t-hG({jE|R?CCzloxx#29>pbMQ4-w7ll{Z+;}r|0O(vdz!A9N{@2VvhF2_E=qwPTl)RO2_pFt z=h%0Gqob0t@^16RJCTB-2cRFuf8*?esi>MMS6nsb<+#&fJgTT@Zn`1zE9$OD0=;R z#s&NOfsAla!DBK=CT?qQa`LbxFPY+BVI442%$~#Zg9dX9Fpc&|SjC`IN8C8RfI%PA zYMw5)xyc|A!;$C|4t$R}b5!CgD5?@lfX%q^sboN|X63KD0t|qFIl8Dv^JD-$?qnmEOw8vl1#75I!JQEg+yeA-92K@`p4 zDNIOUSs?hJt-rlvNFT5Rb%WFo+uHd(V0A|Dr+oIS@h&cFa*T&|9NJF2QO zJ8LWW%~n;JsP3#MgtB}sf%1HFWB8EJ}&P0>3=7I z-vgH0PjT8|;!W4!WUvg#k^93)^X9W>y%I|1RyDwj>ACp_G^$85XIa@uoD2Y)@yr>j zB?O<~(*?(!{PWdZ?g03=vo=T*BJuXC=Q+NOjw!t_KCb|E8Vu&3APapsGE1kV)ZEaWsx8ZKDJ`TwwrIcEI~DuBK#pt z54vAjN%@uI;FLL;QfhkEoX&e60OzwAsCh6ZX0V}a6MFc>36>kTEq>FMu3mcCr!FOs&7G+7#~ZUo=iJJU%`{_E!R6I<2isOh}y@}2M+}L6=Mh@H3&o_`4Kp77UVydOFISWT6G#WV|+7|+0wm~ zWWjG46X3JD6Vi^->3Qvi-36pMnES&Igd;+3dU6>InGUN7D@p!|8B}ue>EQZ%n0w(i z=#*xoW3R^ghWd9lD{F~+vU;wd1qxD&5kO-+of$;1ck$Yk_G{%h0`Zi(L15VL`a@}4 zdH73EnmhJ=n(ZwM$@$(rS_K?7(FpM2aibm3WNZEpeLdp@+0Pe1V(gb+Sl4=yE2Zwb zET}D$3J}EQ%a*|b6pYotzIY4lFJv=0CIx6zQP}J|t7xe~ERE;7mQ0Q){s4C*c<+4E znQm?m*zWj&!t;gD$177*XXHEO$OFKHoBr85DP7@nJA{|Gwgw8@@yNLh!Q~Ghs3E9u>Xb zjyd~X;QTfOYNa|UEU-S;KfdHOx@av;P4m*QPJU7*CiYajYu1cB*U&e)jFQ4(@`oY6 z^$6ys6axn57n|ElAyHf9(1i;Knlz7R$%dzNN+`i4+>HS-s@{S?XZOXaaFjmem^wYn#LO(E48G@Lfh03w!pz*DevyUEK<@Fi|O8TQ~wktnzS9ftRl)hkP_aYlshA zR4wHV1g?Ua$8jyaS!nm$gPIonq<9baSJeFg_v z(tesSq6q^nkTb1%VEA+=l*kJg$b6Z!!-OtkA?f9!a&|W@6Ji#qv#=hD7v&BvSa^bV ziZEUe>8!JRbythSh991p5E0STik-(YtqpV?vOya^IdJ8$ei%jHKeW{>kHS4b`z>ps&Ub((u&P*I(8~4X@wU8$<2aU+^6&@abr; z79paFh%Q<_Y##h1Qtzqdko!U(!?-tt(Mo}tp1oS*hhy$x=&J_1!j8$PP>~$Ias$3R z0n9n>Foax z$0C%x<7XhtDAmOKDxC>MTL46Ekt4K1-19Vg?qVyueBd$`2Cen=@X&jysYxBQM%ngc z$*kOI_N2TrOn(=xx6WnCln=+Q{*K0Z`KTi%8oomlyP@!?TgIOSEBU3BRzBV8csh2( zJVCm08eR;vAp4t~AKg~3%JyhAk{iHRVKy{9&aBS1t1Nm&5W$C!9x(KlgH*_>YFE%mXvsz zya@Jz(7SuYT>QCUidGxLksdD^fBr^&{U}!tCV}iJFi2vfKEeB64oeYW~~qbS+u>Cf*3|F zTu5=-YebN5TmEx?5&+?tE1l8hvG+iZ7}UYwa#~MH0=)cRH%O79zO5p2(mrvF{;I!! zaz|y;_#$s|nG0$D&h6W+_m5JCvA+O_6$g63N;!GSKD2 zKpIer;0u)cHUX?NUS_JCwyhH!O{%-K@&OUvbZSJX(4{OIcrk}OXK>tTyBPc0JIA2j^W&ov(ZGN&dqUWo(6smXPj7goMQx2DQff!=+(1?K(48l1;W{ zk(!!nGn7PT!5g+W>FhF>@eArqW_HwHenV3^L71NYx_{I_O^JE#6+GD>^H3S%pqCPv z!>IPfM|Muf+#tR^PZmU&!ia@CWSde za)!#RFA$Fx_ZWx(YlAk4w=3DZlux`uHxBKAmLzcLQVd5PR#ZqC&!PXn#KeHM>3ngH zExs3mYl1R&>38Z6HDjmV8!*JcJbAIi|M1Xp>(& ze-5O|5!D=O6LNx~pNcZyaslI;y;)}g&bM#fx|{LP={F87Mkbz`PNrBH3m&qwdxHON z&9hSjkz;-$5wBZhPPEK8+)6?Mm;>l0IEd8jjLb>YSaDP0zQ+1>hpQ%+u~6hWldvJ# zm%Gq7;j&OH&cXBa#`h~6-Y_}wVBWa zj#Q9Ymg`acQDi*9a~P^5JiWPnOy&ex?B?OoU;rFa*(C07pCr@h@xxLq2|D1VuN5?7 z>0KDX;WBtZo|A#>p&b)4BdqvT5dPti*hS(9rJq#U)|;T$jko=ny|J@#T<7PZ(2?}# zut3u4`sjhZk3lj%K>HbSHRj>yu*jUIv6n~v4-7M3eF+h5cr^)i5`yc@o}{L72eAb+ zYU9Tj@T7UqKs#>u;gr0#cbcTEfRH^(v@yMBw~tsw(_G;g1Bt=i=n=dP8Ch9yZ~6{! z)%2Qnp+7$sM}uk4%@Z;aVpJ^e_N<%TP&(w7F9Upi<*xVipJ<{Wab)lAYb!9h<&(qa z<3!-?q|B4eb~l1Qb~`c@7zfifbd;a!MaF7MtVQH%g_U$HAf0m=EBFtfTZj7=_|6Xe zcJsLVckjBc7%ijV2T~3epLfuk&r!X}ZWhWH;7PCUhwj(&J=sm9i11V$rYVoEetFP; zp~*es9m!v5XgF}c-pgT3x%;sKh5Ze6szrfJnVIy^d0i|Uu>GdJi6`?k8gvt7On$gr z>*{EjhNdcS@NOI`5h+=e!a}6v+V65$EbrLKl9?mRnDGI!dpdPCv~cQ`*&Ui1Ox(R) zu&dSvW*+c(lN{kx0!z}1d5y^A49UzahO|6-w5*%Px3n4{BBhJ=<&QZ6q4H0U&x_gu zTQ)7N&CG1Un^@$U@3+6$NX6My1&jaZ*RPbDpKR@!kDlN9zO4f%sE{#mk zBs#i}5>st9etqyoLNH>B31@f)SFPCR%k~r*nP<3cGK}o4gx$miPJ7V9td_o>6P7I- z7HIuGmSQVXo-NfQjd=?#>K5A6&_C_3pU)0#|hONK^fBf*UYkzGH5{<1(VpzgZ zQBhrSp{%l^$GpxhBU0jIWGf0t?&HUbhQDEh)V-562@Jm!3jNX9Ii9)#nk47*U(=U2 z&r2U4+IoNTpJci;Zim11CkatWg?Y62@w)=PL5I$rr{;lF^L~HN?Avl3>Hwl3ot9mb zyyU+OL1g)Zh?PNuPH_9v&`R8AiQ8;kgipA&EdjiK&YS=;9&QicH%o@jHMp$#vzX=p4cFSXg-JKx0uC@ssMFMJ9eMQqVBEum>kqG)&ub=U|NE&^z{+j?S&I5qX>hO*5dcb+Y-J2M__wEgqh1Hkji1*8CB9qka>&U;I6){EI z>+cM7?uKcln}wBp9zO|gvBH`u_zTesubMz12I{$PcGwKE$!K+8XVb)t4Qb9-+W1Mv z7c~T(o9OtCtfQ}ah1qWkl=223$9zPPuPTjPL zj`&6wbIK2XuA>(9Q&MSb7!(43O5DtdZ>3yEP86uJ^;O+8`N>Csv>)BLK_HVu%#=~Z zK1*F)yCj!UAj<8n!itxwkCRFuXp!d1BIfpmBE9-WHk^2wfwXV^Ii+>?9afWrnev}8 zJfl$F)bdN{iAa_eii468PW+!w#k>c;IbdqWh!hq-r7?iTC zfSnIvnL&$9fx#YM7{K?bzV#S1JL{X>3oad|eOw}#V{|OLMEIdKE>FBALUS?v4h$Ti zTm-ztdTf2LV$>)Z3#AUR#pY&aAo3nbTK0+1{qj^Q$nxN(`|V*E#6kk&g20hgn+-O^ zG@Mj&{wXnJOa`Y4#1^Ue501Qo9v2zj_3s~DUR(R-4FXC|X_|fx#&0v3)WfCchUHVG z^~0imHWOCmBJNRcQ?DLxK(P2wYI0@1rx@@VZ{I~`lP^te5&LIlGS7cq;JF(RIg z6U&pgNU>e%D6X6%&z|c-y4Jh1Hs(Cc>=-0T76)>B0mtzb_z9}TuOO96>=GH-r%b?%YXnLhet6KXD8EwejPjBSb3eL6Ylzh(Flcd>+bt4(@|!k z8HI`T>hbMuqxK6k26!R%iJTv-Ts|{73FjYQW4XMrn)*wT?7L0Z^1ju#sq=lZ6diBV z_W{bZ%GDh{c1-rHq}Yd&7qUlzPfkJa2}YVQ)dGR>!qO^R`y`j)pnK4HPewl^wUJeAxR-enHmD{uIMvwAfX{l#>f}GR z_pY7TQU@ocaVEj+dU33?QNMms&WFfHdi(AjvIWX$Rp>AypLEPSN(J_+W3V+Wzrc zvZM+PX_qcFU~UMtGbbbW{U+ET>R6g`;N|2bjmschyOt?Ggm5EGJkQ{Pi#x>?deL+b z(Nb>Qkg#bJ-dHe?;NsC|m)8;sLZl$>9-Ix(?$jehHfefYx)6}-t+f|vI`d(!Y4F38 zl!tIqx;^5(|ve4Zksi3{KEZpAU;NWH3NK65X=UrH;&>nCex=IGT`f-wV z2`S0w^;JY%I*K8lW$H-yJM`;$d3l%%0Jt)d=S-s&!xnkjhMPQCAm1REG|*fW>bW69 zhrVNe$#9C&t@2UgB!Zm0{TSAA5mlx1;zrlg`tsD#r@;Y1%#C>pN(6*&`)xO_Tep9h z+gy%aOxIBQ2DSb~WAv`Ln2G-=61TYF@ zp~tgNqNkyi!LmT6QI0U^q^VQU`UtcKVm&ar zf5Zuh_X!1ZiUUWqJ5>fg(zH0duF2wb@1M0U^dgRqCUH}^eMIizGDEuxe!wveph&Vj zDDS6&q?+>b296>o95*sDeD+wOV+zxuTHU@~5k?AQe9S1I%Th#ePPb{ zSJS6XU3g{nOVAS@Yy3QDA_Q(?iFNG_FiVbnyOWS8ew@?eWUjFM49W{Nm?)yfJSQwa zUWfA<9V$$uhv*YJZMlOC56FvwXJG5kt`TKfSvGjPu@&=6MTKMz{M5@UDz0p(LOSb@ zB?Vg)#vUEiRd$~SUL5-s7`TuJrysP$zX5&OP~c(vRVpF^E``rlMKhMWqnDgm z5GCn)o0jM!!yZus;22U5ejzp?tt0ePEdM?xnDVdX;UKokH zxfz)qk~aN_|BT6k%kqEC%0LGwHJM@Uw{3!nNTvVguTYCPD{#SKm_4bEVD|>o*wWR9 zM-V)VV+us z4l`HUA_rrHe)En*f!0FNB@31tH_lkSxp5D-NuSmxDc1ay`n{+GVQbI z^@|r2Phj#_sR$^&aV>=6nUNvn%(<;zjlY*LVlrt<9t^UG_Xq=I!LszcD#aegNdwRR z0B}geN%LZw@-nnzJZl(240A6uGmOJ&1N@75EyPI#EFok6Qy~h9a=oW)`hvHK_z8IN zfN2MCe}OJKipec!QX4U$G~1_P0!Sp``8=u5prHH+P(i4K_kH7f6XOIk1Ai6Rzl~q_ z)>KzxMB7bUyCieAnIdXvP!|wE%^m99x=HWr17j>><9R090$E!UNzZPRJ6D!F_T>u` zCra#!9EA}4zc|VF7I^s)7CdQ^T#B#HID|J_?%@}# zCUp;_(A@mXr*Xqj=CS6WNu#bK7J*6~X+BFAhj+jRdY^&IM_Tq?`}xTc`b}UvnaLQ!{XC`(nW*=kUl(Ehd`~$_i zu=GHv1$n^Dtyi~h;3x*FdE79%KbhrIIG~vH7b|Ct7600o{K^lABe)Y4sKUu_bPN1d z3ME)jG;CaJscY^io@~7VL_w14=<9<@!G zEagx`Ix5;k?6;v)BLC?oCklt zEWSn7*RO!vm)^YSLYWT~3BHX^mL7~+RZ#@vaU6ADE)#CoRFHD8mp26k9+vo48l4wB*BL+p@NZk{q|$Q#{rfRcf(=xq+rdy-+8tX*r)RsS@|k5_2N0yp z?n~(=%*h@fEXwdP6^UtyIri51W6g?>mxJ5a2OUOs*>7txcrc(|&FNR;R4!A^f#1Uz zM=;2eXk7h5oAw(24XAx^5FzJ#b~Sd90s7rr0C;{6VD=VtMF5XMbUVmL-)MUd1c-Zjaa{IabY*klppu)iCmfWj} zy)koQBIGnszGH=H*oZPp>(pJj-yybv~mb|ieNo7 zbsU$A=f%U{KLZLn=humu1E2VCs-fdQA;cv@x$fYenYBRR|Crcmr>hl3U2 zfI;bB+FTD21^&X?2@*shK66!SrzwBH&! zKyHKq((bR0KV8W)%jCuK+pfvSvBiXeJ$%rhX}pTosDuYg4J%8(e?Po$-_;cbT843) zlbx3vGdO}yk_j%yzd~1Mz@S7|>X%GaLI>g>&DGwd0tTpOX@AgTd zcvfMF@D?}};AU^Lxe+&Aa5mzpXE6Mr63Y&O9nU3Z(vFr0hgU`KxuxpQjL=@wYuHVl zI+D({{s%unLy>;t#s)W4t(ez?_29b)XSIgOBUvoS}{z=*^o!~YGm3?i-tYzN+)HHViwiRbEN}EHcven<}oFe3bS_e>;Y{>c}of3n(%^OnB)^6+a2 zJvLsY4Zrw4TynXXMGF>as;RwfAH>Y6`i95}XOU*Ux}N;ASFi3>c*V_Pl9`t`1@o?~ zT&a*%6R$-Bv}R{#E6U15lojMDEiIguau`oiDvF>3yR)4!$vSL>-V(gAX+yki|6W_O z_|a;mZ@&g0-k&i8x61FZxdoH5$MDZu3ZP))WO~WLxONy_HDnO^u#}=|@M3GViF&bM z96t>IxhAX|s8d*1f8G!6?)jHSX73fz|Jl%mgiq}WHP1EGX5<~S-rCy1T;etlc8foa z>QCO?8nc{=(P_!a*N2OG0F7WTf@x#V!ewo=R`hQ&VilA4UfsK=VM0eA^;h91Fs~iE zvhfZd-osetXmaDY|Cyh;jpkBkb_aA_yLL?0U5NRkmqd7n+xG7=N>V^@HdFLwzrYYH zo>TS=#=kNSRdo7lsn1#%D)&jamGSiX#c&%P{PvXXyLIG5t(3~b6ySut0o(SEhK59F7BqxNX z!R@uB1yNZc3cJ~ZB^G_4~g)Jni$Cl!%w zMWXr2C&_I+^x9e|)tEXhPbas<<^*W#Dd+5D0ZOAa0HJL#9)m;BS8TBLh7 zH%*@!8dhH;D!wF)#s2$MUmSi$7>WGPuaeP!8KnRBhYiyLtLS@gFI)G&KT%q^fFgc$ z$?Wr!a@AOX|NY7u=*Wj>w>}RGSmvy8&-Lj8 zjlA|rU~`Wvyf_^3S!NdT_;DK?cG&K1evjqD3^I+{`gnBt+t_C>9gOf5-G1Aub@pvr zyn9&&_o3|IKz{a&sU00*rt4!TY7a&@v6EXZGIInY-mwhxce?Hkt*x1@l9pC7ZU2bk zz{Wyi@PZfYyEt*xs-lPU*S{;yMFtk!@{DX^`zP;D))dIibgDF&2cUA2#?F3kWRa@g?Zwvlw?Kj9oB z!|oO(kinivG9yv~sWLz~9TzV22LW*G4s~IGzP@nCbJVJcu+3(}7nD&zMhq5JAkqx$ z*yhADMA=jL?AaxjnP&xGb6cqW?Ab`$xm9#;F0b24xj)GZb^`jRoBHnr2E8%pjE zpHqc`>s(R8)tbT|KJk~9RGP>hb98c=ZWz~gewkS1Ze;@l&f8Cehs5XqX_>NW?OMlF zuOBB3({G1LiF8T5F0olMYu4gEUn>g*D3^uSE*8Ewm)%`_CY;G|}*VM|BJ zW)J7zS!1o68ysc2Kr_WIW@kBASoRER zU>3Fitn2&p-OHDt+UfnMJ2`UkcD?vmrqPsXcT+LZ=RcLSl~esig~y5f^BU%y6G08}RcSYRwfZFzXe1z);+nTk7r$*@TLH*!Hw zo)IT~06p({`&YX100!L@wy217<%Nn}paD_r@bCyw&FRx$fKo$DI!io}A`m!!dmgkJ z_~)v{6ZO0OA!4&z)baMOziaTK=b6Plp74yu%G>j9pYE<4ri1Z@{NN`^?@fd9>-3~u4RpFMgK zBV%KaAePDxhGZ5H@TucB<;^;uA3Q%f?@nLM!~>1q8**cs-((E`oENvXrHhu0N@I0V z!}iAQP>k}HUP=lc6PFl|P3>~bL9%?>j!p;y^8NiAWNQC`gi(P_0kzKYf&R^iftTIe zz6zoA1nq5%fT*RL7>mDn?V&&O%enbOeB{34|MjJ5JmwS8@y6#bdf2GkE%2z@J8%!X z`r7xGcI3Dgy?F!TI_==+KG)q=+%Gr@orPM8ik)v~Zss{aE2bpPrzE#t;kC;JzBco< zhZ-@ZrN<6vYQ|{iI<de#DtGPSkv3CoZ)Wo|AKU>@{v11X}V}_ zd|E^D;f?*55zi2{N4MsEg@S0T|HzEd{?fFY-ao!xxqh9TuTK{jr~STGvi9!1F$c#4 z9>{Eu=#^QrJtp|si@V6}wT=}-PqEXBrNx;&*KrKu=ll2lr9(Y$zP2>IxNhEsiIkOJ zzkJc^GR6Y?^2FioTXzJ0{x-U8jw=Jh=p9$4*<`(gs#Am&w zkTL=WgE_o{!hzu)js%4hR*!e~WOaD^-J%%0A?94UV#T~gi`daQ7m)a0OOt;1zgz$p zcXvhc6Jae{2N{Ek&iul`!`GqFX2Qia#d?l+hTlY*cMO0Twi8AQTU2X+{hboQ>0CT>CR1a0 zh=3if^lFTj81#Jmru0nkvbnJy=?p4*placQpE|Y4*B1#R+XFZ?hXhqqsKV^6l{Gbh z_i32SF#xtmEKZApq?0t-|LU@Qb&xFRG=L%uV9!(Vkm5kR+^+!S8<>Qnh0V>)9kSmx z)dBkl{kSQVi%f&zDZ!Xy%E0$NHTx@8?u;+_6ma|1qkoV?&k5qSj?xFZXnDggP=?2k z*HXMQyLq&H()jV5Vi+qkX|$h_=L3ob(m=NG|X#yIP2~z!x`oYHjxqo={hfBRqg7%D3Wu z=T%4Cf;q~=Og1{f7r(z+%r=}eZk!}954ooWQwm90?@^nca6Y|#3+yt2G{58MiE$7p zq~hhXP{)Nh^;C}Rg@*+G#*mXECBG0UWlf2Oh6*xAU*kWhk+P1u+-}Mg>2b?(dS?Fn z!P63R2%bymSvdT_BVvEy*o9xk`v49T_ysTJ)hi1Vlbw>X(z>5ijnL6RbomtR`NS0AgOQFD??_3RB7DqD;9(Q%ffxrk1Or7WO)V=bT zaiQAvjI(Fm{`}tY%A)D{zXk7ZxHWH$J$8Ogb<*gmHY!W++YdK7aQuhtmY|#71FMTO78R^}Us>RUEt=og%lqdJ zeapkHCx2+asC+n(Jn8e{y17H(T!^~EYE_py!X#ZE)rGR&9Uf=KURytd}E{R{kZ;-{RL zy3fSNv$uEs()+hgwK$d!7-6M!VTl>nVZ@q<@M8_d8L@m}?f%noY+@~^Eia&@3Jz#x zmmbcwZvJK+qH~`Q#~qfun+V90zoAf`+j9O;dHRoDm5&;(94-3o@g_{?{+A&u_@RwW zcD$q0wV-2Z`6@;S)~s7cidp%s0Xuq*oyns=QFlM_ylPsw02N zH{W8?fcTONCGwp+H#Z$_EEOv%N}OJ`&uHr^0sGy^i4%zcSa0gC&6yahC zhK<@pQ8pa8vq%IDOYZtkWc?xWFuSm`ko)i>k5&^ZPIe_^B}SWR%wGjH>s8hd69Q