Files
mlx/docs/build/doctrees/python/_autosummary/mlx.optimizers.Optimizer.doctree

32 lines
12 KiB
Plaintext
Raw Normal View History

2024-01-17 17:15:29 -08:00
<EFBFBD><05>.<00>sphinx.addnodes<65><73>document<6E><74><EFBFBD>)<29><>}<7D>(<28> rawsource<63><65><00><>children<65>]<5D><>docutils.nodes<65><73>section<6F><6E><EFBFBD>)<29><>}<7D>(hhh]<5D>(h <09>title<6C><65><EFBFBD>)<29><>}<7D>(h<05>mlx.optimizers.Optimizer<65>h]<5D>h <09>Text<78><74><EFBFBD><EFBFBD>mlx.optimizers.Optimizer<65><72><EFBFBD><EFBFBD><EFBFBD>}<7D>(<28>parent<6E>h<11> _document<6E>h<03>source<63>N<EFBFBD>line<6E>Nuba<62>
attributes<EFBFBD>}<7D>(<28>ids<64>]<5D><>classes<65>]<5D><>names<65>]<5D><>dupnames<65>]<5D><>backrefs<66>]<5D>u<EFBFBD>tagname<6D>hhh hhh<1D>U/Users/awnihannun/repos/mlx/docs/src/python/_autosummary/mlx.optimizers.Optimizer.rst<73>hKubh<00>index<65><78><EFBFBD>)<29><>}<7D>(hhh]<5D>h}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D><>entries<65>]<5D>(<28>single<6C><65>#Optimizer (class in mlx.optimizers)<29><>mlx.optimizers.Optimizer<65>hNt<4E>auh+h-hh hhhNhNubh<00>desc<73><63><EFBFBD>)<29><>}<7D>(hhh]<5D>(h<00>desc_signature<72><65><EFBFBD>)<29><>}<7D>(h<05> Optimizer()<29>h]<5D>(h<00>desc_annotation<6F><6E><EFBFBD>)<29><>}<7D>(h<05>2[<#text: 'class'>, <desc_sig_space: <#text: ' '>>]<5D>h]<5D>(h<16>class<73><73><EFBFBD><EFBFBD><EFBFBD>}<7D>(hhKhhhNhNubh<00>desc_sig_space<63><65><EFBFBD>)<29><>}<7D>(h<05> <20>h]<5D>h<16> <20><><EFBFBD><EFBFBD><EFBFBD>}<7D>(hhUhhhNhNubah}<7D>(h!]<5D>h#]<5D><>w<>ah%]<5D>h']<5D>h)]<5D>uh+hShhKubeh}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D><> xml:space<63><65>preserve<76>uh+hIhhEhhh<1D>Z/Users/awnihannun/repos/mlx/python/mlx/optimizers.py:docstring of mlx.optimizers.Optimizer<65>hNubh<00> desc_addname<6D><65><EFBFBD>)<29><>}<7D>(h<05>mlx.optimizers.<2E>h]<5D>h<16>mlx.optimizers.<2E><><EFBFBD><EFBFBD><EFBFBD>}<7D>(hhohhhNhNubah}<7D>(h!]<5D>h#]<5D>(<28> sig-prename<6D><65> descclassname<6D>eh%]<5D>h']<5D>h)]<5D>hjhkuh+hmhhEhhhhlhNubh<00> desc_name<6D><65><EFBFBD>)<29><>}<7D>(h<05> Optimizer<65>h]<5D>h<16> Optimizer<65><72><EFBFBD><EFBFBD><EFBFBD>}<7D>(hh<>hhhNhNubah}<7D>(h!]<5D>h#]<5D>(<28>sig-name<6D><65>descname<6D>eh%]<5D>h']<5D>h)]<5D>hjhkuh+hhhEhhhhlhNubeh}<7D>(h!]<5D>h<ah#]<5D>(<28>sig<69><67>
sig-object<63>eh%]<5D>h']<5D>h)]<5D><>module<6C><65>mlx.optimizers<72><73>class<73>h<06>fullname<6D>h<EFBFBD>uh+hChhlhKhh@hhubh<00> desc_content<6E><74><EFBFBD>)<29><>}<7D>(hhh]<5D>(h <09> paragraph<70><68><EFBFBD>)<29><>}<7D>(h<05><>The base class for all optimizers. It allows us to implement an
optimizer on a per-parameter basis and apply it to a parameter tree.<2E>h]<5D>h<16><>The base class for all optimizers. It allows us to implement an
optimizer on a per-parameter basis and apply it to a parameter tree.<2E><><EFBFBD><EFBFBD><EFBFBD>}<7D>(hh<>hhhNhNubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+h<>h<1D>Z/Users/awnihannun/repos/mlx/python/mlx/optimizers.py:docstring of mlx.optimizers.Optimizer<65>hKhh<>hhubh.)<29><>}<7D>(hhh]<5D>h}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D><>entries<65>]<5D>(h:<3A>*state (mlx.optimizers.Optimizer attribute)<29><>mlx.optimizers.Optimizer.state<74>hNt<4E>auh+h-hh<>hhhNhNubh?)<29><>}<7D>(hhh]<5D>(hD)<29><>}<7D>(h<05>state<74>h]<5D>h<EFBFBD>)<29><>}<7D>(hh<>h]<5D>h<16>state<74><65><EFBFBD><EFBFBD><EFBFBD>}<7D>(hh<>hhhNhNubah}<7D>(h!]<5D>h#]<5D>(h<>h<EFBFBD>eh%]<5D>h']<5D>h)]<5D>hjhkuh+hhh<>hhhh<>hK ubah}<7D>(h!]<5D>h<EFBFBD>ah#]<5D>(h<>h<EFBFBD>eh%]<5D>h']<5D>h)]<5D>h<EFBFBD>h<EFBFBD>h<EFBFBD>h<EFBFBD>h<EFBFBD><68>Optimizer.state<74>uh+hChh<>hKhh<>hhubh<62>)<29><>}<7D>(hhh]<5D>(h<>)<29><>}<7D>(h<05>*It holds the optimizer's state dictionary.<2E>h]<5D>h<16>,It holds the optimizers state dictionary.<2E><><EFBFBD><EFBFBD><EFBFBD>}<7D>(hh<>hhhNhNubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+h<>hh<>hKhh<>hhubh <09>
field_list<EFBFBD><EFBFBD><EFBFBD>)<29><>}<7D>(hhh]<5D>h <09>field<6C><64><EFBFBD>)<29><>}<7D>(hhh]<5D>(h <09>
field_name<EFBFBD><EFBFBD><EFBFBD>)<29><>}<7D>(h<05>type<70>h]<5D>h<16>Type<70><65><EFBFBD><EFBFBD><EFBFBD>}<7D>(hh<>hhhNhNubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+h<>hh<>hh<>hKubh <09>
field_body<EFBFBD><EFBFBD><EFBFBD>)<29><>}<7D>(h<05>OptimizerState<74>h]<5D>h<EFBFBD>)<29><>}<7D>(hj h]<5D>h<00> pending_xref<65><66><EFBFBD>)<29><>}<7D>(hhh]<5D>(h<00>pending_xref_condition<6F><6E><EFBFBD>)<29><>}<7D>(h<05>OptimizerState<74>h]<5D>h <09>emphasis<69><73><EFBFBD>)<29><>}<7D>(h<05>OptimizerState<74>h]<5D>h<16>OptimizerState<74><65><EFBFBD><EFBFBD><EFBFBD>}<7D>(hjhhhNhNubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+jhjubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D><> condition<6F><6E>resolved<65>uh+jhjubj)<29><>}<7D>(h<05>OptimizerState<74>h]<5D>h<16>OptimizerState<74><65><EFBFBD><EFBFBD><EFBFBD>}<7D>(hj3hhhNhNubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D><> condition<6F><6E>*<2A>uh+jhjubeh}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D><> refdomain<69><6E>py<70><79> refexplicit<69><74><EFBFBD>reftype<70>h<EFBFBD><68> reftarget<65><74>OptimizerState<74><65> refspecific<69><63><EFBFBD> py:module<6C>h<EFBFBD><68>py:class<73>h<EFBFBD>uh+jhj hhhNhNubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+h<>hh<>hKhj ubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+jhh<>ubeh}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+h<>hh<>hKhh<>hhubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+h<>hh<>hhhNhNubeh}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+h<>hh<>hhhh<>hK ubeh}<7D>(h!]<5D>h#]<5D>(jJ<00> attribute<74>eh%]<5D>h']<5D>h)]<5D><>domain<69>jJ<00>objtype<70>js<00>desctype<70>js<00>noindex<65><78>uh+h>hhhh<>hNhNubh <09>rubric<69><63><EFBFBD>)<29><>}<7D>(h<05>Methods<64>h]<5D>h<16>Methods<64><73><EFBFBD><EFBFBD><EFBFBD>}<7D>(hj}hhhNhNubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+j{hh<>hhhh,hK ubh<00>tabular_col_spec<65><63><EFBFBD>)<29><>}<7D>(hhh]<5D>h}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D><>spec<65><63>\X{1}{2}\X{1}{2}<7D>uh+j<>hh<>hhh<1D>f/Users/awnihannun/repos/mlx/docs/src/python/_autosummary/mlx.optimizers.Optimizer.rst:18:<autosummary><3E>hNub<75>sphinx.ext.autosummary<72><79>autosummary_table<6C><65><EFBFBD>)<29><>}<7D>(hXq
__init__()
apply_gradients(gradients, model)
Apply the gradients to the parameters and return the updated parameters.
apply_single(gradient, parameter, state)
To be extended by the children classes to implement each optimizer's update.
update(model, gradients)
Apply the gradients to the parameters of the model and update the model with the new parameters.<2E>h]<5D>h <09>table<6C><65><EFBFBD>)<29><>}<7D>(hhh]<5D>h <09>tgroup<75><70><EFBFBD>)<29><>}<7D>(hhh]<5D>(h <09>colspec<65><63><EFBFBD>)<29><>}<7D>(hhh]<5D>h}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D><>colwidth<74>K
uh+j<>hj<>ubj<62>)<29><>}<7D>(hhh]<5D>h}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D><>colwidth<74>KZuh+j<>hj<>ubh <09>tbody<64><79><EFBFBD>)<29><>}<7D>(hhh]<5D>(h <09>row<6F><77><EFBFBD>)<29><>}<7D>(hhh]<5D>(h <09>entry<72><79><EFBFBD>)<29><>}<7D>(hhh]<5D>h<EFBFBD>)<29><>}<7D>(h<05><:py:obj:`__init__ <mlx.optimizers.Optimizer.__init__>`\ \(\)<29>h]<5D>(j)<29><>}<7D>(h<05>6:py:obj:`__init__ <mlx.optimizers.Optimizer.__init__>`<60>h]<5D>h <09>literal<61><6C><EFBFBD>)<29><>}<7D>(hj<>h]<5D>h<16>__init__<5F><5F><EFBFBD><EFBFBD><EFBFBD>}<7D>(hj<>hhhNhNubah}<7D>(h!]<5D>h#]<5D>(<28>xref<65><66>py<70><79>py-obj<62>eh%]<5D>h']<5D>h)]<5D>uh+j<>hj<>ubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D><>refdoc<6F><63>,python/_autosummary/mlx.optimizers.Optimizer<65><72> refdomain<69>j<EFBFBD><00>reftype<70><65>obj<62><6A> refexplicit<69><74><EFBFBD>refwarn<72><6E>jPh<>jQh<><68> reftarget<65><74>!mlx.optimizers.Optimizer.__init__<5F>uh+jh<1D>f/Users/awnihannun/repos/mlx/docs/src/python/_autosummary/mlx.optimizers.Optimizer.rst:18:<autosummary><3E>hKhj<>ubh<16>()<29><><EFBFBD><EFBFBD><EFBFBD>}<7D>(hj<>hhhNhNubeh}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+h<>hj<>hKhj<>ubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+j<>hj<>ubj<62>)<29><>}<7D>(hhh]<5D>h<EFBFBD>)<29><>}<7D>(hhh]<5D>h}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+h<>hj ubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+j<>hj<>ubeh}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+j<>hj<>ubj<62>)<29><>}<7D>(hhh]<5D>(j<>)<29><>}<7D>(hhh]<5D>h<EFBFBD>)<29><>}<7D>(h<05>[:py:obj:`apply_gradients <mlx.optimizers.Optimizer.apply_gradients>`\ \(gradients\, model\)<29>h]<5D>(j)<29><>}<7D>(h<05>D:py:obj:`apply_gradients <mlx.optimizers.Optimizer.apply_gradients>`<60>h]<5D>j<EFBFBD>)<29><>}<7D>(hj-h]<5D>h<16>apply_gradients<74><73><EFBFBD><EFBFBD><EFBFBD>}<7D>(hj/hhhNhNubah}<7D>(h!]<5D>h#]<5D>(j<><00>py<70><79>py-obj<62>eh%]<5D>h']<5D>h)]<5D>uh+j<>hj+ubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D><>refdoc<6F>j<EFBFBD><00> refdomain<69>j9<00>reftype<70><65>obj<62><6A> refexplicit<69><74><EFBFBD>refwarn<72><6E>jPh<>jQh<>j<EFBFBD><00>(mlx.optimizers.Optimizer.apply_gradients<74>uh+jh<1D>f/Users/awnihannun/repos/mlx/docs/src/python/_autosummary/mlx.optimizers.Optimizer.rst:18:<autosummary><3E>hKhj'ubh<16>(gradients, model)<29><><EFBFBD><EFBFBD><EFBFBD>}<7D>(hj'hhhNhNubeh}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+h<>hjKhKhj$ubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+j<>hj!ubj<62>)<29><>}<7D>(hhh]<5D>h<EFBFBD>)<29><>}<7D>(h<05>HApply the gradients to the parameters and return the updated parameters.<2E>h]<5D>h<16>HApply the gradients to the parameters and return the updated parameters.<2E><><EFBFBD><EFBFBD><EFBFBD>}<7D>(hj_hhhNhNubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+h<>h<1D>f/Users/awnihannun/repos/mlx/docs/src/python/_autosummary/mlx.optimizers.Optimizer.rst:18:<autosummary><3E>hKhj\ubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+j<>hj!ubeh}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+j<>hj<>ubj<62>)<29><>}<7D>(hhh]<5D>(j<>)<29><>}<7D>(hhh]<5D>h<EFBFBD>)<29><>}<7D>(h<05>`:py:obj:`apply_single <mlx.optimizers.Optimizer.apply_single>`\ \(gradient\, parameter\, state\)<29>h]<5D>(j)<29><>}<7D>(h<05>>:py:obj:`apply_single <mlx.optimizers.Optimizer.apply_single>`<60>h]<5D>j<EFBFBD>)<29><>}<7D>(hj<>h]<5D>h<16> apply_single<6C><65><EFBFBD><EFBFBD><EFBFBD>}<7D>(hj<>hhhNhNubah}<7D>(h!]<5D>h#]<5D>(j<><00>py<70><79>py-obj<62>eh%]<5D>h']<5D>h)]<5D>uh+j<>hj<>ubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D><>refdoc<6F>j<EFBFBD><00> refdomain<69>j<EFBFBD><00>reftype<70><65>obj<62><6A> refexplicit<69><74><EFBFBD>refwarn<72><6E>jPh<>jQh<>j<EFBFBD><00>%mlx.optimizers.Optimizer.apply_single<6C>uh+jh<1D>f/Users/awnihannun/repos/mlx/docs/src/python/_autosummary/mlx.optimizers.Optimizer.rst:18:<autosummary><3E>hKhj<>ubh<16>(gradient, parameter, state)<29><><EFBFBD><EFBFBD><EFBFBD>}<7D>(hj<>hhhNhNubeh}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+h<>hj<>hKhj}ubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+j<>hjzubj<62>)<29><>}<7D>(hhh]<5D>h<EFBFBD>)<29><>}<7D>(h<05>LTo be extended by the children classes to implement each optimizer's update.<2E>h]<5D>h<16>LTo be extended by the children classes to implement each optimizer's update.<2E><><EFBFBD><EFBFBD><EFBFBD>}<7D>(hj<>hhhNhNubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+h<>h<1D>f/Users/awnihannun/repos/mlx/docs/src/python/_autosummary/mlx.optimizers.Optimizer.rst:18:<autosummary><3E>hKhj<>ubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+j<>hjzubeh}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D>uh+j<>hj<>ubj<62>)<29><>}<7D>(hhh]<5D>(j<>)<29><>}<7D>(hhh]<5D>h<EFBFBD>)<29><>}<7D>(h<05>I:py:obj:`update <mlx.optimizers.Optimizer.update>`\ \(model\, gradients\)<29>h]<5D>(j)<29><>}<7D>(h<05>2:py:obj:`update <mlx.optimizers.Optimizer.update>`<60>h]<5D>j<EFBFBD>)<29><>}<7D>(hj<>h]<5D>h<16>update<74><65><EFBFBD><EFBFBD><EFBFBD>}<7D>(hj<>hhhNhNubah}<7D>(h!]<5D>h#]<5D>(j<><00>py<70><79>py-obj<62>eh%]<5D>h']<5D>h)]<5D>uh+j<>hj<>ubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D><>refdoc<6F>j<EFBFBD><00> refdomain<69>j<EFBFBD><00>reftype<70><65>obj<62><6A> refexplicit<69><74><EFBFBD>refwarn<72><6E>jPh<>jQh<>j<EFBFBD><00>mlx.optimizers.Optimizer.update<74>uh+jh<1D>f/Users/awnihannun/repos/ml
hhhhhh,hKubah}<7D>(h!]<5D>h#]<5D>h%]<5D>h']<5D>h)]<5D><>source<63>h,uh+h<01>current_source<63>N<EFBFBD> current_line<6E>N<EFBFBD>settings<67><73>docutils.frontend<6E><64>Values<65><73><EFBFBD>)<29><>}<7D>(hN<> generator<6F>N<EFBFBD> datestamp<6D>N<EFBFBD> source_link<6E>N<EFBFBD>
source_url<EFBFBD>N<EFBFBD> toc_backlinks<6B>j<EFBFBD><00>footnote_backlinks<6B>K<01> sectnum_xform<72>K<01>strip_comments<74>N<EFBFBD>strip_elements_with_classes<65>N<EFBFBD> strip_classes<65>N<EFBFBD> report_level<65>K<02>
halt_level<EFBFBD>K<05>exit_status_level<65>K<05>debug<75>N<EFBFBD>warning_stream<61>N<EFBFBD> traceback<63><6B><EFBFBD>input_encoding<6E><67> utf-8-sig<69><67>input_encoding_error_handler<65><72>strict<63><74>output_encoding<6E><67>utf-8<><38>output_encoding_error_handler<65>j}<00>error_encoding<6E><67>utf-8<><38>error_encoding_error_handler<65><72>backslashreplace<63><65> language_code<64><65>en<65><6E>record_dependencies<65>N<EFBFBD>config<69>N<EFBFBD> id_prefix<69>h<06>auto_id_prefix<69><78>id<69><64> dump_settings<67>N<EFBFBD>dump_internals<6C>N<EFBFBD>dump_transforms<6D>N<EFBFBD>dump_pseudo_xml<6D>N<EFBFBD>expose_internals<6C>N<EFBFBD>strict_visitor<6F>N<EFBFBD>_disable_config<69>N<EFBFBD>_source<63>h,<2C> _destination<6F>N<EFBFBD> _config_files<65>]<5D><>file_insertion_enabled<65><64><EFBFBD> raw_enabled<65>K<01>line_length_limit<69>M'<27>pep_references<65>N<EFBFBD> pep_base_url<72><6C>https://peps.python.org/<2F><>pep_file_url_template<74><65>pep-%04d<34><64>rfc_references<65>N<EFBFBD> rfc_base_url<72><6C>&https://datatracker.ietf.org/doc/html/<2F><> tab_width<74>K<08>trim_footnote_reference_space<63><65><EFBFBD>syntax_highlight<68><74>long<6E><67> smart_quotes<65><73><EFBFBD>smartquotes_locales<65>]<5D><>character_level_inline_markup<75><70><EFBFBD>doctitle_xform<72><6D><EFBFBD> docinfo_xform<72>K<01>sectsubtitle_xform<72><6D><EFBFBD> image_loading<6E><67>link<6E><6B>embed_stylesheet<65><74><EFBFBD>cloak_email_addresses<65><73><EFBFBD>section_self_link<6E><6B><EFBFBD>env<6E>Nub<75>reporter<65>N<EFBFBD>indirect_targets<74>]<5D><>substitution_defs<66>}<7D><>substitution_names<65>}<7D><>refnames<65>}<7D><>refids<64>}<7D><>nameids<64>}<7D>jXjUs<> nametypes<65>}<7D>jX<00>sh!}<7D>(jUh h<hEh<45>h<EFBFBD>u<EFBFBD> footnote_refs<66>}<7D><> citation_refs<66>}<7D><> autofootnotes<65>]<5D><>autofootnote_refs<66>]<5D><>symbol_footnotes<65>]<5D><>symbol_footnote_refs<66>]<5D><> footnotes<65>]<5D><> citations<6E>]<5D><>autofootnote_start<72>K<01>symbol_footnote_start<72>K<00>
id_counter<EFBFBD><EFBFBD> collections<6E><73>Counter<65><72><EFBFBD>}<7D><><EFBFBD>R<EFBFBD><52>parse_messages<65>]<5D><>transform_messages<65>]<5D><> transformer<65>N<EFBFBD> include_log<6F>]<5D><>
decoration<EFBFBD>Nhhub.