Moving to TF 2.X Scalable Pythonic Fitting

Moving to TF 2.X Scalable Pythonic Fitting

Moving to TF 2.x scalable pythonic fitting PyHEP 2020 Jonas Eschle [email protected] What is zfit ● Model fitting library in pure Python with well defined workflow ● Strong custom model building capability 16 Jul 2020 PyHEP 2020 - zfit: TensorFlow 2.0 for HPC 2 What is zfit: ecosystem ● Strongly embedded into the ecosystem (Scikit-HEP) ● Limited scope: – model fitting – sampling 16 Jul 2020 PyHEP 2020 - zfit: TensorFlow 2.0 for HPC 3 What is zfit: backend ● Uses TensorFlow as the computational backend 16 Jul 2020 PyHEP 2020 - zfit: TensorFlow 2.0 for HPC 4 Changes in zfit ● New shapes: – ARGUS, – Cauchy – KDE ● Improved fitting stability and toys ● Arbitrary spaces: – Can be combined – Arbitrary function, test and filter if inside 16 Jul 2020 PyHEP 2020 - zfit: TensorFlow 2.0 for HPC 5 Main improvement ● TensorFlow 2.0 ● numerical gradients ● Smart JIT compilation cache full possible integration into Python & Numpy 16 Jul 2020 PyHEP 2020 - zfit: TensorFlow 2.0 for HPC 6 TensorFlow 1.x Declarative: define computations, execute when needed 5 3 7 2 + + Product is a symbolic Tensor, we have to "execute" it! Nodes x Edges for … in …: (Tensors) rnd = tf.random(…) adds new op to graph every time (operations) rnd_np = run(rnd) ... 16 Jul 2020 PyHEP 2020 - zfit: TensorFlow 2.0 for HPC 7 TensorFlow 1.x Declarative: define computations, execute when needed 5 3 7 2 + + Product is a symbolic Tensor, we have to "execute" it! Nodes x Edges for … in …: (Tensors) rnd = tf.random(…) adds new op to graph every time (operations) rnd_np = run(rnd) ... 16 Jul 2020 PyHEP 2020 - zfit: TensorFlow 2.0 for HPC 8 TensorFlow 1.x Declarative: define computations, execute when needed 5 3 7 2 + + Product is a symbolic Tensor, we have to "execute" it! Nodes x Edges rnd = tf.random(…) (operations) (Tensors) for … in …: rnd_np = run(rnd) ... 16 Jul 2020 PyHEP 2020 - zfit: TensorFlow 2.0 for HPC 9 TensorFlow 1.x Declarative: define computations, execute when needed 5 3 7 2 + + Product is a symbolic Tensor, we have to "execute" it! Nodes x Edges rnd = tf.random(…) But inputs? → placeholders! (operations) (Tensors) for … in …: rnd_np = run(rnd) ... 16 Jul 2020 PyHEP 2020 - zfit: TensorFlow 2.0 for HPC 10 TensorFlow 1.x Declarative: define computations, execute when needed 5 3 7 2 + + Product is a symbolic Tensor, we have to "execute" it! Nodes x Edges rnd = tf.random(…) But inputs? → placeholders!* (operations) (Tensors) for … in …: rnd_np = run(rnd) *no, actually one of the other ... four methods! 16 Jul 2020 PyHEP 2020 - zfit: TensorFlow 2.0 for HPC 11 TensorFlow 1.x Declarative: define computations, execute when needed 5 3 7 2 + + Product is a symbolic Tensor, we have to "execute" it! Nodes x Edges rnd = tf.random(…) Did I mention Sessions? (operations) (Tensors) for … in …: rnd_np = run(rnd) ... 16 Jul 2020 PyHEP 2020 - zfit: TensorFlow 2.0 for HPC 12 TensorFlow 1.x Declarative: define computations, execute when needed 5 3 7 2 + + Product is a symbolic Tensor, we have to "execute" it! Nodes x Edges Summarized: (operations) (Tensors) object, that when executed, takes input, performs calculations and returns output => a function 16 Jul 2020 PyHEP 2020 - zfit: TensorFlow 2.0 for HPC 13 "After years of abusive, around-the- corner, graph-thinking, we forgot how easy things can be…" Anonymous why TF2.0 feels wrong but is actually right TensorFlow 2 16 Jul 2020 PyHEP 2020 - zfit: TensorFlow 2.0 for HPC 15 TensorFlow 2 We will solely look at the low level functionality 16 Jul 2020 PyHEP 2020 - zfit: TensorFlow 2.0 for HPC 17 TensorFlow 2 TL;DR: like Numpy with a JIT like Numba ● By default, behaves like Numpy (but has GPU + CPU kernels) 16 Jul 2020 PyHEP 2020 - zfit: TensorFlow 2.0 for HPC 18 Eager mode ● Quite young (not even a year) ● Numpy-like speed or more for larger data ● Experimental: dispatch calls asynchronously – Continue execution until result is needed (like PyTorch) ● Allows to replace backend easily (but when it's clearly needed, this does not come for free) 16 Jul 2020 PyHEP 2020 - zfit: TensorFlow 2.0 for HPC 19 TensorFlow 2 TL;DR: like Numpy with a JIT (did someone say Numba?) ● By default, behaves like Numpy (but has GPU + CPU kernels) ● TensorFlow operations can be compiled together ● Python is only static and doesn't appear in the computation (autograph later) 16 Jul 2020 PyHEP 2020 - zfit: TensorFlow 2.0 for HPC 20 tf.function JIT ● Calling the function: – "Replaces input by symbolic Tensor" – Trace function (record tf.* calls), build graph, optimize – Cache graph remembering the input ● Signature: dtype, (shape); for python objects equality ● Numpy + Numba without Python compilation => "no black magic" 16 Jul 2020 PyHEP 2020 - zfit: TensorFlow 2.0 for HPC 22 Graph ● Knowledge about dtype, shape, dependencies ● Grappler: graph optimizer (constant folding, common subexpression elimination, arithmetic simplification,…) ● Parallelization ● Stitches together TF calls 16 Jul 2020 PyHEP 2020 - zfit: TensorFlow 2.0 for HPC 23 TensorFlow and Numba ● TF self-contained ecosystem: can use full TF syntax, no Python for dynamic code (but full Python for static) ● TF well designed API, optimized for graphs ● TF lacks good support of converting Python code ● Data processing, conditionals → Numpy & Numba ● Heavy, well defined computing → TensorFlow 16 Jul 2020 PyHEP 2020 - zfit: TensorFlow 2.0 for HPC 24 zfit benefits ● Thanks to graph supports C++ like speed ● Eager allows to have full Python dynamics => the best from two worlds in one ● Example: ~50k events simultaneous fit, background and signal Library probfit zfit eager RooFit zfit graph Time (sec) ~ 24 ~ 10 ~ 0.5 ~1.5 (+0.5) 16 Jul 2020 PyHEP 2020 - zfit: TensorFlow 2.0 for HPC 25 … then why TF? ● No Python compilation and only TF tracing quite powerful ● Very consistent ecosystem! ● Takes care of many low level optimizations and parallelization and a lot of ongoing work there! ● Very well supported in industry 16 Jul 2020 PyHEP 2020 - zfit: TensorFlow 2.0 for HPC 26.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    24 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us