chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
Anti-pattern: Redefining the same remote function or class harms performance
|
||||
============================================================================
|
||||
|
||||
**TLDR:** Avoid redefining the same remote function or class.
|
||||
|
||||
Decorating the same function or class multiple times using the :func:`ray.remote <ray.remote>` decorator leads to slow performance in Ray.
|
||||
For each Ray remote function or class, Ray will pickle it and upload to GCS.
|
||||
Later on, the worker that runs the task or actor will download and unpickle it.
|
||||
Each decoration of the same function or class generates a new remote function or class from Ray's perspective.
|
||||
As a result, the pickle, upload, download and unpickle work will happen every time we redefine and run the remote function or class.
|
||||
|
||||
Code example
|
||||
------------
|
||||
|
||||
**Anti-pattern:**
|
||||
|
||||
.. literalinclude:: ../doc_code/anti_pattern_redefine_task_actor_loop.py
|
||||
:language: python
|
||||
:start-after: __anti_pattern_start__
|
||||
:end-before: __anti_pattern_end__
|
||||
|
||||
**Better approach:**
|
||||
|
||||
.. literalinclude:: ../doc_code/anti_pattern_redefine_task_actor_loop.py
|
||||
:language: python
|
||||
:start-after: __better_approach_start__
|
||||
:end-before: __better_approach_end__
|
||||
|
||||
We should define the same remote function or class outside of the loop instead of multiple times inside a loop so that it's pickled and uploaded only once.
|
||||
Reference in New Issue
Block a user