Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
e3ff423
Feat: Adapt SpeCo to verl release/v0.8.0 and stabilize no-drafter vLL…
rpchen0128 Jul 20, 2026
5102e7f
Fix: Adapt SpeCo to verl release/v0.8.0 and stabilize no-drafter NPU …
rpchen0128 Jul 20, 2026
0b478e9
Fix: Apply NPU vLLM import compatibility before worker initialization
rpchen0128 Jul 20, 2026
e465e82
Fix: Avoid forced entropy compilation for no-drafter vLLM rollout
rpchen0128 Jul 20, 2026
d6cc40f
Fix: Enable NPU IPC weight-sync compatibility for no-drafter vLLM rol…
rpchen0128 Jul 20, 2026
9e811dd
Fix: Apply NPU vLLM import compatibility to drafter rollout workers
rpchen0128 Jul 21, 2026
a53bd80
Fix: Unify NPU vLLM import compatibility across rollout paths
rpchen0128 Jul 21, 2026
28035bd
Fix: Bootstrap NPU vLLM compatibility in rollout server processes
rpchen0128 Jul 21, 2026
6bb643d
Fix target head offload and no-drafter vLLM actor compatibility
rpchen0128 Jul 21, 2026
443f6bb
Fix NPU FSDP2 checkpoint memory growth and retention
rpchen0128 Jul 21, 2026
c703418
Fix(Checkpoint): Safely limit model checkpoint retention to one
rpchen0128 Jul 21, 2026
d05395f
Fix(NPU): Restore native checkpoint saves and reclaim host memory
rpchen0128 Jul 21, 2026
c0b31e3
Fix(NPU): Reclaim actor host memory and restore drafter cleanup seman…
rpchen0128 Jul 21, 2026
c92ee59
Fix(NPU): Reuse weight-transfer SHM and streamline checkpoint cleanup
rpchen0128 Jul 21, 2026
2e2a1e6
Fix(NPU): Diagnose and reclaim host memory during weight sync
rpchen0128 Jul 21, 2026
3e5aee2
Debug(NPU): Trace host memory across PPO training stages
rpchen0128 Jul 22, 2026
774c338
Fix(NPU): Avoid redundant FSDP2 staging during weight sync
rpchen0128 Jul 22, 2026
64ccafe
Debug: Print PPO stage memory snapshots unconditionally
rpchen0128 Jul 22, 2026
6050444
Fix(NPU): Reclaim verl runtime memory and improve leak diagnostics
rpchen0128 Jul 22, 2026
aa29840
Debug(NPU): Trace per-process host memory growth across PPO stages
rpchen0128 Jul 22, 2026
70cd278
Fix(NPU): Use layerwise vLLM reload to bound Worker_TP host memory
rpchen0128 Jul 22, 2026
4f514df
Fix(NPU): Replace layerwise reload with reusable SHM staging
rpchen0128 Jul 22, 2026
c11a2a2
Fix(NPU): Bound cross-step host memory across rollout and training
rpchen0128 Jul 22, 2026
35b9600
Fix(NPU): Reclaim cross-step Ray worker host memory with jemalloc
rpchen0128 Jul 22, 2026
69e2bad
Fix(NPU): Skip redundant FSDP logits scaling at unit temperature
rpchen0128 Jul 22, 2026
76f2703
Debug(NPU): Focus host-memory diagnostics on cross-step output lifetimes
rpchen0128 Jul 22, 2026
3647423
Debug(NPU): Add focused diagnostics for cross-stage host memory growth
rpchen0128 Jul 22, 2026
d983ec9
Debug(NPU): Trace host memory reclaim across FSDP and AgentLoop calls
rpchen0128 Jul 22, 2026
7f27565
Debug(NPU): Trace non-anonymous node memory and outer FSDP reclaim
rpchen0128 Jul 22, 2026
5b2e0d4
Fix(NPU): Tune jemalloc and remove intrusive memory diagnostics
rpchen0128 Jul 22, 2026
a311ed0
Fix(Ray): Bound worker prestart across all example scripts
rpchen0128 Jul 23, 2026
b20cfc4
Config(DSpark): Lower default L1 loss weight to 0.45
rpchen0128 Jul 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/cpu_unit_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ jobs:
cache: pip
cache-dependency-path: ci/requirements-ci.txt

