From fc390af2ea9766e054293460b4d4b62c8f3aa8e6 Mon Sep 17 00:00:00 2001 From: yuchang Date: Mon, 28 Apr 2025 17:46:00 +0800 Subject: [PATCH 01/10] add example_async_mode.md --- .../source/tutorial/example_async_mode.md | 38 ++++ examples/async_gsm8k/README.md | 13 ++ examples/async_gsm8k/explorer.yaml | 60 ++++++ examples/async_gsm8k/run.sh | 7 + examples/async_gsm8k/trainer.yaml | 60 ++++++ examples/async_gsm8k/verl_config.yaml | 186 ++++++++++++++++++ examples/grpo_gsm8k/gsm8k.yaml | 2 +- 7 files changed, 365 insertions(+), 1 deletion(-) create mode 100644 docs/sphinx_doc/source/tutorial/example_async_mode.md create mode 100644 examples/async_gsm8k/README.md create mode 100644 examples/async_gsm8k/explorer.yaml create mode 100644 examples/async_gsm8k/run.sh create mode 100644 examples/async_gsm8k/trainer.yaml create mode 100644 examples/async_gsm8k/verl_config.yaml diff --git a/docs/sphinx_doc/source/tutorial/example_async_mode.md b/docs/sphinx_doc/source/tutorial/example_async_mode.md new file mode 100644 index 0000000000..27c5174b22 --- /dev/null +++ b/docs/sphinx_doc/source/tutorial/example_async_mode.md @@ -0,0 +1,38 @@ +# A quick example for asynchronous mode + +This example shows how to run RFT in asynchronous mode with the Qwen-2.5-1.5B-Instruct model and GSM8K dataset. + +Trinity-RFT supports an asynchronous mode by running the trainer and explorer in separate processes. + +For this purpose, we prepare two main config files: `trainer.yaml` and `explorer.yaml`. +The main difference between them is that in `trainer.yaml` we set `mode=train`, while in `explorer.yaml` we set `mode=explore`. +In addition, we need to configure the following parameters in both files. +The synchronization frequency is defined as every `sync_iteration_interval * batch_size` tasks. + +```yaml +data: + batch_size: +# The same checkpoint path +model: + checkpoint_path: /PATH/TO/CHECKPOINT + +# The same data_base path +buffer: + train_dataset: + name: gsm8k_buffer + storage_type: queue + path: 'sqlite:////gsm8k.db' + +synchronizer: + sync_method: 'offline' + sync_iteration_interval: +``` + +You may run this examples by running the following command: + +```bash +bash examples/async_gsm8k/run.sh +``` + +In the following, we show the results of asynchronous mode in the following. +# TODO diff --git a/examples/async_gsm8k/README.md b/examples/async_gsm8k/README.md new file mode 100644 index 0000000000..c73aeeaf59 --- /dev/null +++ b/examples/async_gsm8k/README.md @@ -0,0 +1,13 @@ +# Asynchronous mode on GSM8K dataset + +This example shows the usage of GRPO on the GSM8K dataset in an asynchronous mode. + +For more detailed information, please refer to the [documentation](../../docs/sphinx_doc/source/tutorial/example_async_mode.md). + +The config files are located in [`trainer.yaml`](trainer.yaml), [`explorer.yaml`](explorer.yaml), and [`verl_config.yaml`](verl_config.yaml). + +You can run this example by the following command: + +```bash +bash examples/async_gsm8k/run.sh +``` diff --git a/examples/async_gsm8k/explorer.yaml b/examples/async_gsm8k/explorer.yaml new file mode 100644 index 0000000000..e2a5cf8aa7 --- /dev/null +++ b/examples/async_gsm8k/explorer.yaml @@ -0,0 +1,60 @@ +mode: explore +data: + # basic info + dataset_path: /PATH/TO/DATASET/ + subset_name: '' + train_split: 'train' + eval_split: 'test' + format_config: + prompt_key: 'question' + response_key: 'answer' + # downstream loading related + total_epochs: 20 + batch_size: 96 + default_workflow_type: 'math_workflow' +model: + model_path: /PATH/TO/MODEL/ + max_prompt_tokens: 256 + max_response_tokens: 1024 + checkpoint_path: 'checkpoints/qwen2.5-1.5B-gsm8k' +cluster: + node_num: 1 + gpu_per_node: 8 +buffer: + max_retry_times: 3 + max_retry_interval: 1 + train_dataset: + name: gsm8k_buffer + storage_type: queue + path: 'sqlite:////gsm8k.db' +explorer: + engine_type: vllm_async + engine_num: 2 + runner_num: 32 + tensor_parallel_size: 1 + enable_prefix_caching: false + enforce_eager: true + dtype: bfloat16 + temperature: 1.0 + top_p: 1.0 + top_k: -1 + seed: 42 + logprobs: 0 + repeat_times: 8 + use_ray: false + backend: 'nccl' + max_pending_requests: 32 + max_waiting_steps: 4 +synchronizer: + sync_method: 'offline' + sync_iteration_interval: 10 +trainer: + trainer_type: 'verl' + algorithm_type: ppo + trainer_config_path: examples/async_gsm8k/verl_config.yaml + sft_warmup_iteration: 0 # Set to integer to enable sft warmup + eval_interval: 10 +monitor: + cache_root_dir: "" + project: "Trinity-RFT-gsm8k" + name: "async-qwen2.5-1.5B-gsm8k" diff --git a/examples/async_gsm8k/run.sh b/examples/async_gsm8k/run.sh new file mode 100644 index 0000000000..170999e5dc --- /dev/null +++ b/examples/async_gsm8k/run.sh @@ -0,0 +1,7 @@ +# trinity run --config examples/async_gsm8k/explorer.yaml 2>&1 | tee explorer.log & +# sleep 30 +# trinity run --config examples/async_gsm8k/trainer.yaml 2>&1 | tee trainer.log & + +python -m trinity.cli.launcher run --config examples/async_gsm8k/explorer.yaml 2>&1 | tee explorer.log & +sleep 30 +python -m trinity.cli.launcher run --config examples/async_gsm8k/trainer.yaml 2>&1 | tee trainer.log & diff --git a/examples/async_gsm8k/trainer.yaml b/examples/async_gsm8k/trainer.yaml new file mode 100644 index 0000000000..0943846017 --- /dev/null +++ b/examples/async_gsm8k/trainer.yaml @@ -0,0 +1,60 @@ +mode: train +data: + # basic info + dataset_path: /PATH/TO/DATASET/ + subset_name: '' + train_split: 'train' + eval_split: 'test' + format_config: + prompt_key: 'question' + response_key: 'answer' + # downstream loading related + total_epochs: 20 + batch_size: 96 + default_workflow_type: 'math_workflow' +model: + model_path: /PATH/TO/MODEL/ + max_prompt_tokens: 256 + max_response_tokens: 1024 + checkpoint_path: "" +cluster: + node_num: 1 + gpu_per_node: 8 +buffer: + max_retry_times: 3 + max_retry_interval: 1 + train_dataset: + name: gsm8k_buffer + storage_type: queue + path: 'sqlite:////gsm8k.db' +explorer: + engine_type: vllm_async + engine_num: 2 + runner_num: 32 + tensor_parallel_size: 1 + enable_prefix_caching: false + enforce_eager: true + dtype: bfloat16 + temperature: 1.0 + top_p: 1.0 + top_k: -1 + seed: 42 + logprobs: 0 + repeat_times: 8 + use_ray: false + backend: 'nccl' + max_pending_requests: 32 + max_waiting_steps: 4 +synchronizer: + sync_method: 'offline' + sync_iteration_interval: 10 +trainer: + trainer_type: 'verl' + algorithm_type: ppo + trainer_config_path: examples/async_gsm8k/verl_config.yaml + sft_warmup_iteration: 0 # Set to integer to enable sft warmup + eval_interval: 10 +monitor: + cache_root_dir: "" + project: "Trinity-RFT-gsm8k" + name: "async-qwen2.5-1.5B-gsm8k" diff --git a/examples/async_gsm8k/verl_config.yaml b/examples/async_gsm8k/verl_config.yaml new file mode 100644 index 0000000000..216bcdba44 --- /dev/null +++ b/examples/async_gsm8k/verl_config.yaml @@ -0,0 +1,186 @@ +data: + tokenizer: null + train_files: placeholder + val_files: placeholder + prompt_key: prompt + max_prompt_length: 256 + max_response_length: 1024 + train_batch_size: 256 + val_batch_size: null + return_raw_input_ids: False # This should be set to true when the tokenizer between policy and rm differs + return_raw_chat: False + shuffle: True + filter_overlong_prompts: False # for large-scale dataset, filtering overlong prompts could be timeconsuming. You should disable this and set `truncation='left' + truncation: error + image_key: images + +actor_rollout_ref: + hybrid_engine: True + model: + path: /PATH/TO/MODEL/ + external_lib: null + override_config: { } + enable_gradient_checkpointing: True + use_remove_padding: True # False + actor: + strategy: fsdp # This is for backward-compatibility + ppo_mini_batch_size: 128 + # ppo_micro_batch_size: 8 # will be deprecated, use ppo_micro_batch_size_per_gpu + ppo_micro_batch_size_per_gpu: 4 + use_dynamic_bsz: True # False + ppo_max_token_len_per_gpu: 16384 # n * ${data.max_prompt_length} + ${data.max_response_length} + grad_clip: 1.0 + clip_ratio: 0.2 + entropy_coeff: 0.001 + use_kl_loss: True # True for GRPO + kl_loss_coef: 0.001 # for grpo + kl_loss_type: low_var_kl # for grpo + ppo_epochs: 1 + shuffle: False + ulysses_sequence_parallel_size: 1 # sp size + optim: + lr: 1e-5 + lr_warmup_steps_ratio: 0. # the total steps will be injected during runtime + # min_lr_ratio: null # only useful for warmup with cosine + warmup_style: constant # select from constant/cosine + total_training_steps: -1 # must be override by program + fsdp_config: + wrap_policy: + # transformer_layer_cls_to_wrap: None + min_num_params: 0 + param_offload: False + optimizer_offload: False + fsdp_size: -1 + # --- below: opmd --- + alg_type: ppo # ppo / opmd / pairwise_opmd + tau: 0.000 # strength of regularization w.r.t. old / ref policy + opmd_baseline: mean # mean / logavgexp, applicable to opmd + use_uid: False # True / False, applicable to pairwise_opmd + ref: + fsdp_config: + param_offload: False + wrap_policy: + # transformer_layer_cls_to_wrap: None + min_num_params: 0 + # log_prob_micro_batch_size: 4 # will be deprecated, use log_prob_micro_batch_size_per_gpu + log_prob_micro_batch_size_per_gpu: 16 + log_prob_use_dynamic_bsz: ${actor_rollout_ref.actor.use_dynamic_bsz} + log_prob_max_token_len_per_gpu: ${actor_rollout_ref.actor.ppo_max_token_len_per_gpu} + ulysses_sequence_parallel_size: ${actor_rollout_ref.actor.ulysses_sequence_parallel_size} # sp size + rollout: + name: vllm + temperature: 1.0 + top_k: -1 # 0 for hf rollout, -1 for vllm rollout + top_p: 1 + use_fire_sampling: False # https://arxiv.org/abs/2410.21236 + prompt_length: ${data.max_prompt_length} # not use for opensource + response_length: ${data.max_response_length} + # for vllm rollout + dtype: bfloat16 # should align with FSDP + gpu_memory_utilization: 0.4 + ignore_eos: False + enforce_eager: True + free_cache_engine: True + load_format: dummy_dtensor + tensor_model_parallel_size: 2 + max_num_batched_tokens: 8192 + max_model_len: null + max_num_seqs: 1024 + # log_prob_micro_batch_size: 8 # will be deprecated, use log_prob_micro_batch_size_per_gpu + log_prob_micro_batch_size_per_gpu: 4 + log_prob_use_dynamic_bsz: ${actor_rollout_ref.actor.use_dynamic_bsz} + log_prob_max_token_len_per_gpu: ${actor_rollout_ref.actor.ppo_max_token_len_per_gpu} + disable_log_stats: True + enable_chunked_prefill: True # could get higher throughput + # for hf rollout + do_sample: True + # number of responses (i.e. num sample times) + n: 8 # > 1 for grpo + +critic: + strategy: fsdp + optim: + lr: 1e-5 + lr_warmup_steps_ratio: 0. # the total steps will be injected during runtime + # min_lr_ratio: null # only useful for warmup with cosine + warmup_style: constant # select from constant/cosine + total_training_steps: -1 # must be override by program + model: + path: /PATH/TO/MODEL/ + tokenizer_path: ${actor_rollout_ref.model.path} + override_config: { } + external_lib: ${actor_rollout_ref.model.external_lib} + enable_gradient_checkpointing: True + use_remove_padding: False + fsdp_config: + param_offload: False + optimizer_offload: False + wrap_policy: + # transformer_layer_cls_to_wrap: None + min_num_params: 0 + fsdp_size: -1 + ppo_mini_batch_size: ${actor_rollout_ref.actor.ppo_mini_batch_size} + # ppo_micro_batch_size: 8 # will be deprecated, use ppo_micro_batch_size_per_gpu + ppo_micro_batch_size_per_gpu: 64 + forward_micro_batch_size_per_gpu: ${critic.ppo_micro_batch_size_per_gpu} + use_dynamic_bsz: ${actor_rollout_ref.actor.use_dynamic_bsz} + ppo_max_token_len_per_gpu: 32768 # (${actor_rollout_ref.actor.ppo_max_token_len_per_gpu}) * 2 + forward_max_token_len_per_gpu: ${critic.ppo_max_token_len_per_gpu} + ulysses_sequence_parallel_size: 1 # sp size + ppo_epochs: ${actor_rollout_ref.actor.ppo_epochs} + shuffle: ${actor_rollout_ref.actor.shuffle} + grad_clip: 1.0 + cliprange_value: 0.5 + +reward_model: + enable: False + strategy: fsdp + model: + input_tokenizer: ${actor_rollout_ref.model.path} # set this to null if the chat template is identical + path: ~/models/FsfairX-LLaMA3-RM-v0.1 + external_lib: ${actor_rollout_ref.model.external_lib} + use_remove_padding: False + fsdp_config: + min_num_params: 0 + param_offload: False + fsdp_size: -1 + # micro_batch_size: null # will be deprecated, use micro_batch_size_per_gpu + # micro_batch_size_per_gpu: 2 # set a number + # max_length: null + ulysses_sequence_parallel_size: 1 # sp size + use_dynamic_bsz: ${critic.use_dynamic_bsz} + forward_max_token_len_per_gpu: ${critic.forward_max_token_len_per_gpu} + +custom_reward_function: + path: null + name: compute_score + +algorithm: + gamma: 1.0 + lam: 1.0 + adv_estimator: grpo + kl_penalty: kl # how to estimate kl divergence + kl_ctrl: + type: fixed + kl_coef: 0.001 + +trainer: + balance_batch: True + total_epochs: 10 + # total_training_steps: null + project_name: rft_example_gsm8k + experiment_name: cys-qwen2_1.5b_rollout8_grpo_kl0.001_lr1e-5 + logger: [ 'console','wandb' ] + val_generations_to_log_to_wandb: 0 + nnodes: 1 + n_gpus_per_node: 2 + save_freq: 100 + # auto: find the last ckpt to resume. If can't find, start from scratch + resume_mode: auto # or auto or resume_path if + test_freq: 5 + critic_warmup: 0 + default_hdfs_dir: null + remove_previous_ckpt_in_save: False + del_local_ckpt_after_load: False + default_local_dir: checkpoints/${trainer.project_name}/${trainer.experiment_name} + val_before_train: False diff --git a/examples/grpo_gsm8k/gsm8k.yaml b/examples/grpo_gsm8k/gsm8k.yaml index 63850d5d24..2f67fa091c 100644 --- a/examples/grpo_gsm8k/gsm8k.yaml +++ b/examples/grpo_gsm8k/gsm8k.yaml @@ -35,7 +35,7 @@ buffer: train_dataset: name: gsm8k_buffer storage_type: queue - path: 'sqlite:///gsm8k.db' + path: 'sqlite:////gsm8k.db' # sft_warmup_dataset: # Uncomment these to enable sft warmup # name: warmup_data # storage_type: file From 241d8bd79663b70f05f17305bdca01f45cb5bbc8 Mon Sep 17 00:00:00 2001 From: yuchang Date: Mon, 28 Apr 2025 18:03:47 +0800 Subject: [PATCH 02/10] add same space for queueactor --- trinity/buffer/reader/queue_reader.py | 1 + trinity/buffer/writer/queue_writer.py | 1 + 2 files changed, 2 insertions(+) diff --git a/trinity/buffer/reader/queue_reader.py b/trinity/buffer/reader/queue_reader.py index 3379708da4..c09b275cfd 100644 --- a/trinity/buffer/reader/queue_reader.py +++ b/trinity/buffer/reader/queue_reader.py @@ -21,6 +21,7 @@ def __init__(self, meta: DatasetConfig, config: BufferConfig): self.config = config self.queue = QueueActor.options( name=f"queue-{meta.name}", + namespace="Trinity-RFT", get_if_exists=True, ).remote(meta, config) diff --git a/trinity/buffer/writer/queue_writer.py b/trinity/buffer/writer/queue_writer.py index d31b7a029a..b0a183b36d 100644 --- a/trinity/buffer/writer/queue_writer.py +++ b/trinity/buffer/writer/queue_writer.py @@ -19,6 +19,7 @@ def __init__(self, meta: DatasetConfig, config: BufferConfig): self.config = config self.queue = QueueActor.options( name=f"queue-{meta.name}", + namespace="Trinity-RFT", get_if_exists=True, ).remote(meta, config) From b5f6e9cfbbb5b630db186ff5822dc769db658498 Mon Sep 17 00:00:00 2001 From: yuchang Date: Tue, 6 May 2025 10:43:23 +0800 Subject: [PATCH 03/10] add curve for async --- docs/sphinx_doc/assets/async-curve.png | Bin 0 -> 60835 bytes .../source/tutorial/example_async_mode.md | 3 ++- .../tutorial/example_reasoning_advanced.md | 16 +--------------- 3 files changed, 3 insertions(+), 16 deletions(-) create mode 100644 docs/sphinx_doc/assets/async-curve.png diff --git a/docs/sphinx_doc/assets/async-curve.png b/docs/sphinx_doc/assets/async-curve.png new file mode 100644 index 0000000000000000000000000000000000000000..4b73e7addb9886014fbf52b646841e059f309c0d GIT binary patch literal 60835 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 literal 0 HcmV?d00001 diff --git a/docs/sphinx_doc/source/tutorial/example_async_mode.md b/docs/sphinx_doc/source/tutorial/example_async_mode.md index 27c5174b22..f35eed817a 100644 --- a/docs/sphinx_doc/source/tutorial/example_async_mode.md +++ b/docs/sphinx_doc/source/tutorial/example_async_mode.md @@ -35,4 +35,5 @@ bash examples/async_gsm8k/run.sh ``` In the following, we show the results of asynchronous mode in the following. -# TODO + +![async](../../assets/async-curve.png) diff --git a/docs/sphinx_doc/source/tutorial/example_reasoning_advanced.md b/docs/sphinx_doc/source/tutorial/example_reasoning_advanced.md index d278ed22bc..9307ea9e9f 100644 --- a/docs/sphinx_doc/source/tutorial/example_reasoning_advanced.md +++ b/docs/sphinx_doc/source/tutorial/example_reasoning_advanced.md @@ -1,4 +1,4 @@ -# Example: off-policy / asynchronous RFT mode +# Example: off-policy RFT mode Let's continue with the [previous GSM8k example](./example_reasoning_basic.md) and show some advanced features provided by Trinity-RFT, namely, off-policy or asynchronous RFT mode. @@ -35,17 +35,3 @@ A similar performance boost is shown at step 21, which leads to a converged scor ![opmd](../../assets/opmd-curve.png) - - - - - -## Asynchronous mode - - -Trinity-RFT supports the asynchronous and decoupled mode of RFT, where explorer and trainer act independently and asynchronously. -To run this mode, the explorer and trainer need to be launched separately, with the `mode` parameter in the config file set to `explore` and `train` respectively. - - - -*We are still testing this mode more thoroughly. A concrete example is coming soon!* From d1fccefc515cf5ba0a197d2a9744442488f90d97 Mon Sep 17 00:00:00 2001 From: yuchang Date: Tue, 6 May 2025 12:13:16 +0800 Subject: [PATCH 04/10] add curge figure --- docs/sphinx_doc/assets/async-curve.png | Bin 60835 -> 53042 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/sphinx_doc/assets/async-curve.png b/docs/sphinx_doc/assets/async-curve.png index 4b73e7addb9886014fbf52b646841e059f309c0d..74fee57be56ff4d8fcb5b9f7d780f9c7e052e897 100644 GIT binary patch literal 53042 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 From 922aa0393906f2820a938d3f6c2129e4bafbb0c7 Mon Sep 17 00:00:00 2001 From: yuchang Date: Tue, 6 May 2025 17:28:19 +0800 Subject: [PATCH 05/10] fix sqlite database path format --- docs/sphinx_doc/source/tutorial/example_async_mode.md | 2 +- examples/async_gsm8k/explorer.yaml | 2 +- examples/async_gsm8k/trainer.yaml | 2 +- examples/grpo_gsm8k/gsm8k.yaml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/sphinx_doc/source/tutorial/example_async_mode.md b/docs/sphinx_doc/source/tutorial/example_async_mode.md index f35eed817a..9e264ea284 100644 --- a/docs/sphinx_doc/source/tutorial/example_async_mode.md +++ b/docs/sphinx_doc/source/tutorial/example_async_mode.md @@ -21,7 +21,7 @@ buffer: train_dataset: name: gsm8k_buffer storage_type: queue - path: 'sqlite:////gsm8k.db' + path: 'sqlite:///gsm8k.db' synchronizer: sync_method: 'offline' diff --git a/examples/async_gsm8k/explorer.yaml b/examples/async_gsm8k/explorer.yaml index e2a5cf8aa7..00f7bc817b 100644 --- a/examples/async_gsm8k/explorer.yaml +++ b/examples/async_gsm8k/explorer.yaml @@ -26,7 +26,7 @@ buffer: train_dataset: name: gsm8k_buffer storage_type: queue - path: 'sqlite:////gsm8k.db' + path: 'sqlite:///gsm8k.db' explorer: engine_type: vllm_async engine_num: 2 diff --git a/examples/async_gsm8k/trainer.yaml b/examples/async_gsm8k/trainer.yaml index 0943846017..18472acbff 100644 --- a/examples/async_gsm8k/trainer.yaml +++ b/examples/async_gsm8k/trainer.yaml @@ -26,7 +26,7 @@ buffer: train_dataset: name: gsm8k_buffer storage_type: queue - path: 'sqlite:////gsm8k.db' + path: 'sqlite:///gsm8k.db' explorer: engine_type: vllm_async engine_num: 2 diff --git a/examples/grpo_gsm8k/gsm8k.yaml b/examples/grpo_gsm8k/gsm8k.yaml index 09d4daf77b..9dd620c0d7 100644 --- a/examples/grpo_gsm8k/gsm8k.yaml +++ b/examples/grpo_gsm8k/gsm8k.yaml @@ -35,7 +35,7 @@ buffer: train_dataset: name: gsm8k_buffer storage_type: queue - path: 'sqlite:////gsm8k.db' + path: 'sqlite:///gsm8k.db' # sft_warmup_dataset: # Uncomment these to enable sft warmup # name: warmup_data # storage_type: file From 3fc6b2e69cd8b01366d8d371ba5a5e1e9828b8d1 Mon Sep 17 00:00:00 2001 From: yuchang Date: Tue, 6 May 2025 17:49:15 +0800 Subject: [PATCH 06/10] add running command for async --- examples/async_gsm8k/run.sh | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/examples/async_gsm8k/run.sh b/examples/async_gsm8k/run.sh index 170999e5dc..ff9ad66bbc 100644 --- a/examples/async_gsm8k/run.sh +++ b/examples/async_gsm8k/run.sh @@ -1,7 +1,4 @@ -# trinity run --config examples/async_gsm8k/explorer.yaml 2>&1 | tee explorer.log & -# sleep 30 -# trinity run --config examples/async_gsm8k/trainer.yaml 2>&1 | tee trainer.log & - -python -m trinity.cli.launcher run --config examples/async_gsm8k/explorer.yaml 2>&1 | tee explorer.log & +#!/bin/bash +trinity run --config examples/async_gsm8k/explorer.yaml 2>&1 | tee explorer.log & sleep 30 -python -m trinity.cli.launcher run --config examples/async_gsm8k/trainer.yaml 2>&1 | tee trainer.log & +trinity run --config examples/async_gsm8k/trainer.yaml 2>&1 | tee trainer.log & From 469875c9b763a774f62f99b83c4fab69beff0d91 Mon Sep 17 00:00:00 2001 From: yuchang Date: Wed, 7 May 2025 10:44:08 +0800 Subject: [PATCH 07/10] add namespace --- docs/sphinx_doc/source/tutorial/example_async_mode.md | 2 +- examples/async_gsm8k/explorer.yaml | 2 +- examples/async_gsm8k/trainer.yaml | 2 +- trinity/buffer/reader/queue_reader.py | 2 +- trinity/buffer/writer/queue_writer.py | 2 +- trinity/common/config.py | 3 +++ 6 files changed, 8 insertions(+), 5 deletions(-) diff --git a/docs/sphinx_doc/source/tutorial/example_async_mode.md b/docs/sphinx_doc/source/tutorial/example_async_mode.md index 9e264ea284..008fc4ce3b 100644 --- a/docs/sphinx_doc/source/tutorial/example_async_mode.md +++ b/docs/sphinx_doc/source/tutorial/example_async_mode.md @@ -24,7 +24,7 @@ buffer: path: 'sqlite:///gsm8k.db' synchronizer: - sync_method: 'offline' + sync_method: 'checkpoint' sync_iteration_interval: ``` diff --git a/examples/async_gsm8k/explorer.yaml b/examples/async_gsm8k/explorer.yaml index 00f7bc817b..8f7fa3dec7 100644 --- a/examples/async_gsm8k/explorer.yaml +++ b/examples/async_gsm8k/explorer.yaml @@ -46,7 +46,7 @@ explorer: max_pending_requests: 32 max_waiting_steps: 4 synchronizer: - sync_method: 'offline' + sync_method: 'checkpoint' sync_iteration_interval: 10 trainer: trainer_type: 'verl' diff --git a/examples/async_gsm8k/trainer.yaml b/examples/async_gsm8k/trainer.yaml index 18472acbff..48a37d7e3d 100644 --- a/examples/async_gsm8k/trainer.yaml +++ b/examples/async_gsm8k/trainer.yaml @@ -46,7 +46,7 @@ explorer: max_pending_requests: 32 max_waiting_steps: 4 synchronizer: - sync_method: 'offline' + sync_method: 'checkpoint' sync_iteration_interval: 10 trainer: trainer_type: 'verl' diff --git a/trinity/buffer/reader/queue_reader.py b/trinity/buffer/reader/queue_reader.py index 89cba08a46..519479848c 100644 --- a/trinity/buffer/reader/queue_reader.py +++ b/trinity/buffer/reader/queue_reader.py @@ -21,7 +21,7 @@ def __init__(self, meta: DatasetConfig, config: BufferConfig): self.config = config self.queue = QueueActor.options( name=f"queue-{meta.name}", - namespace="Trinity-RFT", + namespace=meta.namespace, get_if_exists=True, ).remote(meta, config) diff --git a/trinity/buffer/writer/queue_writer.py b/trinity/buffer/writer/queue_writer.py index 347382846d..14fd9e5b28 100644 --- a/trinity/buffer/writer/queue_writer.py +++ b/trinity/buffer/writer/queue_writer.py @@ -20,7 +20,7 @@ def __init__(self, meta: DatasetConfig, config: BufferConfig): self.config = config self.queue = QueueActor.options( name=f"queue-{meta.name}", - namespace="Trinity-RFT", + namespace=meta.namespace, get_if_exists=True, ).remote(meta, config) diff --git a/trinity/common/config.py b/trinity/common/config.py index 6dc3510ddc..1c795d1e5c 100644 --- a/trinity/common/config.py +++ b/trinity/common/config.py @@ -109,6 +109,7 @@ class DatasetConfig: storage_type: StorageType algorithm_type: AlgorithmType = AlgorithmType.PPO path: Optional[str] = None + namespace: str = "" # automatically generated kwargs: Dict[str, Any] = field(default_factory=dict) @@ -289,7 +290,9 @@ def _check_buffer(self) -> None: if self.buffer.train_dataset is None: raise ValueError("buffer.train_dataset is required when mode is not 'both'") self.buffer.train_dataset.algorithm_type = self.trainer.algorithm_type + self.buffer.train_dataset.namespace = f"{self.monitor.project}-{self.monitor.name}" if self.buffer.sft_warmup_dataset is not None: + self.buffer.sft_warmup_dataset.namespace = f"{self.monitor.project}-{self.monitor.name}" self.buffer.sft_warmup_dataset.algorithm_type = AlgorithmType.SFT self.buffer.read_batch_size = self.data.batch_size * self.explorer.repeat_times From b959f12aa14a0f07e31ce0f3785e194edeff8d13 Mon Sep 17 00:00:00 2001 From: yuchang Date: Wed, 7 May 2025 11:02:45 +0800 Subject: [PATCH 08/10] fix async config --- examples/async_gsm8k/explorer.yaml | 2 -- examples/async_gsm8k/trainer.yaml | 2 -- examples/async_gsm8k/verl_config.yaml | 2 -- 3 files changed, 6 deletions(-) diff --git a/examples/async_gsm8k/explorer.yaml b/examples/async_gsm8k/explorer.yaml index 8f7fa3dec7..73f8669b10 100644 --- a/examples/async_gsm8k/explorer.yaml +++ b/examples/async_gsm8k/explorer.yaml @@ -36,8 +36,6 @@ explorer: enforce_eager: true dtype: bfloat16 temperature: 1.0 - top_p: 1.0 - top_k: -1 seed: 42 logprobs: 0 repeat_times: 8 diff --git a/examples/async_gsm8k/trainer.yaml b/examples/async_gsm8k/trainer.yaml index 48a37d7e3d..d2dc92503a 100644 --- a/examples/async_gsm8k/trainer.yaml +++ b/examples/async_gsm8k/trainer.yaml @@ -36,8 +36,6 @@ explorer: enforce_eager: true dtype: bfloat16 temperature: 1.0 - top_p: 1.0 - top_k: -1 seed: 42 logprobs: 0 repeat_times: 8 diff --git a/examples/async_gsm8k/verl_config.yaml b/examples/async_gsm8k/verl_config.yaml index 216bcdba44..25afdb7f00 100644 --- a/examples/async_gsm8k/verl_config.yaml +++ b/examples/async_gsm8k/verl_config.yaml @@ -70,8 +70,6 @@ actor_rollout_ref: rollout: name: vllm temperature: 1.0 - top_k: -1 # 0 for hf rollout, -1 for vllm rollout - top_p: 1 use_fire_sampling: False # https://arxiv.org/abs/2410.21236 prompt_length: ${data.max_prompt_length} # not use for opensource response_length: ${data.max_response_length} From 56ebd60793cc0b79b3fd40c2f789ce3f7d15d978 Mon Sep 17 00:00:00 2001 From: yuchang Date: Wed, 7 May 2025 11:34:30 +0800 Subject: [PATCH 09/10] change md link --- README.md | 3 ++- docs/sphinx_doc/source/main.md | 3 ++- examples/async_gsm8k/verl_config.yaml | 1 - 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 09988d6d81..9dc284bce4 100644 --- a/README.md +++ b/README.md @@ -260,7 +260,8 @@ More example config files can be found in `examples`. For more detailed examples about how to use Trinity-RFT, please refer to the following tutorials: + [A quick example with GSM8k](./docs/sphinx_doc/source/tutorial/example_reasoning_basic.md); -+ [Off-policy / asynchronous modes of RFT](./docs/sphinx_doc/source/tutorial/example_reasoning_advanced.md); ++ [Off-policy mode of RFT](./docs/sphinx_doc/source/tutorial/example_reasoning_advanced.md); ++ [Asynchronous mode of RFT](./docs/sphinx_doc/source/tutorial/example_async_mode.md); + [Multi-turn tasks](./docs/sphinx_doc/source/tutorial/example_multi_turn.md); + [Data processing pipelines](./docs/sphinx_doc/source/tutorial/example_data_functionalities.md); + [Offline learning by DPO](./docs/sphinx_doc/source/tutorial/example_dpo.md). diff --git a/docs/sphinx_doc/source/main.md b/docs/sphinx_doc/source/main.md index a7e6684219..59fcaf62f1 100644 --- a/docs/sphinx_doc/source/main.md +++ b/docs/sphinx_doc/source/main.md @@ -240,7 +240,8 @@ More example config files can be found in `examples`. For more detailed examples about how to use Trinity-RFT, please refer to the following documents: + [A quick example with GSM8k](tutorial/example_reasoning_basic.md); -+ [Off-policy / asynchronous modes of RFT](tutorial/example_reasoning_advanced.md); ++ [Off-policy mode of RFT](tutorial/example_reasoning_advanced.md); ++ [Asynchronous mode of RFT](tutorial/example_async_mode.md); + [Multi-turn tasks](tutorial/example_multi_turn.md); + [Data processing pipelines](tutorial/example_data_functionalities.md); + [Offline learning by DPO](tutorial/example_dpo.md). diff --git a/examples/async_gsm8k/verl_config.yaml b/examples/async_gsm8k/verl_config.yaml index 25afdb7f00..268d61e0e5 100644 --- a/examples/async_gsm8k/verl_config.yaml +++ b/examples/async_gsm8k/verl_config.yaml @@ -52,7 +52,6 @@ actor_rollout_ref: optimizer_offload: False fsdp_size: -1 # --- below: opmd --- - alg_type: ppo # ppo / opmd / pairwise_opmd tau: 0.000 # strength of regularization w.r.t. old / ref policy opmd_baseline: mean # mean / logavgexp, applicable to opmd use_uid: False # True / False, applicable to pairwise_opmd From e2c1dab5b1fed79ba79c47f7b0d5ce7c3e942884 Mon Sep 17 00:00:00 2001 From: yuchang Date: Wed, 7 May 2025 11:38:04 +0800 Subject: [PATCH 10/10] polish sentences for async tutorial --- docs/sphinx_doc/source/tutorial/example_async_mode.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/sphinx_doc/source/tutorial/example_async_mode.md b/docs/sphinx_doc/source/tutorial/example_async_mode.md index 008fc4ce3b..a96ff29ff6 100644 --- a/docs/sphinx_doc/source/tutorial/example_async_mode.md +++ b/docs/sphinx_doc/source/tutorial/example_async_mode.md @@ -1,13 +1,13 @@ # A quick example for asynchronous mode -This example shows how to run RFT in asynchronous mode with the Qwen-2.5-1.5B-Instruct model and GSM8K dataset. +This example shows how to run RFT in asynchronous mode with the GRPO algorithm, Qwen-2.5-1.5B-Instruct model and GSM8K dataset. Trinity-RFT supports an asynchronous mode by running the trainer and explorer in separate processes. For this purpose, we prepare two main config files: `trainer.yaml` and `explorer.yaml`. The main difference between them is that in `trainer.yaml` we set `mode=train`, while in `explorer.yaml` we set `mode=explore`. In addition, we need to configure the following parameters in both files. -The synchronization frequency is defined as every `sync_iteration_interval * batch_size` tasks. +The model weights of the explorer and trainer are synchronized once every `sync_iteration_interval * batch_size` tasks. ```yaml data: @@ -28,12 +28,14 @@ synchronizer: sync_iteration_interval: ``` -You may run this examples by running the following command: +You may run this example with the following command: ```bash bash examples/async_gsm8k/run.sh ``` -In the following, we show the results of asynchronous mode in the following. +The following plot shows the learning curve of GRPO in the asynchronous mode. +> This result should be regarded merely as a baseline, since GRPO is supposed to be an on-policy algorithm. +> We are continuously investigating other RL algorithms (e.g., [OPMD](./example_reasoning_advanced.md)) in the asynchronous mode. ![async](../../assets/async-curve.png)