[feat] add fsdp2 to fsdp_sft_trainer (#1713) #742
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: checkpoint_converter | |
# latest version: Megatron-LM core_r0.11.0 https://github.com/NVIDIA/Megatron-LM/tree/core_r0.11.0 | |
on: | |
# Trigger the workflow on push or pull request, | |
# but only for the main branch | |
push: | |
branches: | |
- main | |
- v0.* | |
pull_request: | |
branches: | |
- main | |
- v0.* | |
paths: | |
- "**/*.py" | |
# Other entrypoints | |
- "!examples/**" | |
- "!tests/**" | |
- "!verl/trainer/main_*.py" | |
- "!verl/trainer/fsdp_sft_trainer.py" | |
# Recipes | |
- "!recipe/**" | |
# FSDP | |
- "!verl/workers/**/*dp_*.py" | |
# Entrypoints | |
- ".github/workflows/checkpoint_converter.yml" | |
- ".github/workflows/e2e_ppo_trainer_megatron.yml" | |
- "examples/data_preprocess/gsm8k.py" | |
- "tests/e2e/run_ppo_trainer_megatron.sh" | |
- "verl/trainer/main_ppo.py" | |
- "verl/trainer/config/ppo_megatron_trainer.yaml" | |
# Cancel jobs on the same ref if a new one is triggered | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} | |
# Declare permissions just read content. | |
permissions: | |
contents: read | |
jobs: | |
checkpoint_converter: | |
runs-on: [L20x8] | |
timeout-minutes: 20 # Increase this timeout value as needed | |
env: | |
HTTP_PROXY: ${{ secrets.PROXY_HTTP }} | |
HTTPS_PROXY: ${{ secrets.PROXY_HTTPS }} | |
NO_PROXY: "localhost,127.0.0.1" | |
HF_HUB_ENABLE_HF_TRANSFER: "0" # This is more stable | |
container: | |
image: whatcanyousee/verl:ngc-cu124-vllm0.8.5-sglang0.4.6-mcore0.12.0-te2.3 | |
options: --gpus all --shm-size=10g | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 0 | |
- name: Install the current repository | |
run: | | |
pip3 install -e .[test] | |
- name: Running Huggingface to Megatron dist_ckpt converter (Qwen/Qwen2.5-0.5B) | |
run: | | |
ray stop --force | |
python scripts/converter_hf_to_mcore.py --hf_model_path=${HOME}/models/Qwen/Qwen2.5-0.5B --output_path checkpoints/Qwen/Qwen2.5-0.5B | |
- name: Running Huggingface to Megatron dist_ckpt converter (deepseek-ai/deepseek-coder-1.3b-instruct) | |
run: | | |
ray stop --force | |
python scripts/converter_hf_to_mcore.py --hf_model_path=${HOME}/models/deepseek-ai/deepseek-coder-1.3b-instruct --output_path checkpoints/deepseek-ai/deepseek-coder-1.3b-instruct | |
- name: Clean up | |
run: | | |
rm -rf checkpoints | |
checkpoint_converter_large_moe_models: | |
runs-on: [L20x8] | |
timeout-minutes: 30 # Increase this timeout value as needed | |
env: | |
HTTP_PROXY: ${{ secrets.PROXY_HTTP }} | |
HTTPS_PROXY: ${{ secrets.PROXY_HTTPS }} | |
NO_PROXY: "localhost,127.0.0.1" | |
HF_HUB_ENABLE_HF_TRANSFER: "0" # This is more stable | |
HF_ENDPOINT: "https://hf-mirror.com" | |
container: | |
image: whatcanyousee/verl:ngc-cu124-vllm0.8.5-sglang0.4.6-mcore0.12.0-te2.3 | |
options: --gpus all --shm-size=10g | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 0 | |
- name: Install the current repository | |
run: | | |
pip3 install -e .[test] | |
- name: Download Model to Use | |
run: | | |
huggingface-cli download Qwen/Qwen1.5-MoE-A2.7B-Chat --local-dir ${HOME}/models/Qwen/Qwen1.5-MoE-A2.7B-Chat | |
export HF_HUB_OFFLINE=1 | |
- name: Running Huggingface to Megatron dist_ckpt CPU converter (Qwen/Qwen1.5-MoE-A2.7B-Chat) | |
run: | | |
ray stop --force | |
python scripts/converter_hf_to_mcore.py --hf_model_path=${HOME}/models/Qwen/Qwen1.5-MoE-A2.7B-Chat --output_path checkpoints/Qwen/Qwen1.5-MoE-A2.7B-Chat --use_cpu_initialization | |
- name: clean up | |
run: | | |
rm -rf checkpoints |