- name: Check out pinned upstream verl
- name: Check out release/v0.8.0 upstream verl
run: |
set -euo pipefail
verl_ref="$(awk -F= '/^VERL_BASE_COMMIT=/{print $2}' REQUIRED_VERL.txt)"
verl_ref="$(awk -F= '/^VERL_BASE_BRANCH=/{print $2}' REQUIRED_VERL.txt)"
mkdir -p .ci
git clone --filter=blob:none https://github.com/verl-project/verl .ci/upstream-verl
git -C .ci/upstream-verl checkout "${verl_ref}"
Expand Down
6 changes: 3 additions & 3 deletions Dockerfile.sglang
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
# GPU SGLang runtime image.
FROM verlai/verl:sgl0512.dev1

ARG VERL_COMMIT=7aed6b230776f963fa09509c10d9c3a767d1102c
ARG VERL_REF=release/v0.8.0
ARG VERL_REPO=https://github.com/verl-project/verl.git

WORKDIR /workspace

RUN git clone ${VERL_REPO} /workspace/verl \
&& cd /workspace/verl \
&& git checkout ${VERL_COMMIT} \
&& git checkout ${VERL_REF} \
&& pip install -e .

COPY . /workspace/verl-SpeCo

ENV PYTHONPATH=/workspace/verl-SpeCo:${PYTHONPATH}
WORKDIR /workspace/verl-SpeCo
RUN pip install -e .
6 changes: 3 additions & 3 deletions Dockerfile.vllm
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
# GPU vLLM runtime image.
FROM verlai/verl:vllm023.dev1

ARG VERL_COMMIT=7aed6b230776f963fa09509c10d9c3a767d1102c
ARG VERL_REF=release/v0.8.0
ARG VERL_REPO=https://github.com/verl-project/verl.git

WORKDIR /workspace

RUN git clone ${VERL_REPO} /workspace/verl \
&& cd /workspace/verl \
&& git checkout ${VERL_COMMIT} \
&& git checkout ${VERL_REF} \
&& pip install -e .

COPY . /workspace/verl-SpeCo

ENV PYTHONPATH=/workspace/verl-SpeCo:${PYTHONPATH}
WORKDIR /workspace/verl-SpeCo
RUN pip install -e .
37 changes: 22 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,31 +103,38 @@ ci/ # smoke-test helpers and CI notes

## Installation

This repository does not currently define its own Python package metadata. Use
it with the upstream `verl` commit pinned in
Install the upstream `verl` release branch specified in
[`REQUIRED_VERL.txt`](./REQUIRED_VERL.txt), which is mirrored in
[`verl_speco/config/speco_base.yaml`](./verl_speco/config/speco_base.yaml).
By default, unsupported `verl` versions produce a warning. Set
`VERL_SPECO_STRICT_VERL=1` to fail closed when the importable `verl` does not
match the pinned version or commit.
match the release/v0.8.0 version and API contract.

One typical editable setup is:

```bash
git clone https://github.com/verl-project/verl.git
cd verl
git checkout 7aed6b230776f963fa09509c10d9c3a767d1102c
git checkout release/v0.8.0
pip install -e .

cd /path/to/verl-SpeCo
export PYTHONPATH="$PWD:$PYTHONPATH"
cd ..
git clone https://github.com/verl-project/verl-SpeCo.git
cd verl-SpeCo
pip install -e .
```

The editable install exposes the `verl_speco` package without modifying
`PYTHONPATH`. It also installs the `verl-speco`, `verl-speco-draft-train`, and
`verl-speco-inspect-features` command-line entry points. Install the matching
GPU or NPU rollout runtime separately; `verl-SpeCo` intentionally does not let
pip replace accelerator-specific PyTorch, vLLM, SGLang, or vLLM-Ascend builds.

### Docker Images

You can also build GPU runtime images from the official `verlai/verl`
development images and then pin the importable upstream `verl` checkout to the
required v0.8.0 commit. The Dockerfiles below target GPU deployments; use the
development images and then use the importable upstream `verl` checkout from
the release/v0.8.0 branch. The Dockerfiles below target GPU deployments; use the
matching accelerator image for NPU or other accelerator runtimes.

For GPU vLLM-based examples, use this Dockerfile:
Expand All @@ -136,20 +143,20 @@ For GPU vLLM-based examples, use this Dockerfile:
# GPU vLLM runtime image.
FROM verlai/verl:vllm023.dev1

ARG VERL_COMMIT=7aed6b230776f963fa09509c10d9c3a767d1102c
ARG VERL_REF=release/v0.8.0
ARG VERL_REPO=https://github.com/verl-project/verl.git

WORKDIR /workspace

RUN git clone ${VERL_REPO} /workspace/verl \
&& cd /workspace/verl \
&& git checkout ${VERL_COMMIT} \
&& git checkout ${VERL_REF} \
&& pip install -e .

COPY . /workspace/verl-SpeCo

ENV PYTHONPATH=/workspace/verl-SpeCo:${PYTHONPATH}
WORKDIR /workspace/verl-SpeCo
RUN pip install -e .
```

Build it from the `verl-SpeCo` repository root:
Expand All @@ -164,20 +171,20 @@ For GPU SGLang-based examples, use the same layout with the SGLang base image:
# GPU SGLang runtime image.
FROM verlai/verl:sgl0512.dev1

ARG VERL_COMMIT=7aed6b230776f963fa09509c10d9c3a767d1102c
ARG VERL_REF=release/v0.8.0
ARG VERL_REPO=https://github.com/verl-project/verl.git

WORKDIR /workspace

RUN git clone ${VERL_REPO} /workspace/verl \
&& cd /workspace/verl \
&& git checkout ${VERL_COMMIT} \
&& git checkout ${VERL_REF} \
&& pip install -e .

COPY . /workspace/verl-SpeCo

ENV PYTHONPATH=/workspace/verl-SpeCo:${PYTHONPATH}
WORKDIR /workspace/verl-SpeCo
RUN pip install -e .
```

