.. _offline-reference-docs: Offline RL ========== InputReaders ------------ The InputReader API is used by an individual :py:class:`~ray.rllib.evaluation.rollout_worker.RolloutWorker` to produce batches of experiences either from an simulator/environment or from an offline source (e.g. a file). Here, we introduce the generic API and its child classes used for reading offline data (for offline RL). For details on RLlib's :py:class:`~ray.rllib.evaluation.sampler.Sampler` implementations for collecting data from simulators/environments, see the :ref:`Sampler docs here`. .. autoclass:: ray.rllib.offline.input_reader.InputReader :members: JsonReader (ray.rllib.offline.json_reader.JsonReader) +++++++++++++++++++++++++++++++++++++++++++++++++++++ For reading data from offline files (for example when no simulator/environment is available), you can use the built-in :py:class:`~ray.rllib.offline.json_reader.JsonReader` class. You will have to change the ``input`` config value from "sampler" (default) to a JSON file name (str), a list of JSON files, or a path name (str) that contains JSON files. Alternatively, you can specify a callable that takes a :py:class:`~ray.rllib.offline.io_context.IOContext` object as only arg and returns a new :py:class:`~ray.rllib.offline.input_reader.InputReader` instance, for example: .. code-block:: python config = { "input": lambda io_ctx: MyReader([arg1], [arg2], [io_ctx]), } For details on the :py:class:`~ray.rllib.offline.io_context.IOContext` class, see below. .. autoclass:: ray.rllib.offline.json_reader.JsonReader :special-members: __init__ :members: MixedInput (ray.rllib.offline.mixed_input.MixedInput) ++++++++++++++++++++++++++++++++++++++++++++++++++++++ In order to mix different input readers with each other in different custom ratios, you can use the :py:class:`~ray.rllib.offline.mixed_input.MixedInput` reader. This reader is chosen automatically by RLlib when you provide a dict under the ``input`` config key that maps input reader specifiers to probabilities, e.g.: .. code-block:: python "input": { "sampler": 0.4, # 40% of samples will come from environment "/tmp/experiences/*.json": 0.4, # the rest from different JSON files "s3://bucket/expert.json": 0.2, } .. autoclass:: ray.rllib.offline.mixed_input.MixedInput :special-members: __init__ :members: D4RLReader (ray.rllib.offline.d4rl_reader.D4RLReader) +++++++++++++++++++++++++++++++++++++++++++++++++++++ .. autoclass:: ray.rllib.offline.d4rl_reader.D4RLReader :special-members: __init__ :members: IOContext --------- IOContext instances are used in every InputReader and OutputWriter class. They serve as simple containers for the properties: ``log_dir``, ``config``, and ``worker_index``. .. autoclass:: ray.rllib.offline.io_context.IOContext :special-members: __init__ :members: