日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

PAI-ChatLearn:Alignment on DLC最佳實踐

本文為您介紹如何使用PAI-ChatLearn對Llama2-7B模型進行Alignment的訓練流程。

背景信息

PAI-ChatLearn是一個靈活、易用、高效的大規模Alignment訓練框架。支持RLHF(Reinforcement Learning from Human Feedback)、DPO(Direct Preference Optimization)、OnlineDPO、GRPO(Group Relative Policy Optimization)等多種Alignment訓練模式,同時也支持您自定義模型的執行流程。您也可以組合使用不同的后端來進行模型建模,例如使用Megatron-LM來進行加速訓練,使用vLLM來加速推理。

前提條件

在開始執行操作前,請確認您已經完成以下準備工作:

  • 已創建工作空間,具體操作,請參見創建工作空間

  • 已準備靈駿智算資源的資源配額,本方案使用靈駿智算資源gu7xf機型(例如:資源規格選擇ml.gu7xf.c96m1600.8-gu108),關于如何購買靈駿智算資源和創建資源配額,請參見新建資源組并購買靈駿智算資源靈駿智算資源配額

  • 已創建通用型NAS文件系統。具體操作,請參見創建文件系統

  • 已創建阿里云文件存儲通用型NAS類型的數據集,用于存儲訓練所需的文件和結果文件。默認掛載路徑配置為/mnt/data/。具體操作,請參見創建及管理數據集

使用限制

  • 僅支持在華北6(烏蘭察布)地域使用該最佳實踐。

  • 靈駿智算資源、NAS文件系統和分布式訓練(DLC)任務需要在同一個地域內。

  • 創建靈駿智算資源的資源配額時使用的專有網絡需要與通用型NAS文件系統一致。

準備工作

準備代碼

  1. 在終端中,執行如下命令下載代碼。

    • 下載ChatLearn框架代碼:

      git clone https://github.com/alibaba/ChatLearn.git
    • 下載Megatron-LM代碼。

      說明

      如果您需要運行基于Megatron-LM框架的Alignment訓練程序,則需要下載該代碼。

      git clone https://github.com/NVIDIA/Megatron-LM.git
      # 請替換為您的實際路徑。
      cd /**/Megatron-LM
      git checkout 5161b1689
  2. 本方案采用以下方法將代碼文件上傳至NAS文件系統,以便后續進行模型訓練。您也可選擇您自己的方式上傳代碼文件至NAS文件系統。

    1. 在函數計算控制臺,搭建NAS瀏覽器應用。具體操作,請參見使用函數計算快速搭建可視化NAS瀏覽器應用

    2. 將已下載的代碼文件按照目錄層級上傳到通用型NAS文件系統的根目錄(/)。具體操作,請參見使用函數計算快速搭建可視化NAS瀏覽器應用

準備訓練數據

請參考數據準備文檔,準備好以下ChatLearn訓練需要的數據,并將訓練數據上傳到NAS文件系統中,具體操作,請參見使用函數計算快速搭建可視化NAS瀏覽器應用

  • 準備SFT訓練數據,并上傳到NAS的/sft目錄中。

  • 準備Reward訓練數據,并上傳到NAS的/rm目錄中。

  • 準備Aignment的RLHF模式的訓練數據,并上傳到NAS的/alignment目錄中。

ChatLearn訓練

步驟一:SFT微調訓練

SFT是指使用有標注的對話數據來微調預訓練語言模型的過程。在本方案中,您需要下載預訓練的模型,然后開始一個簡單的SFT訓練示例。具體操作步驟如下:

1.下載和轉化預訓練模型

  1. 下載預訓練Checkpoint。

    您可以使用來自HuggingFace transformers的模型,例如HuggingFace Hub中的Llama2模型meta-llama/Llama-2-7b-hf。您也可以使用本地保存好的SFT模型。本方案使用llama-2-7b-hf

  2. 將已下載的Llama2模型按照目錄層級上傳到通用型NAS文件系統的根目錄/。具體操作,請參見使用函數計算快速搭建可視化NAS瀏覽器應用

  3. 將HuggingFace transformers模型轉化為Megatron-LM模型格式。

    1. 進入新建任務頁面。

      1. 登錄PAI控制臺

      2. 在左側導航欄單擊工作空間列表,在工作空間列表頁面中單擊待操作的工作空間名稱,進入對應工作空間內。

      3. 在工作空間頁面的左側導航欄選擇模型開發與訓練 > 分布式訓練(DLC),在分布式訓練(DLC)頁面中單擊新建任務,進入新建任務頁面。

    2. 在新建任務頁面,配置以下關鍵參數,其他參數配置詳情,請參見創建訓練任務

      參數

      描述

      環境信息

      鏡像地址

      選中鏡像地址,并在文本框中輸入registry.cn-wulanchabu.aliyuncs.com/pai-dlc/pytorch-training:2.4.0-gpu-py3.10-cu12.5-ngc24.06-ubuntu22.04

      掛載配置

      掛載類型選擇自定義數據集,并配置以下參數:

      • 數據集:選擇已創建的通用型NAS數據集。

      • 掛載路徑:取默認配置/mnt/data/

      啟動命令

      配置以下命令:

      export MEGATRON=path-to-megatron-lm
      export CHATLEARN=path-to-chatlearn
      
      cd ${CHATLEARN}/examples/megatron/
      
      TP=$num_of_tp \
      PP=$num_of_pp \
      LOAD_PATH=path-to-hf-model \
      TOKENIZER_MODEL=$LOAD_PATH/tokenizer.model \
      SAVE_PATH=path-to-megatron-model \
      bash scripts/convert_hf_to_megatron.sh

      其中:

      • MEGATRON:是Megatron-LM代碼倉庫clone存放的位置。本方案配置為/mnt/data/Megatron-LM

      • CHATLEARN:是ChatLearn代碼倉庫clone存放的位置。本方案配置為/mnt/data/ChatLearn

      • LOAD_PATH:是Llama2模型的存放路徑。本方案配置為/mnt/data/llama-2-7b-hf

      • SAVE_PATH:轉換后的Megatron-LM格式模型的存儲路徑。本方案配置為/mnt/data/llama-2-7b-hf-to-megatron

      • TP(tensor_model_parallel_size)和PPpipeline_model_parallel_size)參數配置說明如下:

        • 對于Llama2-7B的模型,系統會將模型轉換成 TP=4,PP=1的Checkpoint。您需要配置參數為TP=4,PP=1。

        • 對于Llama2-13B的模型,系統會將模型轉化成 TP=8,PP=1的Checkpoint。您需要配置參數為TP=8,PP=1。

        • 對于Llama2-70B的模型,系統會將模型轉化成 TP=8,PP=4的Checkpoint。您需要配置參數為TP=8,PP=4。

      資源信息

      資源類型

      選擇靈駿智算

      資源來源

      選擇資源配額

      資源配額

      選擇已創建的資源配額。

      框架

      選擇PyTorch

      任務資源

      在Worker節點配置以下參數:

      • 節點數量:配置為1。

      • CPU(核數):80。

      • 內存(GB):800。

      • 共享內存(GB):800。

      • GPU(卡數):1。

    3. 單擊提交

      頁面自動跳轉到分布式訓練(DLC)頁面,當任務執行成功后,模型轉換成功。

2.開啟SFT訓練

  1. 進入新建任務頁面,具體操作,請參見1.下載和轉化預訓練模型

  2. 新建任務頁面,配置以下關鍵參數,其他參數配置詳情,請參見創建訓練任務

    參數

    描述

    環境信息

    鏡像地址

    選中鏡像地址,并在文本框中輸入registry.cn-wulanchabu.aliyuncs.com/pai-dlc/pytorch-training:2.4.0-gpu-py3.10-cu12.5-ngc24.06-ubuntu22.04

    掛載配置

    掛載類型選擇自定義數據集,并配置以下參數:

    • 數據集:選擇已創建的通用型NAS數據集。

    • 掛載路徑:取默認配置/mnt/data/

    啟動命令

    配置以下命令:

    export CHATLEARN=path-to-chatlearn
    export MEGATRON=path-to-megatron-lm
    cd ${CHATLEARN}/examples/megatron/
    
    export model_size=llama2-7B
    
    LOAD_PATH=$MEGATRON_LLAMA2_CKPT_PATH \
    TOKENIZER_MODEL=$LLAMA2_TOKENIZER_MODEL \
    DATASET_PATH=$DATASET_ROOT/sft/ \
    bash scripts/train_sft_llama.sh

    其中關鍵配置說明如下:

    • MEGATRON:是Megatron-LM代碼倉庫clone存放的位置。本方案配置為/mnt/data/Megatron-LM

    • CHATLEARN:是ChatLearn代碼倉庫clone存放的位置。本方案配置為/mnt/data/ChatLearn

    • LOAD_PATH:是轉換后的Megatron-LM格式模型的存儲路徑。本方案配置為/mnt/data/llama-2-7b-hf-to-megatron

    • TOKENIZER_MODEL:是Llama2Tokenizer所需文件tokenizer.model所在的文件夾路徑。本方案配置為/mnt/data/llama-2-7b-hf/tokenizer.model

    • DATASET_PATH:是SFT訓練數據集路徑。本方案配置為/mnt/data/sft/

    訓練過程生成的日志和訓練完成的模型默認存放在${CHATLEARN}/output/sft中。您可以通過CHECKPOINT_PATH來指定模型保存路徑,具體的定義詳情,請參見${CHATLEARN}/examples/megatron/scripts/train_sft_llama.sh腳本。

    資源信息

    資源類型

    選擇靈駿智算。

    資源來源

    選擇資源配額。

    資源配額

    選擇已創建的資源配額。

    框架

    選擇PyTorch。

    任務資源

    在Worker節點配置以下參數:

    • 節點數量:配置為1。

    • CPU(核數):80。

    • 內存(GB):800。

    • 共享內存(GB):800。

    • GPU(卡數):8。

    訓練腳本中,資源需求如下,您可以根據實際情況修改配置參數:

    • llama2-7B RLHF:8卡GPU

    • llama2-13B RLHF: 2*8卡GPU

    • llama2-70B RLHF: 4*8卡GPU

步驟二:Reward模型訓練

Reward模型是指在RLHF中作為人類評價的代理,對模型產生的問題回復進行實時評價打分的模型。Reward模型輸入問題以及模型回復,可以產生一個標量表示模型回復的質量。

說明

DPO訓練模式不需要訓練Reward模型。

  1. 進入新建任務頁面,具體操作,請參見1.下載和轉化預訓練模型

  2. 新建任務頁面,配置以下關鍵參數,其他參數配置詳情,請參見創建訓練任務

    參數

    描述

    環境信息

    鏡像地址

    選中鏡像地址,并在文本框中輸入registry.cn-wulanchabu.aliyuncs.com/pai-dlc/pytorch-training:2.4.0-gpu-py3.10-cu12.5-ngc24.06-ubuntu22.04

    掛載配置

    掛載類型選擇自定義數據集,并配置以下參數:

    • 數據集:選擇已創建的通用型NAS數據集。

    • 掛載路徑:取默認配置/mnt/data/

    啟動命令

    配置以下命令:

    export CHATLEARN=path-to-chatlearn
    export MEGATRON=path-to-megatron-lm
    cd ${CHATLEARN}/examples/megatron/
    
    LOAD_PATH=path-to-sft-ckpt \
    TOKENIZER_MODEL=$LLAMA2_TOKENIZER_MODEL \
    DATASET_PATH=$DATASET_ROOT/rm \
    bash scripts/train_reward_llama.sh

    其中關鍵配置說明如下:

    • MEGATRON:是Megatron-LM代碼倉庫clone存放的位置。本方案配置為/mnt/data/Megatron-LM

    • CHATLEARN:是ChatLearn代碼倉庫clone存放的位置。本方案配置為/mnt/data/ChatLearn

    • LOAD_PATH:是SFT產出的Checkpoint路徑。本方案配置為${CHATLEARN}/output/sft/,您的路徑以實際為準。

    • TOKENIZER_MODEL:是Llama2Tokenizer所需文件tokenizer.model所在的文件夾路徑。本方案配置為/mnt/data/llama-2-7b-hf/tokenizer.model

    • DATASET_PATH:是Reward訓練數據集路徑。本方案配置為/mnt/data/rm

    訓練過程生成的日志和訓練完成的模型默認存放在${CHATLEARN}/output/reward中。您可以通過CHECKPOINT_PATH來指定模型保存路徑,具體的定義詳見${CHATLEARN}/examples/megatron/scripts/train_reward_llama.sh腳本。

    資源信息

    資源類型

    選擇靈駿智算

    資源來源

    選擇資源配額

    資源配額

    選擇已創建的資源配額。

    框架

    選擇PyTorch

    任務資源

    在Worker節點配置以下參數:

    • 節點數量:配置為1。

    • CPU(核數):80。

    • 內存(GB):800。

    • 共享內存(GB):800。

    • GPU(卡數):8。

    訓練腳本中,資源需求如下,您可以根據實際情況修改配置參數:

    • llama2-7B RLHF:8卡GPU

    • llama2-13B RLHF: 2*8卡GPU

    • llama2-70B RLHF: 4*8卡GPU

步驟三:Alignment訓練

RLHF訓練模式

ChatLearn支持多種Alignment訓練模式:RLHF、DPO、OnlineDPO、GRPO等。本方案以RLHF Llama2-7B模型為例,為您介紹如何進行Alignment訓練。具體操作步驟如下:

  1. 進入新建任務頁面,具體操作,請參見1.下載和轉化預訓練模型

  2. 新建任務頁面,配置以下關鍵參數,其他參數配置詳情,請參見創建訓練任務

    參數

    描述

    環境信息

    節點鏡像

    選擇鏡像地址,并配置:registry.cn-wulanchabu.aliyuncs.com/pai-dlc/pytorch-training:2.4.0-gpu-py3.10-cu12.5-ngc24.06-ubuntu22.04

    掛載配置

    掛載類型選擇自定義數據集,并配置以下參數:

    • 數據集:選擇已創建的通用型NAS數據集。

    • 掛載路徑:取默認配置/mnt/data/

    啟動命令

    配置以下命令:

    export CHATLEARN=path-to-chatlearn
    export MEGATRON=path-to-megatron-lm
    export DATASET_PATH=$DATASET_ROOT/alignment/train.jsonl
    
    cd ${CHATLEARN}/examples/megatron/
    
    export model_size=llama2-7B
    
    POLICY_LOAD=path-to-sft-ckpt \
    REWARD_LOAD=path-to-rm-ckpt \
    REWARD_LOAD_ITERATION=1000 \
    TOKENIZER_MODEL=$LLAMA2_TOKENIZER_MODEL \
    tokenizer_load=${HF_MODEL_DIR}
    bash scripts/train_rlhf_llama.sh

    其中:

    • MEGATRON:是Megatron-LM代碼倉庫clone存放的位置。本方案配置為/mnt/data/Megatron-LM

    • CHATLEARN:是ChatLearn代碼倉庫clone存放的位置。本方案配置為/mnt/data/ChatLearn

    • DATASET_PATH:是Alignment訓練數據集路徑。本方案配置為/mnt/data/alignment/train.jsonl

    • POLICY_LOAD:是SFT微調訓練產出的Checkpoint路徑。Policy模型和Reference模型將以SFT的Checkpoint進行初始化。本方案配置為${CHATLEARN}/output/sft/hh_sft***/,您的路徑以實際為準。

    • REWARD_LOAD:是Reward訓練產出Checkpoint路徑。本方案配置為${CHATLEARN}/output/reward/reward_hh***,您的路徑以實際為準。

    • REWARD_LOAD_ITERATION:用于指定加載Checkpoint對應的iteration數。Reward模型和Value模型將以Reward模型的權重進行初始化。

    • TOKENIZER_MODEL:是Llama2Tokenizer所需文件tokenizer.model所在的文件夾路徑。本方案配置為/mnt/data/llama-2-7b-hf/tokenizer.model

    • tokenizer_load:您下載的HuggingFace模型的路徑。本方案配置為/mnt/data/llama-2-7b-hf

    • model_size:本方案以Llama2-7B模型為例,如果您需要訓練llama2-13B或llama2-70B的模型,您只需要將上述訓練腳本中的export model_size=llama2-7B替換成export model_size=llama2-13Bexport model_size=llama2-70B

    系統會將訓練完成的模型保存至${CHATLEARN}/output/**-rlhf路徑。

    資源信息

    資源類型

    選擇靈駿智算

    資源來源

    選擇資源配額

    資源配額

    選擇已創建的資源配額。

    框架

    選擇PyTorch

    任務資源

    在Worker節點配置以下參數:

    • 節點數量:配置為1。

    • CPU(核數):80。

    • 內存(GB):800。

    • 共享內存(GB):800。

    • GPU(卡數):8。

    訓練腳本中,資源需求(假設資源為A100-80GB或A800-80GB GPU)如下,您可以根據實際情況修改配置參數:

    • llama2-7B RLHF:8卡GPU

    • llama2-13B RLHF: 2*8卡GPU

    • llama2-70B RLHF: 4*8卡GPU

  3. 參數配置完成后,單擊提交

    頁面自動跳轉到分布式訓練(DLC)頁面。在該頁面,您可以單擊任務名稱進入任務詳情頁面,來觀察任務執行狀態。

其他訓練模式

其他Alignment訓練模式操作方法與RLHF相同,您只需在創建訓練任務時,將啟動命令更新為對應訓練模式的命令即可。其他訓練模式對應的啟動命令如下:

  • OnlineDPO/GRPO

    OnlineDPO/GRPO訓練流程和RLHF比較類似,只是不需要Value模型,以下是一個Llama2-7B的Policy模型和7B的Reward模型的訓練腳本。

    export CHATLEARN=path-to-chatlearn
    export MEGATRON=path-to-megatron-lm
    export DATASET_PATH=$DATASET_ROOT/alignment/train.jsonl
    
    cd ${CHATLEARN}/examples/megatron/
    
    export model_size=llama2-7B
    
    POLICY_LOAD=path-to-sft-ckpt \
    REWARD_LOAD=path-to-rm-ckpt \
    REWARD_LOAD_ITERATION=1000 \
    TOKENIZER_MODEL=$LLAMA2_TOKENIZER_MODEL \
    tokenizer_load=${HF_MODEL_DIR}
    bash scripts/train_online_dpo_llama.sh

    其中DATASET_PATH需要配置為該訓練模式支持的訓練數據集所在路徑。如何準備數據集,請參見數據準備。其他參數配置說明,請參見上述RLHF訓練模式的參數配置說明。

  • DPO

    以下是一個Llama2-7B的Policy模型的訓練腳本。

    export CHATLEARN=path-to-chatlearn
    export MEGATRON=path-to-megatron-lm
    export DATASET_PATH=$DATASET_ROOT/alignment/train.jsonl
    
    cd ${CHATLEARN}/examples/megatron/
    
    export model_size=llama2-7B
    
    POLICY_LOAD=path-to-sft-ckpt \
    TOKENIZER_MODEL=$LLAMA2_TOKENIZER_MODEL \
    bash scripts/train_dpo_llama.sh

    其中DATASET_PATH需要配置為該訓練模式支持的訓練數據集所在路徑。如何準備數據集,請參見數據準備。其他參數配置說明,請參見上述RLHF訓練模式的參數配置說明。

  • GRPO Math

    export CHATLEARN=path-to-chatlearn
    export MEGATRON=path-to-megatron-lm
    export DATASET_PATH=$DATASET_ROOT/math/train.jsonl
    
    cd ${CHATLEARN}/examples/megatron/
    
    export model_size=llama2-7B
    
    POLICY_LOAD=path-to-sft-ckpt \
    REWARD_LOAD=path-to-rm-ckpt \
    REWARD_LOAD_ITERATION=1000 \
    TOKENIZER_MODEL=$LLAMA2_TOKENIZER_MODEL \
    tokenizer_load=${HF_MODEL_DIR}
    bash scripts/train_grpo_math_llama.sh

    其中DATASET_PATH需要配置為該訓練模式支持的訓練數據集所在路徑。如何準備數據集,請參見數據準備。其他參數配置說明,請參見上述RLHF訓練模式的參數配置說明。