comparison.rst 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. API Comparisons
  2. ===============
  3. Comparison between Ray Core APIs and Workflows
  4. ----------------------------------------------
  5. Ray Workflows is built on top of Ray, and offers a mostly consistent subset of its API while providing durability. This section highlights some of the differences:
  6. ``func.remote`` vs ``func.bind``
  7. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  8. With Ray tasks, ``func.remote`` will submit a remote task to run eagerly; ``func.bind`` will generate
  9. a node in a DAG, it will not be executed until the DAG is been executed.
  10. Under the context of Ray Workflow, the execution of the DAG is deferred until ``workflow.run(dag, workflow_id=...)`` or ``workflow.run_async(dag, workflow_id=...)`` is called on the DAG.
  11. Specifying the workflow id allows for resuming of the workflow by its id in case of cluster failure.
  12. Other Workflow Engines
  13. ----------------------
  14. Note: these comparisons are inspired by the `Serverless workflows comparisons repo <https://github.com/serverlessworkflow/specification/tree/main/comparisons>`__.
  15. Argo API Comparison
  16. ~~~~~~~~~~~~~~~~~~~
  17. The original source of these comparisons can be `found here <https://github.com/serverlessworkflow/specification/blob/main/comparisons/comparison-argo.md>`__.
  18. Conditionals
  19. ^^^^^^^^^^^^
  20. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/argo/conditionals_argo.yaml
  21. :caption: Argo version:
  22. :language: yaml
  23. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/argo/conditionals_workflow.py
  24. :caption: Workflow version:
  25. :language: python
  26. DAG
  27. ^^^
  28. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/argo/dag_argo.yaml
  29. :caption: Argo version:
  30. :language: yaml
  31. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/argo/dag_workflow.py
  32. :caption: Workflow version:
  33. :language: python
  34. Multi-step Workflow
  35. ^^^^^^^^^^^^^^^^^^^
  36. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/argo/multi_step_argo.yaml
  37. :caption: Argo version:
  38. :language: yaml
  39. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/argo/multi_step_workflow.py
  40. :caption: Workflow version:
  41. :language: python
  42. Exit Handler
  43. ^^^^^^^^^^^^
  44. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/argo/exit_handler_argo.yaml
  45. :caption: Argo version:
  46. :language: yaml
  47. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/argo/exit_handler_workflow.py
  48. :caption: Workflow version:
  49. :language: python
  50. Loops
  51. ^^^^^
  52. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/argo/loops_argo.yaml
  53. :caption: Argo version:
  54. :language: yaml
  55. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/argo/loops_workflow.py
  56. :caption: Workflow version:
  57. :language: python
  58. Recursion
  59. ^^^^^^^^^
  60. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/argo/recursion_argo.yaml
  61. :caption: Argo version:
  62. :language: yaml
  63. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/argo/recursion_workflow.py
  64. :caption: Workflow version:
  65. :language: python
  66. Retries
  67. ^^^^^^^
  68. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/argo/retry_argo.yaml
  69. :caption: Argo version:
  70. :language: yaml
  71. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/argo/retry_workflow.py
  72. :caption: Workflow version:
  73. :language: python
  74. Metaflow API Comparison
  75. ~~~~~~~~~~~~~~~~~~~~~~~
  76. The original source of these comparisons can be `found here <https://docs.metaflow.org/metaflow/basics#foreach>`__.
  77. Foreach
  78. ^^^^^^^
  79. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/metaflow/foreach_metaflow.py.txt
  80. :caption: Metaflow version:
  81. :language: python
  82. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/metaflow/foreach_workflow.py
  83. :caption: Workflow version:
  84. :language: python
  85. Cadence API Comparison
  86. ~~~~~~~~~~~~~~~~~~~~~~
  87. The original source of these comparisons can be `found here <https://github.com/serverlessworkflow/specification/blob/main/comparisons/comparison-cadence.md>`__.
  88. Sub Workflows
  89. ^^^^^^^^^^^^^
  90. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/cadence/sub_workflow_cadence.java
  91. :caption: Cadence version:
  92. :language: java
  93. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/cadence/sub_workflow_workflow.py
  94. :caption: Workflow version:
  95. :language: python
  96. File Processing
  97. ^^^^^^^^^^^^^^^
  98. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/cadence/file_processing_cadence.java
  99. :caption: Cadence version:
  100. :language: java
  101. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/cadence/file_processing_workflow.py
  102. :caption: Workflow version:
  103. :language: python
  104. Trip Booking
  105. ^^^^^^^^^^^^
  106. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/cadence/trip_booking_cadence.java
  107. :caption: Cadence version:
  108. :language: java
  109. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/cadence/trip_booking_workflow.py
  110. :caption: Workflow version:
  111. :language: python
  112. Google Cloud Workflows API Comparison
  113. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  114. The original source of these comparisons can be `found here <https://github.com/serverlessworkflow/specification/blob/main/comparisons/comparison-google-cloud-workflows.md>`__.
  115. Data Conditional
  116. ^^^^^^^^^^^^^^^^
  117. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/google_cloud_workflows/data_cond_google.yaml
  118. :caption: Google Cloud version:
  119. :language: yaml
  120. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/google_cloud_workflows/data_cond_workflow.py
  121. :caption: Workflow version:
  122. :language: python
  123. Concat Array
  124. ^^^^^^^^^^^^
  125. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/google_cloud_workflows/concat_array_google.yaml
  126. :caption: Google Cloud version:
  127. :language: yaml
  128. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/google_cloud_workflows/concat_array_workflow.py
  129. :caption: Workflow version:
  130. :language: python
  131. Sub Workflows
  132. ^^^^^^^^^^^^^
  133. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/google_cloud_workflows/sub_workflows_google.yaml
  134. :caption: Google Cloud version:
  135. :language: yaml
  136. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/google_cloud_workflows/sub_workflows_workflow.py
  137. :caption: Workflow version:
  138. :language: python
  139. Prefect API Comparison
  140. ~~~~~~~~~~~~~~~~~~~~~~
  141. The original source of these comparisons can be `found here <https://docs.prefect.io/core/advanced_tutorials/task-looping.html>`__.
  142. Looping
  143. ^^^^^^^
  144. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/prefect/compute_fib_prefect.py.txt
  145. :caption: Prefect version:
  146. :language: python
  147. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/prefect/compute_fib_workflow.py
  148. :caption: Workflow version:
  149. :language: python
  150. AirFlow API Comparison
  151. ~~~~~~~~~~~~~~~~~~~~~~
  152. The original source of these comparisons can be `found here <https://airflow.apache.org/docs/apache-airflow/stable/tutorial_taskflow_api.html>`__.
  153. ETL Workflow
  154. ^^^^^^^^^^^^
  155. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/airflow/etl_airflow.py.txt
  156. :caption: AirFlow version:
  157. :language: python
  158. .. literalinclude:: ../../../python/ray/workflow/examples/comparisons/airflow/etl_workflow.py
  159. :caption: Workflow version:
  160. :language: python