Build it from the `verl-SpeCo` repository root:
Expand Down Expand Up @@ -289,7 +296,7 @@ pip install -r ci/requirements-ci.txt
pytest tests
```

Some tests require a pinned upstream `verl` checkout. Set
Some tests require an upstream `verl` checkout from `release/v0.8.0`. Set
`VERL_SPECO_UPSTREAM_ROOT` to the root of that checkout when running the config
composition contract:

Expand Down
4 changes: 2 additions & 2 deletions REQUIRED_VERL.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
VERL_BASE_TAG=v0.8.0
VERL_BASE_COMMIT=7aed6b230776f963fa09509c10d9c3a767d1102c
VERL_BASE_BRANCH=release/v0.8.0
VERL_BASE_VERSION=0.8.0
VERL_SOURCE_MODIFICATIONS_ALLOWED=false
REQUIRES=import verl only
COMPATIBILITY_POLICY=warn by default
Expand Down
5 changes: 5 additions & 0 deletions examples/run_qwen3-8b_drafter_dflash_sglang.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ exp_name='qwen3_8b_dflash_drafter'

gen_tp=2
train_sp=1
ray_num_cpus=${SPECO_RAY_NUM_CPUS:-64}
ray_worker_soft_limit=${SPECO_RAY_WORKER_SOFT_LIMIT:-8}

MODEL_PATH=/path/to/model
CKPTS_DIR=/path/to/checkpoint
Expand All @@ -14,6 +16,9 @@ DRAFTER_PATH=/path/to/drafter

PYTHONUNBUFFERED=1 python3 -m verl_speco.main \
algorithm.adv_estimator=grpo \
ray_kwargs.ray_init.num_cpus=${ray_num_cpus} \
+ray_kwargs.ray_init._system_config.prestart_worker_first_driver=false \
+ray_kwargs.ray_init._system_config.num_workers_soft_limit=${ray_worker_soft_limit} \
data.train_files=${TRAIN_FILE} \
data.val_files=${TEST_FILE} \
data.train_batch_size=64 \
Expand Down
6 changes: 5 additions & 1 deletion examples/run_qwen3-8b_drafter_dflash_vllm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ exp_name='qwen3_8b_dflash_drafter_vllm_gpu'

gen_tp=2
train_sp=1
ray_num_cpus=${SPECO_RAY_NUM_CPUS:-64}
ray_worker_soft_limit=${SPECO_RAY_WORKER_SOFT_LIMIT:-8}

MODEL_PATH=/path/to/model
CKPTS_DIR=/path/to/checkpoint
Expand All @@ -16,6 +18,9 @@ DRAFTER_PATH=/path/to/vllm-compatible-dflash-drafter

PYTHONUNBUFFERED=1 python3 -m verl_speco.main \
algorithm.adv_estimator=grpo \
ray_kwargs.ray_init.num_cpus=${ray_num_cpus} \
+ray_kwargs.ray_init._system_config.prestart_worker_first_driver=false \
+ray_kwargs.ray_init._system_config.num_workers_soft_limit=${ray_worker_soft_limit} \
data.train_files=${TRAIN_FILE} \
data.val_files=${TEST_FILE} \
data.train_batch_size=16 \
Expand Down Expand Up @@ -91,7 +96,6 @@ PYTHONUNBUFFERED=1 python3 -m verl_speco.main \
trainer.experiment_name=${exp_name} \
trainer.n_gpus_per_node=16 \
trainer.nnodes=1 \
trainer.resume_mode=disable \
trainer.default_local_dir=${CKPTS_DIR} \
trainer.total_training_steps=100 \
trainer.save_freq=20 \
Expand Down
27 changes: 23 additions & 4 deletions examples/run_qwen3-8b_drafter_dflash_vllm_npu.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
set -x
export ASCEND_RT_VISIBLE_DEVICES="${ASCEND_RT_VISIBLE_DEVICES:-0,1,2,3,4,5,6,7}"
case "${LD_PRELOAD:-}" in
*libjemalloc*) ;;
*)
if [ -f /usr/lib/aarch64-linux-gnu/libjemalloc.so.2 ]; then
export LD_PRELOAD="/usr/lib/aarch64-linux-gnu/libjemalloc.so.2${LD_PRELOAD:+:$LD_PRELOAD}"
elif [ -f /usr/lib64/libjemalloc.so.2 ]; then
export LD_PRELOAD="/usr/lib64/libjemalloc.so.2${LD_PRELOAD:+:$LD_PRELOAD}"
fi
;;
esac
export MALLOC_CONF="${MALLOC_CONF:-narenas:8,thp:never,metadata_thp:disabled,dirty_decay_ms:0,muzzy_decay_ms:0}"
export SPECO_JEMALLOC_RECLAIM_MODE="${SPECO_JEMALLOC_RECLAIM_MODE:-purge}"
export MALLOC_ARENA_MAX="${MALLOC_ARENA_MAX:-2}"
export MALLOC_TRIM_THRESHOLD_="${MALLOC_TRIM_THRESHOLD_:-131072}"

# NPU example for the native DFlash proposer in vLLM.
project_name='verl_grpo_example_dflash_drafter'
Expand All @@ -8,6 +22,8 @@ exp_name='qwen3_8b_dflash_drafter_vllm_npu'
gen_tp=2
train_sp=4
ppo_gpus_per_node=${SPECO_ACCELERATOR_COUNT:-8}
ray_num_cpus=${SPECO_RAY_NUM_CPUS:-64}
ray_worker_soft_limit=${SPECO_RAY_WORKER_SOFT_LIMIT:-8}

MODEL_PATH=/path/to/model
CKPTS_DIR=/path/to/checkpoint
Expand All @@ -18,6 +34,10 @@ DRAFTER_PATH=/path/to/vllm-compatible-dflash-drafter

PYTHONUNBUFFERED=1 python3 -m verl_speco.main \
algorithm.adv_estimator=grpo \
transfer_queue.enable=False \
ray_kwargs.ray_init.num_cpus=${ray_num_cpus} \
+ray_kwargs.ray_init._system_config.prestart_worker_first_driver=false \
+ray_kwargs.ray_init._system_config.num_workers_soft_limit=${ray_worker_soft_limit} \
data.train_files=${TRAIN_FILE} \
data.val_files=${TEST_FILE} \
data.train_batch_size=64 \
Expand All @@ -38,8 +58,8 @@ PYTHONUNBUFFERED=1 python3 -m verl_speco.main \
actor_rollout_ref.actor.entropy_coeff=0 \
actor_rollout_ref.actor.calculate_entropy=False \
actor_rollout_ref.model.enable_gradient_checkpointing=True \
actor_rollout_ref.actor.fsdp_config.param_offload=True \
actor_rollout_ref.actor.fsdp_config.optimizer_offload=True \
actor_rollout_ref.actor.fsdp_config.param_offload=False \
actor_rollout_ref.actor.fsdp_config.optimizer_offload=False \
actor_rollout_ref.rollout.log_prob_micro_batch_size_per_gpu=10 \
actor_rollout_ref.rollout.tensor_model_parallel_size=${gen_tp} \
actor_rollout_ref.actor.ulysses_sequence_parallel_size=${train_sp} \
Expand All @@ -59,7 +79,7 @@ PYTHONUNBUFFERED=1 python3 -m verl_speco.main \
actor_rollout_ref.rollout.gpu_memory_utilization=0.7 \
actor_rollout_ref.rollout.n=5 \
actor_rollout_ref.ref.log_prob_micro_batch_size_per_gpu=10 \
actor_rollout_ref.ref.fsdp_config.param_offload=True \
actor_rollout_ref.ref.fsdp_config.param_offload=False \
actor_rollout_ref.rollout.drafter.enable=True \
actor_rollout_ref.rollout.drafter.enable_drafter_training=True \
actor_rollout_ref.rollout.drafter.model_path=${DRAFTER_PATH} \
Expand Down Expand Up @@ -97,7 +117,6 @@ PYTHONUNBUFFERED=1 python3 -m verl_speco.main \
trainer.experiment_name=${exp_name} \
trainer.n_gpus_per_node=${ppo_gpus_per_node} \
trainer.nnodes=1 \
trainer.resume_mode=disable \
trainer.default_local_dir=${CKPTS_DIR} \
trainer.total_training_steps=200 \
trainer.save_freq=20 \
Expand Down
6 changes: 5 additions & 1 deletion examples/run_qwen3-8b_drafter_dspark_vllm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ exp_name='qwen3_8b_dspark_drafter_vllm_gpu'

gen_tp=2
train_sp=1
ray_num_cpus=${SPECO_RAY_NUM_CPUS:-64}
ray_worker_soft_limit=${SPECO_RAY_WORKER_SOFT_LIMIT:-8}

MODEL_PATH=/path/to/model
CKPTS_DIR=/path/to/checkpoint
Expand All @@ -17,6 +19,9 @@ DRAFTER_PATH=/path/to/vllm-compatible-dspark-drafter

PYTHONUNBUFFERED=1 python3 -m verl_speco.main \
algorithm.adv_estimator=grpo \
ray_kwargs.ray_init.num_cpus=${ray_num_cpus} \
+ray_kwargs.ray_init._system_config.prestart_worker_first_driver=false \
+ray_kwargs.ray_init._system_config.num_workers_soft_limit=${ray_worker_soft_limit} \
data.train_files=${TRAIN_FILE} \
data.val_files=${TEST_FILE} \
data.train_batch_size=16 \
Expand Down Expand Up @@ -102,7 +107,6 @@ PYTHONUNBUFFERED=1 python3 -m verl_speco.main \
trainer.experiment_name=${exp_name} \
trainer.n_gpus_per_node=16 \
trainer.nnodes=1 \
trainer.resume_mode=disable \
trainer.default_local_dir=${CKPTS_DIR} \
trainer.total_training_steps=100 \
trainer.save_freq=20 \
Expand Down
27 changes: 23 additions & 4 deletions examples/run_qwen3-8b_drafter_dspark_vllm_npu.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
set -x
export ASCEND_RT_VISIBLE_DEVICES="${ASCEND_RT_VISIBLE_DEVICES:-0,1,2,3,4,5,6,7}"
case "${LD_PRELOAD:-}" in
*libjemalloc*) ;;
*)
if [ -f /usr/lib/aarch64-linux-gnu/libjemalloc.so.2 ]; then
export LD_PRELOAD="/usr/lib/aarch64-linux-gnu/libjemalloc.so.2${LD_PRELOAD:+:$LD_PRELOAD}"
elif [ -f /usr/lib64/libjemalloc.so.2 ]; then
export LD_PRELOAD="/usr/lib64/libjemalloc.so.2${LD_PRELOAD:+:$LD_PRELOAD}"
fi
;;
esac
export MALLOC_CONF="${MALLOC_CONF:-narenas:8,thp:never,metadata_thp:disabled,dirty_decay_ms:0,muzzy_decay_ms:0}"
export SPECO_JEMALLOC_RECLAIM_MODE="${SPECO_JEMALLOC_RECLAIM_MODE:-purge}"
export MALLOC_ARENA_MAX="${MALLOC_ARENA_MAX:-2}"
export MALLOC_TRIM_THRESHOLD_="${MALLOC_TRIM_THRESHOLD_:-131072}"

# NPU example for DSpark on vLLM-Ascend. SPECO keeps the user-facing
# algorithm as DSPARK and maps it to vLLM's dflash speculative method.
Expand All @@ -9,6 +23,8 @@ exp_name='qwen3_8b_dspark_drafter_vllm_npu'
gen_tp=2
train_sp=4
ppo_gpus_per_node=${SPECO_ACCELERATOR_COUNT:-8}
ray_num_cpus=${SPECO_RAY_NUM_CPUS:-64}
ray_worker_soft_limit=${SPECO_RAY_WORKER_SOFT_LIMIT:-8}

MODEL_PATH=/path/to/model
CKPTS_DIR=/path/to/checkpoint
Expand All @@ -19,6 +35,10 @@ DRAFTER_PATH=/path/to/vllm-compatible-dspark-drafter

PYTHONUNBUFFERED=1 python3 -m verl_speco.main \
algorithm.adv_estimator=grpo \
transfer_queue.enable=False \
ray_kwargs.ray_init.num_cpus=${ray_num_cpus} \
+ray_kwargs.ray_init._system_config.prestart_worker_first_driver=false \
+ray_kwargs.ray_init._system_config.num_workers_soft_limit=${ray_worker_soft_limit} \
data.train_files=${TRAIN_FILE} \
data.val_files=${TEST_FILE} \
data.train_batch_size=64 \
Expand All @@ -39,8 +59,8 @@ PYTHONUNBUFFERED=1 python3 -m verl_speco.main \
actor_rollout_ref.actor.entropy_coeff=0 \
actor_rollout_ref.actor.calculate_entropy=False \
actor_rollout_ref.model.enable_gradient_checkpointing=True \
actor_rollout_ref.actor.fsdp_config.param_offload=True \
actor_rollout_ref.actor.fsdp_config.optimizer_offload=True \
actor_rollout_ref.actor.fsdp_config.param_offload=False \
actor_rollout_ref.actor.fsdp_config.optimizer_offload=False \
actor_rollout_ref.rollout.log_prob_micro_batch_size_per_gpu=10 \
actor_rollout_ref.rollout.tensor_model_parallel_size=${gen_tp} \
actor_rollout_ref.actor.ulysses_sequence_parallel_size=${train_sp} \
Expand All @@ -60,7 +80,7 @@ PYTHONUNBUFFERED=1 python3 -m verl_speco.main \
actor_rollout_ref.rollout.gpu_memory_utilization=0.7 \
actor_rollout_ref.rollout.n=5 \
actor_rollout_ref.ref.log_prob_micro_batch_size_per_gpu=10 \
actor_rollout_ref.ref.fsdp_config.param_offload=True \
actor_rollout_ref.ref.fsdp_config.param_offload=False \
actor_rollout_ref.rollout.drafter.enable=True \
actor_rollout_ref.rollout.drafter.enable_drafter_training=True \
actor_rollout_ref.rollout.drafter.model_path=${DRAFTER_PATH} \
Expand Down Expand Up @@ -105,7 +125,6 @@ PYTHONUNBUFFERED=1 python3 -m verl_speco.main \
trainer.experiment_name=${exp_name} \
trainer.n_gpus_per_node=${ppo_gpus_per_node} \
trainer.nnodes=1 \
trainer.resume_mode=disable \
trainer.default_local_dir=${CKPTS_DIR} \
trainer.total_training_steps=200 \
trainer.save_freq=20 \
Expand Down
5 changes: 5 additions & 0 deletions examples/run_qwen3-8b_drafter_eagle3_sglang.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ exp_name='qwen3_8b_function_rm_drafter'

gen_tp=2
train_sp=4
ray_num_cpus=${SPECO_RAY_NUM_CPUS:-64}
ray_worker_soft_limit=${SPECO_RAY_WORKER_SOFT_LIMIT:-8}

MODEL_PATH=/path/to/model
CKPTS_DIR=/path/to/checkpoint
Expand All @@ -14,6 +16,9 @@ DRAFTER_PATH=/path/to/drafter

PYTHONUNBUFFERED=1 python3 -m verl_speco.main \
algorithm.adv_estimator=grpo \
ray_kwargs.ray_init.num_cpus=${ray_num_cpus} \
+ray_kwargs.ray_init._system_config.prestart_worker_first_driver=false \
+ray_kwargs.ray_init._system_config.num_workers_soft_limit=${ray_worker_soft_limit} \
data.train_files=${TRAIN_FILE} \
data.val_files=${TEST_FILE} \
data.train_batch_size=64 \
Expand Down
Loading
Loading